Skip to content

Commit 27d2def

Browse files
committed
feat: 2.5.0 released
1 parent 714b259 commit 27d2def

File tree

5 files changed

+362
-15
lines changed

5 files changed

+362
-15
lines changed

CHANGELOG.md

Lines changed: 130 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

CITATION.cff

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ repository-code: "https://github.com/mpusz/mp-units"
4040
url: "https://mpusz.github.io/mp-units"
4141
repository-artifact: "https://conan.io/center/mp-units"
4242

43-
version: 2.4.0
44-
date-released: "2024-11-05"
43+
version: 2.5.0
44+
date-released: "2025-12-24"
4545
identifiers:
46-
- description: "The GitHub release URL of tag 2.4.0"
46+
- description: "The GitHub release URL of tag 2.5.0"
4747
type: url
48-
value: "https://github.com/mpusz/mp-units/releases/tag/v2.4.0"
48+
value: "https://github.com/mpusz/mp-units/releases/tag/v2.5.0"

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ For more, see the [official documentation](https://mpusz.github.io/mp-units) and
140140
In case you would like to upload **mp-units** package to the Conan server, do the following:
141141

142142
```shell
143-
conan upload -r <remote-name> --all mp-units/2.4.0@<user>/<channel>
143+
conan upload -r <remote-name> --all mp-units/2.5.0@<user>/<channel>
144144
```
145145

146146

0 commit comments

Comments
 (0)