Library

au 0.6.1

Version0.6.1
Stars★ 449
Released2026-10-01

A 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


Discovered 2026-10-02 Source GitHub Archive 2026-10 →