Just released: the library announced in Anthony Williams Meeting C++ 2025 opening keynote
published at 19.05.2026 13:39 by Jens Weller
Save to Instapaper Pocket
Last week arene-base, the fundamental, safety critical C++ library of Woven by Toyota got released as open source on github with its documentation.
During his opening keynote on Software and Safety at Meeting C++ 2025 Anthony Williams made an announcement: that his team was working on releasing the fundamental library for safety critical low level C++ software that Woven by Toyota had been working on over the last years. It was a nice surprise to see this being announced at the conference last year, and its even nicer to see being released now in 2026! The library is build with C++14, Ubuntu 22.04+ and clang in mind.
Arene-base is AUTOSAR compliant and features backported such as span and mdspan, as well as containers operating on fixed memory to avoid allocations. It uses bazel as a build system and is split into a number of subpackages for easier deployment. In the type traits tutorial you can see how to use arenes type traits to detect if a generic type has an equality operator (==). The library comes also with a partial implementation of the C++14 library, as that is needed on some platforms which are used with Arene.
Its a great opportunity to look at a C++ code base that has been used in an embedded and safety critical context in production. This library could be a useful addition to your embedded toolbelt, offering modern C++ implementations of many newer standards type in a C++14 compatible way.
The current subpackages of arene-base are:
- algorithm: Standard Algorithms
- array
- atomic: Atomic operations in concurrent systems
- bit: Bit Manipulation Facilities
- byte: Byte Handling Facilities
- compare: Three-Way-Comparison and Operator Definitions.
- compiler_support: Facilities For Compiler-Provided Interfaces
- constraints: Facilities For Constraining Templates (SFINAE)
- contracts: Precondition and Invariant Checking
- endian: Endian-Aware Facilities For Manipulating Binary Data
- filesystem: Traversal Oriented Filesystem Access
- functional: Facilities For Functional Programming
- inline_container: Non-Allocating, Static Capacity Containers
- inline_string: Non-Allocating, Static Capacity String
- integer_sequences: Facilities For Manipulating std::integer_sequence
- intrusive: Intrusive Containers
- iterator: Backports of Iterator Facilities From Newer C++ Versions
- math: Facilities For Mathematical Operations
- mdspan: Facilities For Multidimensional Arrays
- memory: Facilities For Memory Region Manipulation
- monostate: Backport of std::monostate
- mutex:
backports and Thread Safety Analysis compatible wrappers. - optional: A Nullable Value Type
- pointer: Checked Pointer Types
- result: A Return Value That Holds Either a Value, or an Error
- scope_guard: An RAII Helper
- semantic_version: Facilities For Working With Semvers
- source_location: A Backport of std::source_location
- span: A Non-Owning View Onto Contiguous Data
- string_algorithms: Algorithms For Manipulating Strings
- string_view: Non-Owning Views Onto Character Data
- synchronization: Facilities For Synchronization In Concurrent Systems
- testing: Helpers for Writing Robust Unit Tests
- tuple: Facilities For Manipulating std::tuple
- type_info: Additional Information About Types
- type_list: Template Metaprogramming Facilities For Sequences of Types
- type_manipulation: Template Metaprogramming Facilities
- type_traits: Compile-Time Queries For Properties of Types
- unicode: Facilities For Manipulating Unicode Strings
- units: Facilities For Representing Values With Units
- utility: Low level utility facilities
- variant: A Discriminated Union Type
Join the Meeting C++ patreon community!
This and other posts on Meeting C++ are enabled by my supporters on patreon!