From f5f502e76f0206565e7dd0453b25e6f87a45a412 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 12 Feb 2025 20:28:44 +0100 Subject: [PATCH] docs: CHANGELOG updated --- CHANGELOG.md | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c7b74fd..dce9ce67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,115 @@ ### 2.5.0 WIP { id="2.5.0" } +- (!) feat: representation concepts improved +- (!) feat: `representation_of` concept now also accepts a `quantity_spec` and accepts any representation character for quantity kinds +- (!) feat: `quantity::one()` removed +- (!) feat: `Representation` concept removed +- feat: `SymbolicArg` applied to expression templates +- feat: `per` and `power` made `final` +- feat: `derived_XXX` are now constrained with `SymbolicConstant` +- feat: prime factorization extended to any magnitude (thanks [@chiphogg](https://github.com/chiphogg)) +- feat: `cartesian_vector` added +- feat: `equivalent` now accept any units (even non-convertible) +- feat: text output should fallback to the portable mode when UTF-8 is not used for `text_encoding` +- feat: precondition added to `to_u8string` +- feat: text output of scaled units is now enclosed in parenthesis `(...)` instead of brackets `[...]` +- feat: `abs(quantity)` exposed for conforming freestanding implementations +- feat: proper constraints for `kind_of` +- feat: missing precondition added for `quantity::op/` +- feat: `quantity_spec` conversions improved +- feat: `rankine` unit added +- feat: `std::numeric_limits` support added +- feat: `overflows_non_zero_values` added to detect conversions overflowing `rep` +- feat: deprecation messages now provide the release version where the deprecation happened +- feat: electromagnetism.h updated to IEC80000-6-2022 +- feat: `ConvertibleWithNumber` introduced to improve convertibility of unit `one` with raw numbers +- feat(example): `is_vector` specialization no longer needed for `si_constants` +- (!) refactor: `type_list` moved to implementation details +- (!) refactor: from now `unit_symbol` and `dimension_symbol` always returns `std::string_view` +- (!) refactor: `text_encoding` renamed to `character_set` +- (!) refactor: `Magnitude` renamed to `UnitMagnitude` and `magnitude` to `unit_magnitude` +- (!) refactor: `unit_magnitude` moved to `detail` namespace +- (!) refactor: `absolute` renamed to `point` +- (!) refactor: `power` members refactored to be explicitly exposition only +- (!) refactor: `is_XXX` customization points for representation types removed +- (!) refactor: `quantity_values` renamed to representation values +- (!) refactor: `scalar` and `complex` characters renamed to `real_scalar` and `complex_scalar` respectively + concepts refactoring +- (!) refactor: `MagConstant` concept renamed to `detail::is_mag_constant` variable trait +- refactor: mp_units.core defined in terms of `core.h` +- refactor: `MP_UNITS_NONCONST_TYPE` introduced to benefit from the C++23 feature +- refactor: `SymbolicConstant` concept refactored +- refactor: explicit type of `op/` for `quantity` and `reference` replaced with constrained placeholder +- refactor: private `unit_magnitude` interface renamed to not use leading `_` +- refactor: `one_of` concept removed and replaced with `QSProperty` in `quantity_spec` +- refactor: `std::is_trivial` will be deprecated in C++26 +- refactor: `SameQuantitySpec` concept removed and replaced with direct comparison +- refactor: unused `SameReference` concept removed +- refactor: `type_name_less` introduced and used as a default predicate for expression templates +- refactor: "expression templates" renamed to "symbolic expressions" +- refactor: `all_are_kinds` removed and `get_associated_quantity` simplified +- refactor: `reference` now returns explicit types for `inverse`, `pow`, `sqrt`, and `cbrt` +- refactor: repeated concept checks removed from `get_common_reference` +- refactor: `std::assignable_from` used in `ValuePreservingTo` concept +- refactor: `quantity` constructor refactored to use another constructor with the result of `sudo_cast` +- refactor: preconditions for quantity operations now use `is_neq_zero` +- refactor: implicit expression variations used in `quantity` and `quantity_point` constraints +- refactor: `inverse()` constraints improved +- refactor: `make_quantity_point` introduced +- refactor: `point_origin_interface::op+` return type unified with the rest of the interfaces +- refactor: `std::convertible_to` replaced with `std::same_as` in `basic_fixed_string` +- refactor: `less`, `ceil`, and `round` refactored and improved + more unit tests for `round` +- refactor: `math_concepts.h` removed and concepts replaced with explicit expression in constraints +- (!) fix: `electric_current_phasor`, `voltage_phasor`, `apparent_power` switched to complex character +- (!) fix: `position_vector` and `displacement` moved to a different place in a tree +- (!) fix: `velocity` is now defined in terms of `displacement` instead of `position_vector` +- fix: missing `core.h` added to CMake +- fix: `const` was leaking to some `SymbolicConstant`s +- fix: `make_reference` should skip only the exact kinds deduced from a unit +- fix: inconsistencies in `get_common_quantity_spec()` fixed +- fix: unused `convertible_kinds()` argument removed +- fix: compile-time branch condition fixed in `quantity_point::point_for` +- fix: `inverse(Quantity)` fixed for subkinds of `dimensionless` +- fix: `point_origin_interface::op+` constraints fixed +- fix: missing `get_common_unit()` overload added +- fix: `floor` and `ceil` constraints fixed +- fix: quantity characters fixed in electromagnetism quantities +- test: lots of tests for complex quantities +- test: runtime unit tests refactored to have a bigger granularity (less top level tests) +- test: _surface tension_ replaced with _entropy_ in an fmt test +- test: test_package now is tested also with C++20 modules +- test: tests for dimensionless quantities static data members +- test: a few more natural units tests added +- test: tests to check if `quantity` satisfies `Scalar` +- test: add static tests for concept `DimensionOf` (thanks [@jvocht](https://github.com/jvocht)) +- test: quantity character concepts tests for quantities added +- docs: ISQ part 6 released +- docs: new chapter about our documentation added to the contributing guide +- docs: directory name updated in the contributing guide +- docs: mp-units Conan options added to conanfile.txt examples +- docs: `contracts` Conan option default value description improved +- docs: outdated note removed from the "Text Output" chapter +- docs: a paragraph about additional formatting options removed (applicable only to quantity symbols which we do not support) +- docs: Wrocław 2024 meeting report +- docs: explicit unit conversion example added to the "Symbols of common units" chapter +- docs: "Bringing Quantity-Safety To The Next Level" blog post added +- docs: quantity-safety mentioned in the docs +- docs: `complex` character added to the "Quantity character" chapter +- docs: intro to "Value Conversions" chapter added +- docs: "Scaling overflow prevention" chapter added +- docs: "Concepts" chapter updated +- docs: old customization points removed from the "Character of a Quantity" chapter +- docs(ref): document most of `mp_units.core` (thanks [@JohelEGP](https://github.com/JohelEGP)) +- build: `CheckCacheVarValues` CMake module file added +- build: `MP_UNITS_DEV_TIME_TRACE` CMake option added +- build: `MP_UNITS_API_NO_CRTP` removed from `test_package` CMake +- build: require at least CMake 3.31 with Conan +- build: fmt/11.1.1 +- ci: CI matrix generation added (thanks [@burnpanck](https://github.com/burnpanck)) +- ci: `import_std` now checks if at least C++23 is being used +- perf: caching of the results of heavy `consteval` functions execution added +- perf: `expr_projectable` concept removed to improve compilation performance + ### 2.4.0 November 5, 2024 { id="2.4.0" } - (!) feat: `phase_velocity` and `group_velocity` aliases removed from ISQ by ISO @@ -204,7 +313,7 @@ - feat: `quantity_point` support added for `quantity_cast` and `value_cast` - feat: `value_cast` added - feat: `value_cast(q)`, `value_cast(qp)` and `value_cast(qp)` added by [@burnpanck](https://github.com/burnpanck) -- feat: `interconvertible(QuantitySpec, QuantitySpec)` added +- feat: `interconvertible(quantity_spec, quantity_spec)` added - feat: `qp.quantity_from_zero()` added - feat: `value_type` type trait added - feat: do not print space between a number and `percent` or `per_mille` @@ -248,7 +357,7 @@ - refactor: not needed `remove_reference_t` and `remove_cvref_t` removed - refactor: binary operators of `quantity` and `quantity_point` are now hidden friends - fix: `QuantityLike` conversions required `Q::rep` instead of using one provided by `quantity_like_traits` -- fix: `QuantitySpec[Unit]` replaced with `make_reference` in `value_cast` +- fix: `quantity_spec[Unit]` replaced with `make_reference` in `value_cast` - fix: `ice_point` is now defined with the integral offset from `absolute_zero` - fix: performance regression in `sudo_cast` fixed - fix: explicit object parameter support fixed