A minimal Rust-inspired C++20 standard library replacement focused on fast compilation, debuggability, and explicit code.
rpp is a minimal Rust-inspired replacement for the C++ Standard Template Library (STL) built for C++20. It provides modern data structures, allocators, concurrency utilities, and metaprogramming tools while focusing on fast compilation, debuggability, and explicit code. The project aims to offer a cleaner, more performant alternative to traditional STL implementations.
C++ developers working on performance-critical applications, systems programming, or projects requiring modern C++20 features who are dissatisfied with traditional STL overhead or complexity.
Developers choose rpp for its Rust-inspired safety and explicitness, significantly faster compilation times compared to standard STL, and built-in debugging support. Its modular design and focus on modern C++20 features make it a compelling alternative for new projects seeking a lean, high-performance foundation.
Minimal Rust-inspired C++20 STL replacement
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
rpp is optimized to reduce build times compared to traditional STL, as emphasized in its goals and key features, making it ideal for large codebases with frequent compilations.
It provides types like Opt, Rc, and Arc that enforce explicit memory management and error handling, reducing hidden behavior and common C++ pitfalls as outlined in the philosophy.
Offers multiple allocator types such as Mpool and region-based allocators, demonstrated in examples for efficient and customizable memory management.
Includes thread pools, async/await support, and synchronization primitives, enabling modern concurrent programming without external dependencies, as shown in the async and thread examples.
Only officially supports MSVC 19.39+ on Windows and Clang 17+ on Linux/macOS, excluding GCC and older compilers, which restricts portability and adoption in diverse environments.
The README lists several to-dos for async, such as scheduler priorities and io_uring support, indicating that the concurrency model is still under development and may lack maturity.
As a replacement library, it might introduce breaking changes or have bugs compared to the battle-tested standard STL, affecting long-term maintenance and reliability.