@@ -6,7 +6,7 @@ This page documents the version history and changes for the **mp-units** library
66
77## mp-units
88
9- ### 2.5.0 <small >WIP </small > { id="2.5.0" }
9+ ### 2.5.0 <small >December 24, 2025 </small > { id="2.5.0" }
1010
1111- (!) feat: representation concepts improved
1212- (!) feat: ` representation_of ` concept now also accepts a ` quantity_spec ` and
@@ -35,11 +35,23 @@ This page documents the version history and changes for the **mp-units** library
3535- feat: deprecation messages now provide the release version where the
3636 deprecation happened
3737- feat: electromagnetism.h updated to IEC80000-6-2022
38- - feat: ` ConvertibleWithNumber ` introduced to improve convertibility of unit ` one `
3938 with raw numbers
4039- feat: ` lerp ` and ` midpoint ` for points added
4140- feat: ` is_value_preserving ` customization point added
41+ - feat: ` EQUIV{...} ` replaced with ` [...] ` in the text output of common units
42+ - feat: ` constexpr_format ` added
43+ - feat: ` unsatisfied ` added and enabled throwing constraints
44+ - feat: some constraints refactored to throw exceptions with nice error messages
45+ - feat: explicit constructor now can perform an explicit ` quantity_spec ` conversion
46+ - feat: natural units support is now opt-in
47+ - feat: ` value_type_t ` is now recursive
48+ - feat: support for ` root ` of negative numbers removed
49+ - feat: old MSVC workarounds disabled for the latest version
50+ - feat: ` invoke_with_prefixed ` added to SI
51+ - feat: ` QuantityLike ` should not satisfy the ` Representation ` concept
4252- feat(example): ` is_vector ` specialization no longer needed for ` si_constants `
53+ - feat(example): measurement.h extracted for easier reuse
54+ - feat(example): ` clcpp_response ` and ` conversion_factor ` examples removed
4355- (!) refactor: ` type_list ` moved to implementation details
4456- (!) refactor: from now ` unit_symbol ` and ` dimension_symbol ` always returns
4557 ` std::string_view `
@@ -53,6 +65,10 @@ This page documents the version history and changes for the **mp-units** library
5365- (!) refactor: ` scalar ` and ` complex ` characters renamed to ` real_scalar ` and
5466 ` complex_scalar ` respectively + concepts refactoring
5567- (!) refactor: ` MagConstant ` concept renamed to ` detail::is_mag_constant ` variable trait
68+ - (!) refactor: ` format.h ` header file made deprecated
69+ - (!) refactor: ` ostream.h ` header file made deprecated
70+ - (!) refactor: rename ` default_denominator ` to ` default_solidus ` in
71+ ` unit_symbol_solidus ` enum
5672- refactor: mp_units.core defined in terms of ` core.h `
5773- refactor: ` MP_UNITS_NONCONST_TYPE ` introduced to benefit from the C++23 feature
5874- refactor: ` SymbolicConstant ` concept refactored
@@ -88,6 +104,19 @@ This page documents the version history and changes for the **mp-units** library
88104- refactor: ` visit_format_arg ` is deprecated in C++26
89105- refactor: deprecated literal operators
90106- refactor: constraints refactoring
107+ - refactor: compund assignment and pre-/post-increment operators are now lvalue-qualified
108+ member functions
109+ - refactor: ` ValuePreservingScaling ` concepts renamed
110+ - refactor: ` common_type ` specializations refactored
111+ - refactor: ` NumberLike ` renamed to ` DimensionlessOne `
112+ - refactor: branching on a deprecated C++ feature improved
113+ - refactor: all CTADs made implicit
114+ - refactor: ` MP_UNITS_REMOVE_CONST ` gcc workaround added to ` RepresentationOf `
115+ - refactor: ` ReferenceOf ` concept simplified
116+ - refactor: explicitly defaulted special member functions removed
117+ - refactor(example): slight refactoring of examples while working on their documentation
118+ - refactor(example): kalman filter examples refactored to better match their
119+ - refactor(example): ` is_hae ` function refactored to ` HAEAltitude ` concept
91120- (!) fix: ` electric_current_phasor ` , ` voltage_phasor ` , ` apparent_power ` switched to
92121 complex character
93122- (!) fix: ` position_vector ` and ` displacement ` moved to a different place in a tree
@@ -109,16 +138,45 @@ This page documents the version history and changes for the **mp-units** library
109138- fix: ` mag_constant ` workarounds branches for clang fixed
110139- fix: checking for clang versions fixed in CMake scripts
111140- fix: text stripping in ` type_name ` fixed
141+ - fix: make quantity conversion to ` Rep ` ` constexpr `
142+ (thanks [ @KangarooKoala ] ( https://github.com/KangarooKoala ) )
143+ - fix: MSVC compilation fixed
144+ - fix: ` abs ` interface and implementation improved
145+ - fix: unused parameters removed from ` scaling_overflows_non_zero_values `
146+ - fix: invalid precondition check in ` root ` removed
147+ - fix: workaround for fmt
148+ - fix: CTAD issue workaround for MSVC
149+ - fix: ` dynamic_spec_id_handler ` fixed for gcc-15
150+ - fix: MSVC workarounds for ` consteval ` functions
151+ - fix: resolve CMake compiler test failure in freestanding CI builds
152+ (thanks [ @rothmichaels ] ( https://github.com/rothmichaels ) )
153+ - fix: msvc empty bases workaround (thanks [ @Radnyx ] ( https://github.com/Radnyx ) )
154+ - fix: seconds literal has unspecified type and depends on implementation
155+ (thanks [ @Radnyx ] ( https://github.com/Radnyx ) )
156+ - fix: ` named_unit ` can now be created for ` kind_of<dimensionless> `
157+ - fix: enable runtime usage of inverse function by using compile-time unit extraction
158+ (thanks [ @rothmichaels ] ( https://github.com/rothmichaels ) )
159+ - fix: CTAD for dimensionless quantities fixed
160+ - fix: concepts tests compilation fixed for ` MP_UNITS_API_NATURAL_UNITS ` OFF
161+ - fix: missing natural units support added to ` package_info() `
162+ - fix: freestanding build error in Conan ` package_info() `
163+ (thanks [ @kammce ] ( https://github.com/kammce ) )
164+ - fix: replace ` wstring_view ` with ` basic_string_view<wchar_t> `
165+ (thanks [ @kammce ] ( https://github.com/kammce ) )
166+ - Fix destination unit creation in ` inverse `
167+ - fix(docs): typo in a file name fixed
168+ - fix(example): text formatting fixed for ` glide_computer ` documentation
112169- test: lots of tests for complex quantities
113170- test: runtime unit tests refactored to have a bigger granularity (less top level tests)
114171- test: _ surface tension_ replaced with _ entropy_ in an fmt test
115172- test: test_package now is tested also with C++20 modules
116173- test: tests for dimensionless quantities static data members
117174- test: a few more natural units tests added
118175- test: tests to check if ` quantity ` satisfies ` Scalar `
119- - test: add static tests for concept ` DimensionOf ` (thanks
120- [ @jvocht ] ( https://github.com/jvocht ) )
176+ - test: add static tests for concept ` DimensionOf ` (thanks [ @jvocht ] ( https://github.com/jvocht ) )
121177- test: quantity character concepts tests for quantities added
178+ - test: duplicated ` dimensionless ` tests removed
179+ - test: additional concepts tests for quantity spec added
122180- docs: ISQ part 6 released
123181- docs: new chapter about our documentation added to the contributing guide
124182- docs: directory name updated in the contributing guide
@@ -137,6 +195,31 @@ This page documents the version history and changes for the **mp-units** library
137195- docs: "Concepts" chapter updated
138196- docs: old customization points removed from the "Character of a Quantity" chapter
139197- docs: clang-19 issues mentioned in a compiler support table
198+ - docs: "Introducing absolute quantities" blog post added
199+ - docs: relative path removed from the contributing guide
200+ - docs: examples updated and deprecated tags generation replaced with modern usage
201+ - docs: compiler explorer links replaced with buttons
202+ - docs: "Installation and Usage" cleanup
203+ - docs: "Introduction" chapter improved
204+ - docs: "Quick Start" Improved
205+ - docs: "Interface Introduction" improved
206+ - docs: "Systems of Quantities" chapter improved
207+ - docs: "Concepts" chapter improved
208+ - docs: README updated
209+ - docs: "Install as a Dependency" added to README
210+ - docs: tutorials section added
211+ - docs: info about ` kind_of<dimensionless> ` units added
212+ - docs: adjust formatting in temperature printing function for better alignment
213+ - docs: README visually improved
214+ - docs: 2 new chapters added to README
215+ - docs: link to mp-units in ConanCenter added to README
216+ - docs: "Support the Project" added to README
217+ - docs: enhance testimonials section for clarity and inclusivity
218+ - docs: clarify flowchart labels for quantity addition and differences
219+ - docs: CONTRIBUTORS.md added
220+ - docs: examples reworked
221+ - docs: "Cheat Sheet" added
222+ - docs: "Auto-scaling of a quantity" chapter added
140223- docs(ref): document most of ` mp_units.core ` (thanks [ @JohelEGP ] ( https://github.com/JohelEGP ) )
141224- build: ` CheckCacheVarValues ` CMake module file added
142225- build: ` MP_UNITS_DEV_TIME_TRACE ` CMake option added
@@ -145,13 +228,54 @@ This page documents the version history and changes for the **mp-units** library
145228- build: clang-20 enabled in CI
146229- build: clang-19 support removed from conanfile.py
147230- build: clang-20.1 workaround added to ` package_info `
148- - build: update dependencies to gsl-lite/0.42.0 , ms-gsl/4.1 .0,
149- fmt/11 .1.4, and catch2/3.8.0
231+ - build: update dependencies to gsl-lite/1.0.1 , ms-gsl/4.2 .0,
232+ fmt/12 .1.0, catch2/3.11.0, cmake/4.2.1
150233- build: suppress warnings for gcc-12 in conanfile
234+ - build: switch freestanding CI to clang-20
235+ - build: gcc installation step is now mandatory for all gcc versions
236+ - build: ` import_std ` set to ` False ` by default
237+ - build: ` wg21-linear_algebra ` dependency removed
238+ - build: ` check_libcxx_in_use ` improved
239+ - build: Gitpod support removed
240+ - build: CodeSpaces support added
241+ - build: CMake switched to a new gsl-lite target
242+ - build: clang-21 added to ` check_all.sh `
243+ - build: gcc-15 enabled in ` check_all.sh `
244+ - build: ` explicit_this ` enabled for AppleClang 17 and MSVC 19.32
245+ (thanks [ @alex-tee ] ( https://github.com/alex-tee ) )
246+ - build: add ` build: add INSTALL option to cmake ` option to cmake
247+ (thanks [ @alex-tee ] ( https://github.com/alex-tee ) )
248+ - build: projectPrefix CMake variable removed
249+ - build: ` MP_UNITS_BUILD_AS_SYSTEM_HEADERS ` removed
250+ - build: ` warnings.cmake ` refactored to use ` CMAKE_COMPILE_WARNING_AS_ERROR `
251+ - build: ` CMAKE_COMPILE_WARNING_AS_ERROR ` set in conanfile
252+ - build: ` PROJECT_IS_TOP_LEVEL ` used in ` ensure_entry_point `
253+ - build: Various cleanup (thanks [ @HazardyKnusperkeks ] ( https://github.com/HazardyKnusperkeks ) )
254+ - build: CMake config file variables handling fixed
255+ - build: dereferencing CMake variables in ` if() ` conditions is not needed
256+ - build: improved setting of ` MP_UNITS_BUILD_CXX_MODULES ` for ` test_package `
257+ - build: ` MP_UNITS_BUILD_CXX_MODULES ` will now be always provided by Conan
258+ - build: CMake CI should run the cmake executable provided by Conan
259+ - build: C++23 enabled for ` test_package ` when ` import std ` is ON
260+ - build: all ` target_compile_definitions ` aggregated in one place
151261- ci: CI matrix generation added (thanks [ @burnpanck ] ( https://github.com/burnpanck ) )
152262- ci: ` import_std ` now checks if at least C++23 is being used
263+ - ci: GitHub actions improved
264+ - ci: dependency review GitHub action added
265+ - ci: clang-21 support added
266+ - ci: update dependency review configuration
267+ - ci: housekeeping after release step fixed in ci-conan
268+ - ci: the macOS-13 based runner images are retired in GitHub
269+ - ci: old 'VISUAL' decendant of Conan 1.x removed from CMake CI
153270- perf: caching of the results of heavy ` consteval ` functions execution added
154271- perf: ` expr_projectable ` concept removed to improve compilation performance
272+ - style: pre-commit tools updated
273+ - style: markdownlint rules updated
274+ - style: MD036 added to .markdownlint.json
275+ - chore: add issue templates for bug reports, documentation issues, and feature requests
276+ - chore: add usage experience issue template and a chapter in README
277+ - chore: PR template added
278+ - chore: FUNDING.yml file added
155279
156280### 2.4.0 <small >November 5, 2024</small > { id="2.4.0" }
157281
0 commit comments