Posts
Stay up to date with Boost and the C++ ecosystem with the latest news, videos, resources, and user-created content.
Latest Posts
-
No Tag- Backwards CompatibilityBackwards compatibility in Boost libraries is addressed through a set of guidelines that classify changes by their impact. Non‑breaking modifications may be introduced without restriction. Small breaking changes are permitted provided advance notice is given several releases before publication. Large breaking changes that include a migration path require the new API to be placed in a separate directory or namespace, with users notified and afforded several releases to transition before the old API is removed. When no migration path exists, the new API must also reside in a distinct directory or namespace, while the legacy API is retained indefinitely, and removal is treated as a library deprecation requiring an extended period. Redesigns or rewrites equivalent to large breaking changes are to be considered new libraries and should undergo a formal or mini review.
-
Testing Algorithm libThe Pure Virtual C++ 2026 conference was concluded with acknowledgments to hosts, speakers, and moderators. Recordings of all live and on‑demand talks were released for immediate viewing via a YouTube playlist. The featured sessions were presented in a specific order, covering topics such as C++ semantic awareness in the CLI, interoperability between C++ and Rust, AI‑driven development tools for Visual Studio, strategies for reducing build times, and the use of C++/WinRT with C++20 modules. Each session was linked to its corresponding video. The content was made freely accessible to the community. Viewers were encouraged to watch the full playlist for a comprehensive overview. The event highlighted recent advances and practical techniques for modern C++ development.
-
Bimap testTesting bimap
-
Rotation revisited: Cycle decomposition in clang’s libcxxThe implementation of array rotation in clang’s libcxx is discussed, emphasizing that the minimal number of element swaps, roughly half the total size, is achieved. A permutation view of the rotation is employed, and the algorithm is described as traversing each cycle of that permutation. The number of cycles is indicated to be the greatest common divisor of the two segment lengths, denoted a and b. Each k‑th cycle is started at the element offset k from the beginning and proceeds by advancing a positions with wrap‑around until the start is reached again. An example with segment lengths 4 and 6 is provided, illustrating the sequence of positions visited within a single cycle. It is highlighted that this cycle‑based method attains the optimal swap count. The approach is contrasted with simpler but less efficient techniques.
-
Safe C++The lack of memory safety in C++ is identified as creating exploitable vulnerabilities, and the Safe C++ proposal for memory‑safe operations has been placed on indefinite hiatus. Established safe practices are recommended for Boost contributors, unsafe dependencies are to be avoided, and ongoing safety discussions are to be followed. The proposal’s goals are praised in feedback while integration complexity, performance impact, and competition from Rust and Swift are cited as concerns. Recommended reading includes Herb Sutter’s safety‑in‑context blog post and papers on core safety profiles. Boost libraries such as SmartPtr, Pool, StaticAssert, TypeTraits, Filesystem, ScopeExit, Interprocess, Thread, Asio, Atomic, Optional, Variant2, and Coroutine2 are cited as demonstrations of memory, type, resource, and thread safety.
-
Design Best PracticesGuidelines are presented as recommendations drawn from prior experience with Boost library submissions. Emphasis is placed on clarity and correctness before optimization, while adherence to ISO Standard C++ and use of the Standard Library are encouraged. Source files are required to begin with descriptive comments, licensing information, and a reference to the library’s Boost webpage, and to follow conservative formatting such as fixed‑width fonts, spaces instead of tabs, and an 80‑character line limit. Naming conventions mirror those of the C++ Standard Library, using lowercase words separated by underscores, uppercase macro prefixes, and descriptive identifiers. Consistency is advocated through matching library names, directory structures, header locations, and namespaces, with singular nouns preferred and the library name capitalized within the Boost namespace.
-
Development Best PracticesGuidance is provided for accelerating library development while maintaining quality and openness. Beneficial Boost dependencies such as Config, Core, Assert, ThrowException and Mp11 are identified for evaluation to simplify compliance and extend functionality. A disciplined GitHub workflow is advocated, requiring all changes to be submitted via pull requests and avoiding direct edits on the website. Linear history is emphasized through the exclusive use of rebasing instead of merging, configuring pulls to rebase, and performing interactive rebase squashes before integration. Fast‑forward‑only merges are recommended and can be enforced via repository settings. Commit discipline is enforced by limiting commits to meaningful changes and refining them with amend or staged additions.
-
Post for WaigtalHeader files act as the interface between a library and user code and must be well‑behaved. Boost guidelines prescribe that header filenames use a lowercase .hpp extension. Include guards are required unless multiple inclusion is intended, using uppercase namespace‑prefixed identifiers separated by underscores. All declarations are placed inside a namespace, preferably boost, to avoid global namespace pollution. Headers must compile as standalone units and be placed in sub‑directories added to the include path, avoiding relative includes. Member ordering is advised as public, protected, then private, and boost/config.hpp is included when compiler or platform configuration is required. Examples illustrate nested guard naming for libraries such as Boost.Beast, showing progressive prefixes for subfolders and implementations.
-
JS Disabled blogBoost library submission rules are listed. Licenses must follow Boost policy; GPL/LGPL are excluded. Copyright ownership must be clearly stated. Libraries must be useful and portable. Organization guidelines and design best practices are encouraged.
-
Create an account
Advance your career, learn from experts, and help shape the future of Boost and C++.