The Beman Project’s mission is to support the efficient design and adoption of the highest quality C++ standard libraries through implementation experience, user feedback, and technical expertise.
We have two principle audiences: Library Developers and the C++ community. We want to allow Library Developers to have a clear path on the road to Standardization. And we want to make it easy for the C++ community to use these libraries to ensure we have real world usage.
This project is organized by our Governance structure.
Discourse for new joiners: start here
Welcome to Beman Project Development Discourse.
Questions? Maybe they have already been answered in our FAQ.
The Beman project is named in memory of Beman Dawes - co-founder of Boost.
$ git clone https://github.com/beman-org/beman.git
$ cd beman
$ cmake -S . -B build
$ cmake --build build
$ ctest --test-dir build
Type: BOOL
Default: OFF
By default, the CMake workflow in this repo will clone and build all constituent libraries from git refs as specified in git_tag
fields in libraries.json
. If you would instead like to get the latest of each library, provide -DBEMAN_USE_MAIN_BRANCHES=ON
when configuring your CMake build. Be aware that BEMAN_USE_MAIN_BRANCHES=ON
can result in a less stable user experience as some versions of some libraries may not be published or even fully tested yet.
Libraries are enumerated in libraries.json
in this repository. To add a library to The Beman Project, create a pull request adding a new object to the libraries
field in that JSON file.
This is an example JSON object representing a Beman Project library:
{
"name": "example",
"git_repository": "https://github.com/beman-project/example.git",
"git_tag": "375f3e7",
"default_branch": "main"
}
Type: String
A unique, logical name for the library.
Type: String
A URL for cloning the repository containing the library. This URL does not need to be part of the beman-project
GitHub organization, or even on GitHub as long as the repo is publicly accessible for cloning.
Type: String
A git reference (tag, branch, commit, etc.) that contains a known-working version of the provided library. It is recommended to keep this field up-to-date as the library project and its associated paper evolves.
Type: String
The default branch of the library repository, such as main
. This will be used in workflows where users want the latest version of every library, regardless of whether the libraries work, either individually or integrated together.