Just a heads up that Boost.Math now has a (beta) standalone release at https://github.com/boostorg/math/releases/tag/v1.76-standalone-beta We would very much appreciate any interested parties giving it a whirl and reporting back. With many thanks to Matt Borland and Nick Thompson for making this possible! Best, John Maddock. -- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus
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. On Mon, May 3, 2021 at 10:49 AM John Maddock via Boost < boost@lists.boost.org> wrote:
Just a heads up that Boost.Math now has a (beta) standalone release at https://github.com/boostorg/math/releases/tag/v1.76-standalone-beta
We would very much appreciate any interested parties giving it a whirl and reporting back.
With many thanks to Matt Borland and Nick Thompson for making this possible!
Best, John Maddock.
-- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
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
On 04/05/2021 16:19, 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.
Effectively we have 2 separate modes: * With Boost, which pulls in Config and few other core libraries. * Without any Boost (detected via __has_include see https://github.com/boostorg/math/pull/612/files) which assumes a fully compliant C++11 compiler. It's hard to point to a single set of diffs - there was first of all a fair bit of work from Matt Borland to remove all traces of C++03 support. After that it turns out that there wasn't actually all that much left in terms of dependencies. Some other key PR's: * Addition of standalone tests: https://github.com/boostorg/math/pull/606 (note these actually conflicted with root CMake - there are some later fixes for that somewhere). * Main standalone completion: https://github.com/boostorg/math/pull/597 * Remove core dependencies: https://github.com/boostorg/math/pull/589 * Remove Integer dependencies: https://github.com/boostorg/math/pull/588 * Conditionally remove Config: https://github.com/boostorg/math/pull/583 * Predef removal: https://github.com/boostorg/math/pull/582 * Remove throw_exception dependency: https://github.com/boostorg/math/pull/577 * Remove type_traits dependency: https://github.com/boostorg/math/pull/576 * Boost.Assert: https://github.com/boostorg/math/pull/570 * Boost.Range: https://github.com/boostorg/math/pull/569 * Lambda: https://github.com/boostorg/math/pull/568 * smart_ptr: https://github.com/boostorg/math/pull/567 * Boost.Array: https://github.com/boostorg/math/pull/565 * Atomic: https://github.com/boostorg/math/pull/563 * Algorithm: https://github.com/boostorg/math/pull/563 There are others if you care to look, in particular mpl removal took a look of PR's on it's own! Best, John. -- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus
On Tue, May 4, 2021 at 10:02 AM John Maddock via Boost < boost@lists.boost.org> wrote:
On 04/05/2021 16:19, 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.
Effectively we have 2 separate modes:
* With Boost, which pulls in Config and few other core libraries.
* Without any Boost (detected via __has_include see https://github.com/boostorg/math/pull/612/files) which assumes a fully compliant C++11 compiler.
It's hard to point to a single set of diffs - there was first of all a fair bit of work from Matt Borland to remove all traces of C++03 support. After that it turns out that there wasn't actually all that much left in terms of dependencies.
Thanks John and Matt -- lots to look at there, but very interesting. It's a fair number of dependencies to remove. From my quick look at the commits Matt deserves some sort of serious award for the effort here. Really cool. Jeff
participants (3)
-
Jeff Garland
-
John Maddock
-
Matt Borland