Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Eliminate or reduce dependency on Boost #1005

Closed
SunnyWar opened this issue Oct 13, 2019 · 3 comments
Closed

Eliminate or reduce dependency on Boost #1005

SunnyWar opened this issue Oct 13, 2019 · 3 comments
Labels

Comments

@SunnyWar
Copy link

SunnyWar commented Oct 13, 2019

I recently completed an analysis for use in our company between Microsoft Bond and Google's Protocol Buffers. For most of the use cases, they ranked nearly equal. However, when the size and number of the dependencies were considered, Bond fell very far behind largely due to the dependency on Boost. (a rather massive set of libraries)

Example:
install protocol buffers, e.g. "vcpkg proto"
Total elapsed time: 5.419 min
vcpkg list shows:
protobuf:x86-windows 3.10.0 Protocol Buffers - Google's data interchange format

compare this to Bond
install bond, eg. "vcpkg bond"
Total elapsed time: 14.93 min
vcpkg list show:
78 packages, all but a few are Boost.

Also, the dependency graph shows that Bond has only two areas in Boost that it calls: boost-assign and boost-utilities. E.g. "vcpkg.exe depend-info bond --dgml > bond.dgml" and view in VS. Surely there is something in STL that can be crafted to serve an equivalent purpose?

@chwarr
Copy link
Member

chwarr commented Oct 14, 2019

This has come up a few times in the past. See #62 and #643 for those discussions.

Bond--as of 2019--is still a C++11 library that targets older C++ compilers for broad compatibility. The C++11 standard library doesn't provide everything that Bond needs, and Boost helps fill those gaps. At this time, there is no concerted effort to remove Bond's use of Boost. Dropping Boost as a dependency isn't something that we're opposed to, though.

Changes that reduce the use of Boost, don't re-invent large parts of what Boost provides, and are compatible with the current minimum supported compilers (MSVC 2013, Clang 3.8, and GNU G++ 5.4) are always welcome and have been merged in the past. The less Boost that is used, the easier it will be to remove in the future.

Hope this helps.

@chwarr
Copy link
Member

chwarr commented Nov 7, 2019

I'm going to close this issue for now since I haven't seen any activity in a couple of weeks. If there's something more here, please post another comment. Thanks.

@chwarr chwarr closed this as completed Nov 7, 2019
@chwarr chwarr changed the title Eliminate or reduce depency on Boost Eliminate or reduce dependency on Boost Apr 10, 2020
@bhardwajs
Copy link
Contributor

@chwarr - Let me look at boost::mpl and see if we can remove that dependency. We can definitely have BOND_CXX_17 mode remove the need for boost::variant and boost::optional.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants