{"id":28266853,"url":"https://github.com/aurora-opensource/au","last_synced_at":"2025-07-02T12:32:47.994Z","repository":{"id":65743764,"uuid":"540141969","full_name":"aurora-opensource/au","owner":"aurora-opensource","description":"A C++14-compatible physical units library with no dependencies and a single-file delivery option.  Emphasis on safety, accessibility, performance, and developer experience.","archived":false,"fork":false,"pushed_at":"2025-05-30T21:16:04.000Z","size":12921,"stargazers_count":369,"open_issues_count":27,"forks_count":24,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-06-19T01:38:08.570Z","etag":null,"topics":["bazel","compile-time","cpp","cpp14","cpp14-library","dimensional-analysis","header-only","header-only-library","no-dependencies","physical-quantities","physical-units","quantity","single-header-library","unit-of-measure","units","units-of-measure","units-of-measurement"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aurora-opensource.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"docs/supported-compilers.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-09-22T19:37:38.000Z","updated_at":"2025-06-12T07:49:03.000Z","dependencies_parsed_at":"2023-10-01T21:27:58.733Z","dependency_job_id":"7ccf0e12-580e-4740-8373-e9bac84f445a","html_url":"https://github.com/aurora-opensource/au","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/aurora-opensource/au","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurora-opensource%2Fau","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurora-opensource%2Fau/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurora-opensource%2Fau/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurora-opensource%2Fau/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aurora-opensource","download_url":"https://codeload.github.com/aurora-opensource/au/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurora-opensource%2Fau/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263140613,"owners_count":23419916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bazel","compile-time","cpp","cpp14","cpp14-library","dimensional-analysis","header-only","header-only-library","no-dependencies","physical-quantities","physical-units","quantity","single-header-library","unit-of-measure","units","units-of-measure","units-of-measurement"],"created_at":"2025-05-20T15:04:17.521Z","updated_at":"2025-07-02T12:32:47.976Z","avatar_url":"https://github.com/aurora-opensource.png","language":"C++","readme":"![Au library logo](docs/assets/au-logo-color.png)\n\n[![clang14-ubuntu](\nhttps://github.com/aurora-opensource/au/actions/workflows/clang14-ubuntu.yml/badge.svg?branch=main\u0026event=push)](\nhttps://github.com/aurora-opensource/au/actions/workflows/clang14-ubuntu.yml) [![clang11-ubuntu](\nhttps://github.com/aurora-opensource/au/actions/workflows/clang11-ubuntu.yml/badge.svg?branch=main\u0026event=push)](\nhttps://github.com/aurora-opensource/au/actions/workflows/clang11-ubuntu.yml) [![gcc10-ubuntu](\nhttps://github.com/aurora-opensource/au/actions/workflows/gcc10-ubuntu.yml/badge.svg?branch=main\u0026event=push)](\nhttps://github.com/aurora-opensource/au/actions/workflows/gcc10-ubuntu.yml) [![MSVC 2019 x64](\nhttps://github.com/aurora-opensource/au/actions/workflows/msvc-2019-x64.yml/badge.svg?branch=main\u0026event=push)](\nhttps://github.com/aurora-opensource/au/actions/workflows/msvc-2019-x64.yml) [![MSVC 2022 x64](\nhttps://github.com/aurora-opensource/au/actions/workflows/msvc-2022-x64.yml/badge.svg?branch=main\u0026event=push)](\nhttps://github.com/aurora-opensource/au/actions/workflows/msvc-2022-x64.yml)\n\n# Au: A C++14-compatible units library, by Aurora\n\nAu (pronounced \"ay yoo\") is a C++ units library, by [Aurora](https://aurora.tech/).  What the\n`\u003cchrono\u003e` library did for time variables, _Au_ does for _all physical quantities_ (lengths, speeds,\nvoltages, and so on). Namely:\n\n- Catch unit errors at compile time, with **no runtime penalty**.\n- Make unit conversions effortless to get right.\n- _Accelerate and improve your general developer experience._\n\nIn short: if your C++ programs handle physical quantities, Au will make you faster and more\neffective at your job.  You'll find everything you need in our [full documentation\nwebsite](https://aurora-opensource.github.io/au).\n\n\u003e _Try it out on [Compiler Explorer (\"godbolt\")](https://godbolt.org/z/G6r315G9n)!_\n\n## Why Au?\n\nThere are many other C++ units libraries, several quite well established.  Each of them offers\n_some_ of the following properties, but **only Au** offers _all_ of them:\n\n- Wide compatibility with C++ versions (anything C++14 or newer).\n- Easy installation in any project (including a customizable single-header option).\n- Small compile time burden.\n- Concise, readable typenames in compiler errors.\n\nWe also provide several totally new features, including fully unit-safe APIs, an adaptive \"safety\nsurface\" that protects conversions against overflow, unit-aware rounding and inverse functions, and\nmany more.\n\nForged in the crucible of Aurora's diverse, demanding use cases, Au has a proven track record of\nusability and reliability. This **includes embedded support**: Aurora's embedded teams have been\nfirst class customers since the library's inception.\n\nTo learn more about our place in the C++ units library ecosystem, see our [detailed library\ncomparison](https://aurora-opensource.github.io/au/main/alternatives/).\n\n## Getting started\n\nOur [installation instructions](https://aurora-opensource.github.io/au/main/install/) can have you\nup and running in minutes, in any project that supports C++14 or newer.\n\nTo use the library effectively, we recommend working through the\n[tutorials](https://aurora-opensource.github.io/au/main/tutorial/), starting with [Au 101: Quantity\nMakers](https://aurora-opensource.github.io/au/main/tutorial/101-quantity-makers/).  To\nget set up with the tutorials — or, to contribute to the library — check out our [development\nguide](https://aurora-opensource.github.io/au/main/develop/).\n\n## As seen at CppCon 2021\n\nAt CppCon 2021, we\n[presented](https://cppcon2021.sched.com/event/nvCp/units-libraries-and-autonomous-vehicles-lessons-from-the-trenches)\nthe properties we found to be most important in units libraries, and advice on using them\neffectively.  Because Au was designed from the ground up with these best practices in mind, it\nthoroughly exemplifies them.  Check out the video below, and follow along with [the slide\ndeck](https://chogg.name/cppcon-2021-units/) if you like.\n\n[![Chip Hogg's CppCon 2021 Aurora units talk](https://github.com/user-attachments/assets/ca87d98d-4256-4d10-a112-723d1ee56275)](https://www.youtube.com/watch?v=5dhFtSu3wCo)\n\n\u003e NOTE: This open-source version has been significantly improved from what was presented in the\ntalk: both in its user interfaces, _and_ under the hood!  The one downside is that matrix and vector\nsupport hasn't yet been implemented.  See [#70](https://github.com/aurora-opensource/au/issues/70)\nfor more details, and subscribe to that issue to watch for progress.\n\n## ...and, at CppCon 2023\n\nAfter CppCon 2021, we found that telling people what to look for in a units library wasn't good\nenough, if they couldn't find one that met those criteria.  We saw so many people struggling with\nproblems that we had already solved robustly!  So, we set about sharing our work.  With a clean\nslate, we made a new library that was a drop-in replacement for Aurora's internal library, but with\nzero Aurora-internal dependencies, so that we could easily open source it.  The result was Au, and\nwe shared it at CppCon 2023.  Check out the video below, and follow along with [the slide\ndeck](https://chogg.name/cppcon-2023-au-units) if you like.\n\n[![Chip Hogg's CppCon 2023 Aurora units talk](https://github.com/user-attachments/assets/5f359644-d36c-43f9-8d6f-b49bb1d3cb2e)](https://www.youtube.com/watch?v=o0ck5eqpOLc)\n","funding_links":[],"categories":["Scientific Computing"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faurora-opensource%2Fau","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faurora-opensource%2Fau","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faurora-opensource%2Fau/lists"}