/subspace

A concept-centered standard library for C++20, enabling safer and more reliable products and a more modern feel for C++ code.; Also home of Subdoc the code-documentation generator.

Primary LanguageC++Apache License 2.0Apache-2.0

CI docs

Subspace Library

An experimental take on a safer, simpler C++ standard library.

Please don't use this library. This is an experiment and we don't yet know where it will take us. There will be breaking changes without warning, and there is no stable version.

  1. See BUILD.md for instructions on building Subspace and Subdoc and running their tests.
  2. See USAGE.md for instructions on integrating the Subspace library into your project.
  3. See PRINCIPLES.md for the principles behind design choices in the Subspace library.
  4. See STYLE.md for evolving guidance and best practices for developers of the Subspace library.

Subdoc

Subdoc is a documentation generator from inline C++ documentation in the spirit of Rustdoc.

The comments in the Subspace library use markdown syntax with additional Subdoc attributes, and are designed to be consumed by Subdoc in order to generate an HTML website.

Subdoc is built on top of Subspace, giving the developers a chance to see the Subspace library in action and test the ergonomics and features of the library.

Status: Subdoc is still very much a work-in-progress, but it is being used to generate Subspace documentation on each commit.

Compiler Support

Subspace is a concept-first library and requires C++20. Compiler support for C++20 varies, and with active development ongoing, bugs in their implementations still appear and disappear regularly. When in doubt, check out which compiler versions are used by the CI bots.

Compiler Version
Clang: 16 and up
GCC: 13 and up
MSVC: VS2022 17.8.1 (Build 17.8.34316.72) and up

We attempt to work around bugs when reasonable, to widen compiler version support. See compiler_bugs.h for the set of bugs we are aware of and currently work around.