Skip to content

2.5.0

Latest

Choose a tag to compare

@mpusz mpusz released this 24 Dec 14:54
· 298 commits to master since this release
  • (!) 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)
  • 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: scaling_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 with raw numbers
  • feat: lerp and midpoint for points added
  • feat: is_value_preserving customization point added
  • feat: EQUIV{...} replaced with [...] in the text output of common units
  • feat: constexpr_format added
  • feat: unsatisfied added and enabled throwing constraints
  • feat: some constraints refactored to throw exceptions with nice error messages
  • feat: explicit constructor now can perform an explicit quantity_spec conversion
  • feat: natural units support is now opt-in
  • feat: value_type_t is now recursive
  • feat: support for root of negative numbers removed
  • feat: old MSVC workarounds disabled for the latest version
  • feat: invoke_with_prefixed added to SI
  • feat: QuantityLike should not satisfy the Representation concept
  • feat(example): is_vector specialization no longer needed for si_constants
  • feat(example): measurement.h extracted for easier reuse
  • feat(example): clcpp_response and conversion_factor examples removed
  • (!) 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: format.h header file made deprecated
  • (!) refactor: ostream.h header file made deprecated
  • (!) refactor: rename default_denominator to default_solidus in unit_symbol_solidus enum
  • 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
  • refactor: visit_format_arg is deprecated in C++26
  • refactor: deprecated literal operators
  • refactor: constraints refactoring
  • refactor: compund assignment and pre-/post-increment operators are now lvalue-qualified member functions
  • refactor: ValuePreservingScaling concepts renamed
  • refactor: common_type specializations refactored
  • refactor: NumberLike renamed to DimensionlessOne
  • refactor: branching on a deprecated C++ feature improved
  • refactor: all CTADs made implicit
  • refactor: MP_UNITS_REMOVE_CONST gcc workaround added to RepresentationOf
  • refactor: ReferenceOf concept simplified
  • refactor: explicitly defaulted special member functions removed
  • refactor(example): slight refactoring of examples while working on their documentation
  • refactor(example): kalman filter examples refactored to better match their
  • refactor(example): is_hae function refactored to HAEAltitude concept
  • (!) 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 SymbolicConstants
  • 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
  • fix: arg.visit support fixed
  • fix: expr_less now also sorts powers
  • fix: mag_constant workarounds branches for clang fixed
  • fix: checking for clang versions fixed in CMake scripts
  • fix: text stripping in type_name fixed
  • fix: make quantity conversion to Rep constexpr (thanks @KangarooKoala)
  • fix: MSVC compilation fixed
  • fix: abs interface and implementation improved
  • fix: unused parameters removed from scaling_overflows_non_zero_values
  • fix: invalid precondition check in root removed
  • fix: workaround for fmt
  • fix: CTAD issue workaround for MSVC
  • fix: dynamic_spec_id_handler fixed for gcc-15
  • fix: MSVC workarounds for consteval functions
  • fix: resolve CMake compiler test failure in freestanding CI builds (thanks @rothmichaels)
  • fix: msvc empty bases workaround (thanks @Radnyx)
  • fix: seconds literal has unspecified type and depends on implementation (thanks @Radnyx)
  • fix: named_unit can now be created for kind_of<dimensionless>
  • fix: enable runtime usage of inverse function by using compile-time unit extraction (thanks @rothmichaels)
  • fix: CTAD for dimensionless quantities fixed
  • fix: concepts tests compilation fixed for MP_UNITS_API_NATURAL_UNITS OFF
  • fix: missing natural units support added to package_info()
  • fix: freestanding build error in Conan package_info() (thanks @kammce)
  • fix: replace wstring_view with basic_string_view<wchar_t> (thanks @kammce)
  • Fix destination unit creation in inverse
  • fix(docs): typo in a file name fixed
  • fix(example): text formatting fixed for glide_computer documentation
  • 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)
  • test: quantity character concepts tests for quantities added
  • test: duplicated dimensionless tests removed
  • test: additional concepts tests for quantity spec 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: clang-19 issues mentioned in a compiler support table
  • docs: "Introducing absolute quantities" blog post added
  • docs: relative path removed from the contributing guide
  • docs: examples updated and deprecated tags generation replaced with modern usage
  • docs: compiler explorer links replaced with buttons
  • docs: "Installation and Usage" cleanup
  • docs: "Introduction" chapter improved
  • docs: "Quick Start" Improved
  • docs: "Interface Introduction" improved
  • docs: "Systems of Quantities" chapter improved
  • docs: "Concepts" chapter improved
  • docs: README updated
  • docs: "Install as a Dependency" added to README
  • docs: tutorials section added
  • docs: info about kind_of<dimensionless> units added
  • docs: adjust formatting in temperature printing function for better alignment
  • docs: README visually improved
  • docs: 2 new chapters added to README
  • docs: link to mp-units in ConanCenter added to README
  • docs: "Support the Project" added to README
  • docs: enhance testimonials section for clarity and inclusivity
  • docs: clarify flowchart labels for quantity addition and differences
  • docs: CONTRIBUTORS.md added
  • docs: examples reworked
  • docs: "Cheat Sheet" added
  • docs: "Auto-scaling of a quantity" chapter added
  • docs(ref): document most of mp_units.core (thanks @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: clang-20 enabled in CI
  • build: clang-19 support removed from conanfile.py
  • build: clang-20.1 workaround added to package_info
  • build: update dependencies to gsl-lite/1.0.1, ms-gsl/4.2.0, fmt/12.1.0, catch2/3.11.0, cmake/4.2.1
  • build: suppress warnings for gcc-12 in conanfile
  • build: switch freestanding CI to clang-20
  • build: gcc installation step is now mandatory for all gcc versions
  • build: import_std set to False by default
  • build: wg21-linear_algebra dependency removed
  • build: check_libcxx_in_use improved
  • build: Gitpod support removed
  • build: CodeSpaces support added
  • build: CMake switched to a new gsl-lite target
  • build: clang-21 added to check_all.sh
  • build: gcc-15 enabled in check_all.sh
  • build: explicit_this enabled for AppleClang 17 and MSVC 19.32 (thanks @alex-tee)
  • build: add build: add INSTALL option to cmake option to cmake (thanks @alex-tee)
  • build: projectPrefix CMake variable removed
  • build: MP_UNITS_BUILD_AS_SYSTEM_HEADERS removed
  • build: warnings.cmake refactored to use CMAKE_COMPILE_WARNING_AS_ERROR
  • build: CMAKE_COMPILE_WARNING_AS_ERROR set in conanfile
  • build: PROJECT_IS_TOP_LEVEL used in ensure_entry_point
  • build: Various cleanup (thanks @HazardyKnusperkeks)
  • build: CMake config file variables handling fixed
  • build: dereferencing CMake variables in if() conditions is not needed
  • build: improved setting of MP_UNITS_BUILD_CXX_MODULES for test_package
  • build: MP_UNITS_BUILD_CXX_MODULES will now be always provided by Conan
  • build: CMake CI should run the cmake executable provided by Conan
  • build: C++23 enabled for test_package when import std is ON
  • build: all target_compile_definitions aggregated in one place
  • ci: CI matrix generation added (thanks @burnpanck)
  • ci: import_std now checks if at least C++23 is being used
  • ci: GitHub actions improved
  • ci: dependency review GitHub action added
  • ci: clang-21 support added
  • ci: update dependency review configuration
  • ci: housekeeping after release step fixed in ci-conan
  • ci: the macOS-13 based runner images are retired in GitHub
  • ci: old 'VISUAL' decendant of Conan 1.x removed from CMake CI
  • perf: caching of the results of heavy consteval functions execution added
  • perf: expr_projectable concept removed to improve compilation performance
  • style: pre-commit tools updated
  • style: markdownlint rules updated
  • style: MD036 added to .markdownlint.json
  • chore: add issue templates for bug reports, documentation issues, and feature requests
  • chore: add usage experience issue template and a chapter in README
  • chore: PR template added
  • chore: FUNDING.yml file added