|
4 | 4 |
|
5 | 5 | ### 2.5.0 <small>WIP</small> { id="2.5.0" }
|
6 | 6 |
|
| 7 | +- (!) feat: representation concepts improved |
| 8 | +- (!) feat: `representation_of` concept now also accepts a `quantity_spec` and accepts any representation character for quantity kinds |
| 9 | +- (!) feat: `quantity::one()` removed |
| 10 | +- (!) feat: `Representation` concept removed |
| 11 | +- feat: `SymbolicArg` applied to expression templates |
| 12 | +- feat: `per` and `power` made `final` |
| 13 | +- feat: `derived_XXX` are now constrained with `SymbolicConstant` |
| 14 | +- feat: prime factorization extended to any magnitude (thanks [@chiphogg](https://github.com/chiphogg)) |
| 15 | +- feat: `cartesian_vector` added |
| 16 | +- feat: `equivalent` now accept any units (even non-convertible) |
| 17 | +- feat: text output should fallback to the portable mode when UTF-8 is not used for `text_encoding` |
| 18 | +- feat: precondition added to `to_u8string` |
| 19 | +- feat: text output of scaled units is now enclosed in parenthesis `(...)` instead of brackets `[...]` |
| 20 | +- feat: `abs(quantity)` exposed for conforming freestanding implementations |
| 21 | +- feat: proper constraints for `kind_of` |
| 22 | +- feat: missing precondition added for `quantity::op/` |
| 23 | +- feat: `quantity_spec` conversions improved |
| 24 | +- feat: `rankine` unit added |
| 25 | +- feat: `std::numeric_limits` support added |
| 26 | +- feat: `overflows_non_zero_values` added to detect conversions overflowing `rep` |
| 27 | +- feat: deprecation messages now provide the release version where the deprecation happened |
| 28 | +- feat: electromagnetism.h updated to IEC80000-6-2022 |
| 29 | +- feat: `ConvertibleWithNumber` introduced to improve convertibility of unit `one` with raw numbers |
| 30 | +- feat(example): `is_vector` specialization no longer needed for `si_constants` |
| 31 | +- (!) refactor: `type_list` moved to implementation details |
| 32 | +- (!) refactor: from now `unit_symbol` and `dimension_symbol` always returns `std::string_view` |
| 33 | +- (!) refactor: `text_encoding` renamed to `character_set` |
| 34 | +- (!) refactor: `Magnitude` renamed to `UnitMagnitude` and `magnitude` to `unit_magnitude` |
| 35 | +- (!) refactor: `unit_magnitude` moved to `detail` namespace |
| 36 | +- (!) refactor: `absolute` renamed to `point` |
| 37 | +- (!) refactor: `power` members refactored to be explicitly exposition only |
| 38 | +- (!) refactor: `is_XXX` customization points for representation types removed |
| 39 | +- (!) refactor: `quantity_values` renamed to representation values |
| 40 | +- (!) refactor: `scalar` and `complex` characters renamed to `real_scalar` and `complex_scalar` respectively + concepts refactoring |
| 41 | +- (!) refactor: `MagConstant` concept renamed to `detail::is_mag_constant` variable trait |
| 42 | +- refactor: mp_units.core defined in terms of `core.h` |
| 43 | +- refactor: `MP_UNITS_NONCONST_TYPE` introduced to benefit from the C++23 feature |
| 44 | +- refactor: `SymbolicConstant` concept refactored |
| 45 | +- refactor: explicit type of `op/` for `quantity` and `reference` replaced with constrained placeholder |
| 46 | +- refactor: private `unit_magnitude` interface renamed to not use leading `_` |
| 47 | +- refactor: `one_of` concept removed and replaced with `QSProperty` in `quantity_spec` |
| 48 | +- refactor: `std::is_trivial` will be deprecated in C++26 |
| 49 | +- refactor: `SameQuantitySpec` concept removed and replaced with direct comparison |
| 50 | +- refactor: unused `SameReference` concept removed |
| 51 | +- refactor: `type_name_less` introduced and used as a default predicate for expression templates |
| 52 | +- refactor: "expression templates" renamed to "symbolic expressions" |
| 53 | +- refactor: `all_are_kinds` removed and `get_associated_quantity` simplified |
| 54 | +- refactor: `reference` now returns explicit types for `inverse`, `pow`, `sqrt`, and `cbrt` |
| 55 | +- refactor: repeated concept checks removed from `get_common_reference` |
| 56 | +- refactor: `std::assignable_from` used in `ValuePreservingTo` concept |
| 57 | +- refactor: `quantity` constructor refactored to use another constructor with the result of `sudo_cast` |
| 58 | +- refactor: preconditions for quantity operations now use `is_neq_zero` |
| 59 | +- refactor: implicit expression variations used in `quantity` and `quantity_point` constraints |
| 60 | +- refactor: `inverse()` constraints improved |
| 61 | +- refactor: `make_quantity_point` introduced |
| 62 | +- refactor: `point_origin_interface::op+` return type unified with the rest of the interfaces |
| 63 | +- refactor: `std::convertible_to` replaced with `std::same_as` in `basic_fixed_string` |
| 64 | +- refactor: `less`, `ceil`, and `round` refactored and improved + more unit tests for `round` |
| 65 | +- refactor: `math_concepts.h` removed and concepts replaced with explicit expression in constraints |
| 66 | +- (!) fix: `electric_current_phasor`, `voltage_phasor`, `apparent_power` switched to complex character |
| 67 | +- (!) fix: `position_vector` and `displacement` moved to a different place in a tree |
| 68 | +- (!) fix: `velocity` is now defined in terms of `displacement` instead of `position_vector` |
| 69 | +- fix: missing `core.h` added to CMake |
| 70 | +- fix: `const` was leaking to some `SymbolicConstant`s |
| 71 | +- fix: `make_reference` should skip only the exact kinds deduced from a unit |
| 72 | +- fix: inconsistencies in `get_common_quantity_spec()` fixed |
| 73 | +- fix: unused `convertible_kinds()` argument removed |
| 74 | +- fix: compile-time branch condition fixed in `quantity_point::point_for` |
| 75 | +- fix: `inverse(Quantity)` fixed for subkinds of `dimensionless` |
| 76 | +- fix: `point_origin_interface::op+` constraints fixed |
| 77 | +- fix: missing `get_common_unit()` overload added |
| 78 | +- fix: `floor` and `ceil` constraints fixed |
| 79 | +- fix: quantity characters fixed in electromagnetism quantities |
| 80 | +- test: lots of tests for complex quantities |
| 81 | +- test: runtime unit tests refactored to have a bigger granularity (less top level tests) |
| 82 | +- test: _surface tension_ replaced with _entropy_ in an fmt test |
| 83 | +- test: test_package now is tested also with C++20 modules |
| 84 | +- test: tests for dimensionless quantities static data members |
| 85 | +- test: a few more natural units tests added |
| 86 | +- test: tests to check if `quantity` satisfies `Scalar` |
| 87 | +- test: add static tests for concept `DimensionOf` (thanks [@jvocht](https://github.com/jvocht)) |
| 88 | +- test: quantity character concepts tests for quantities added |
| 89 | +- docs: ISQ part 6 released |
| 90 | +- docs: new chapter about our documentation added to the contributing guide |
| 91 | +- docs: directory name updated in the contributing guide |
| 92 | +- docs: mp-units Conan options added to conanfile.txt examples |
| 93 | +- docs: `contracts` Conan option default value description improved |
| 94 | +- docs: outdated note removed from the "Text Output" chapter |
| 95 | +- docs: a paragraph about additional formatting options removed (applicable only to quantity symbols which we do not support) |
| 96 | +- docs: Wrocław 2024 meeting report |
| 97 | +- docs: explicit unit conversion example added to the "Symbols of common units" chapter |
| 98 | +- docs: "Bringing Quantity-Safety To The Next Level" blog post added |
| 99 | +- docs: quantity-safety mentioned in the docs |
| 100 | +- docs: `complex` character added to the "Quantity character" chapter |
| 101 | +- docs: intro to "Value Conversions" chapter added |
| 102 | +- docs: "Scaling overflow prevention" chapter added |
| 103 | +- docs: "Concepts" chapter updated |
| 104 | +- docs: old customization points removed from the "Character of a Quantity" chapter |
| 105 | +- docs(ref): document most of `mp_units.core` (thanks [@JohelEGP](https://github.com/JohelEGP)) |
| 106 | +- build: `CheckCacheVarValues` CMake module file added |
| 107 | +- build: `MP_UNITS_DEV_TIME_TRACE` CMake option added |
| 108 | +- build: `MP_UNITS_API_NO_CRTP` removed from `test_package` CMake |
| 109 | +- build: require at least CMake 3.31 with Conan |
| 110 | +- build: fmt/11.1.1 |
| 111 | +- ci: CI matrix generation added (thanks [@burnpanck](https://github.com/burnpanck)) |
| 112 | +- ci: `import_std` now checks if at least C++23 is being used |
| 113 | +- perf: caching of the results of heavy `consteval` functions execution added |
| 114 | +- perf: `expr_projectable` concept removed to improve compilation performance |
| 115 | + |
7 | 116 | ### 2.4.0 <small>November 5, 2024</small> { id="2.4.0" }
|
8 | 117 |
|
9 | 118 | - (!) feat: `phase_velocity` and `group_velocity` aliases removed from ISQ by ISO
|
|
204 | 313 | - feat: `quantity_point` support added for `quantity_cast` and `value_cast`
|
205 | 314 | - feat: `value_cast<Unit, Representation>` added
|
206 | 315 | - feat: `value_cast<Quantity>(q)`, `value_cast<Quantity>(qp)` and `value_cast<QuantityPoint>(qp)` added by [@burnpanck](https://github.com/burnpanck)
|
207 |
| -- feat: `interconvertible(QuantitySpec, QuantitySpec)` added |
| 316 | +- feat: `interconvertible(quantity_spec, quantity_spec)` added |
208 | 317 | - feat: `qp.quantity_from_zero()` added
|
209 | 318 | - feat: `value_type` type trait added
|
210 | 319 | - feat: do not print space between a number and `percent` or `per_mille`
|
|
248 | 357 | - refactor: not needed `remove_reference_t` and `remove_cvref_t` removed
|
249 | 358 | - refactor: binary operators of `quantity` and `quantity_point` are now hidden friends
|
250 | 359 | - fix: `QuantityLike` conversions required `Q::rep` instead of using one provided by `quantity_like_traits`
|
251 |
| -- fix: `QuantitySpec[Unit]` replaced with `make_reference` in `value_cast` |
| 360 | +- fix: `quantity_spec[Unit]` replaced with `make_reference` in `value_cast` |
252 | 361 | - fix: `ice_point` is now defined with the integral offset from `absolute_zero`
|
253 | 362 | - fix: performance regression in `sudo_cast` fixed
|
254 | 363 | - fix: explicit object parameter support fixed
|
|
0 commit comments