au 0.6.1
Permanent link:
cppdashboard.dev/r/2026/10/au-0-6-1A C++14-compatible physical units library with no dependencies and a single-file delivery option. Emphasis on safety, accessibility, performance, and developer experience.
Release notes
0.6.1
Release Notes
=============
Upgrading from (0.6.0)
----------------------
We are not aware of any breaking changes.
User-facing library changes
---------------------------
:sparkles: CUDA support for more math functions (#745)
We added support for `abs`, `arccos`/`arcsin`/`arctan`/`arctan2`,
`hypot`, `cos`/`sin`/`tan`, `fmod`/`remainder`, rounding functions, and
`sqrt`.
:sparkles: User-defined literal improvements (#747, #748, #798)
Many literals now return `ZERO` where appropriate. This includes
`0_mag`, and also unit literals such as `0_s`. Additionally, we now
support octal (`010_mag` is 8), binary (`0b101_mag` is 5), and
hexadecimal (`0xFF_mag` is 255) syntax for literals, including
hexadecimal floating point literals (`0x1.8p1_mag` is 3) for C++17
users. This fixes a bug where `010_mag` was previously interpreted as
10, which was inconsistent with `010`.
:sparkles: `Constant` and `Zero` supported in `fmod` and others (#744, #785)
This lets you do something like the following:
```cpp
constexpr auto FULL_TURN = make_constant(revolution);
const auto wrapped = fmod(angle, FULL_TURN);
```
In this call, `FULL_TURN` automatically adapts to the units and rep of
`angle`! This now works for `remainder` and `copysign` too.
:sparkles: Add explicit-rep "as" versions for rounding `Constant` (#746)
The goal is to help `Constant` "feel like" a `Quantity` in more
situations. Whereas implicit-rep "as" functions turn a `Constant` to
another `Constant`, the new explicit-rep versions produce a `Quantity`.
:sparkles: Enable comparing quantity-like type to `Constant`, `Zero` (#764)
You can now compare any type with `CorrespondingQuantity` to
a `Constant`. This includes all chrono durations, whose
`CorrespondingQuantity` machinery is provided out of the box by Au.
:bug: Certain `QuantityPoint` overload sets were broken (#762)
This was a weird and obscure one. The overload sets that were broken
were any that differed only in the units of their `QuantityPoint`
argument, with at least two different dimensions, and at least one
custom (nonzero) origin. We've now fixed this.
:bug: Other bugfixes:
- `eigen.hh` was not included in CMake builds (#755)
- Could not use `Constant` as `origin()` (#763)
Compile time impact
-------------------
Overall, the new features in 0.6.1 cost about 5 ms of compile time per
translation unit, relative to 0.6.0. See comments in #806 for more
detailed measurements.
Documentation updates
---------------------
- Corresponding quantity comparison (#793)
- Magnitude literals documentation (#797, #802)
- New `Constant` rounding functions (#774)
- Improved `Zero` ergonomics (#773)
- Shapeshifter types in more math functions (#768)
- Unit origin updates (#796)
Repo updates
------------
- Improved CI coverage robustness for bazel/CMake correspondence (#782)
Future-proofing releases
------------------------
- :rocket: `0.6.1-future-714`: release covering #714
- This commit removes all APIs with the word "coerce" in their name.
To fix build errors, first, delete the `coerce_` part of the name.
Then, if you get a compiler error, read the error to see what risk
set the library has flagged, and refer to our conversion risk guide
<https://aurora-opensource.github.io/au/0.6.1/troubleshooting/#risk-too-high>
to see how to handle this specific instance.
- :rocket: `0.6.1-future-715`: release covering #715
- This commit makes `ScalarOfTrait` specialization _required_ for
every type that doesn't already work automatically. See our trait
specialization docs
<https://aurora-opensource.github.io/au/0.6.1/reference/rep/#specializing-scalaroftrait>
for more details.
- :rocket: `0.6.1-future-733`: release covering #733
- This commit deletes all "`T`-suffixed" names (e.g., `UnitProductT`
instead of `UnitProduct`) from the library. The fix is generally t… Share this resource