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
overridekeyword for compilers that don't yet implement C++11. - Renamed the arbitrary-power variant of
foundation::sample_hemisphere_cosine()tofoundation::sample_hemisphere_cosine_power(). - Added
foundation::build_regular_polygon()andfoundation::sample_regular_polygon_uniform(). - Improved the
foundation::QMCSamplingContextclass. - Removed the
foundation::RQMCSamplingContextsince it was mostly placeholder code. - Changed the vector-matrix multiplication to actually right-multiply the vector instead of left-multiplying it.
- Removed
foundation::PagedArraysince it was incorrect, inefficient, incomplete and unused. - Added
foundation::FloatArray,foundation::DoubleArrayandfoundation::StringArray(until STL containers, those can safely cross DLL boundaries). - Added
foundation::is_aligned(). - The
foundation::SACacheclass that implements a set-associative cache now supports non power-of-two numbers of cache lines. - Slightly improved the
foundation::VPythonFileclass.
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::X86Timerandfoundation::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::Parsertofoundation::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::Loggerto fix linking. - Added
#defines that mapportable_[v]snprintf()to the platform's::[v]snprintf()functions.
appleseed.foundation version 1.0
- Initial release.


