On Tue, 2021-05-04 at 08:19 -0700, Jeff Garland via Boost wrote:
I'm curious how this was done. Is there still a connection to the boost.core that's pulled into the standalone or does it completely remove all ties? If there's a set of issues or pull requests would be curious to dig into the details -- because I'd like to do something similar of course.
This completely removes all ties from other boost libraries. The only requirement is a compiler that is fully compliant with C++11 (works with GCC 5, Clang 5, and MSVC 14.0). There seem to be four categories of dependencies in math. The first are those that can be replaced by C++11 (e.g. boost.array, boost.type_traits, etc.). The second are those that can be replaced by STL functionality that would have slightly different behavior (assert vs boost.assert). In this case the boost types are used as long as standalone mode is not enabled. The third are those that can be easily re-implemented (e.g. boost.endian). A tiny fraction was used in math so the required parts were generally pulled out. The last are those that cannot easily be replaced (e.g. boost.lexical_cast) or require higher language standards (e.g. boost.integer can be replaced using C++17). Functions that require these dependencies are not common, but they throw a hard error that says disable standalone mode/change language standard for use. If you look at the closed PRs on boost.math you will see a number of PRs that are "Remove boost.x dependency". Feel free to reach out if you have any questions or want help. Matt