appleseed.foundation

Introduction

appleseed.foundation is a modern, high performance, platform-independent C++ library built out of the foundation code in appleseed. It provides infrastructure code and utilities such as command line parsing, a full set of linear algebra classes, random number generation, Monte Carlo and Quasi-Monte Carlo sampling, k-nearest neighbors search, dictionaries, string utilities, etc.

appleseed.foundation is developed with a strong focus on quality: quality of the algorithms for performance; quality of the implementation for performance, reliability and extensibility. The code is covered by more than 800 unit tests and more than 100 unit benchmarks. It's also field-tested: we used it in several products, on several platforms, on 32-bit and 64-bit architectures.

Last but not least, appleseed.foundation is distributed as a single pair of header file and source file and has no external dependencies (apart from the C++ Standard Library), making it trivial to install and use in any C++ project.

appleseed.foundation is released as open source under the very permissive MIT license.

Latest Release

 appleseed.foundation version 1.6

  • Low-overhead interoperability with ILM's Imath library (which is part of the OpenEXR library).
  • Added foundation::ExceptionIOError.
  • Defined the override keyword for compilers that don't yet implement C++11.
  • Renamed the arbitrary-power variant of foundation::sample_hemisphere_cosine() to foundation::sample_hemisphere_cosine_power().
  • Added foundation::build_regular_polygon() and foundation::sample_regular_polygon_uniform().
  • Improved the foundation::QMCSamplingContext class.
  • Removed the foundation::RQMCSamplingContext since it was mostly placeholder code.
  • Changed the vector-matrix multiplication to actually right-multiply the vector instead of left-multiplying it.
  • Removed foundation::PagedArray since it was incorrect, inefficient, incomplete and unused.
  • Added foundation::FloatArray, foundation::DoubleArray and foundation::StringArray (until STL containers, those can safely cross DLL boundaries).
  • Added foundation::is_aligned().
  • The foundation::SACache class that implements a set-associative cache now supports non power-of-two numbers of cache lines.
  • Slightly improved the foundation::VPythonFile class.

Previous Releases

 appleseed.foundation version 1.5

  • Some platform-specific header files are now included conditionally.

 appleseed.foundation version 1.4

  • Added dependencies required by the k-nearest neighbors (knn) code.
  • Added a sample program that builds a random point cloud and performs random knn queries on it.

 appleseed.foundation version 1.3

  • The k-nearest neighbors code no longer requires nor depends on any timing functionalities.
  • Removed declarations of foundation::DefaultProcessorTimer, foundation::DefaultWallclockTimer, foundation::X86Timer and foundation::Stopwatch.
  • Removed declaration of foundation::create_console_log_target().
  • All functionalities from the foundation/utility/containers and foundation/utility/test components are now included.

 appleseed.foundation version 1.2

  • Renamed foundation::Parser to foundation::CommandLineParser.

 appleseed.foundation version 1.1

  • Added most of the foundation/utility/log component (everything except the console log target files).
  • Added a single-threaded implementation of foundation::Logger to fix linking.
  • Added #defines that map portable_[v]snprintf() to the platform's ::[v]snprintf() functions.

 appleseed.foundation version 1.0

  • Initial release.