diff --git a/CHANGELOG.md b/CHANGELOG.md index e9e43f44..2659050a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,23 @@ # Changelog Notable changes to formula-cpp, in the form [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) -describes. 0.1.0 is the first release. The public API may still change before 1.0: a minor release -may break it, and each such change is recorded here. +describes. The public API may still change before 1.0: a minor release may break it, and each such +change is recorded here. ## [Unreleased] +## [0.2.0] - 2026-09-30 + +The second release. It adds calculations -- quantities defined by formulas, with a dependency graph +known at compile time -- and worksheets that recalculate only what a change reaches; decimals in +traces, rendered formulas and `std::format`; base dimensions an application declares, such as a +currency; and power, energy and Fahrenheit units. A value the exact layer cannot hold is now written +only as the correctly rounded decimal its formula declares, proved with integer arithmetic: an +opaque operation's output through `rounded_output`, and the new logarithms and exponentials, which +are exact where the value is rational. Least squares reaches raw observations: a line with R² and +the number of points, and a regression on up to eight regressors that refuses a singular design. +Some changes break code written for 0.1.0; each is listed under Changed. + ### Added - `dim::Power`, energy per time, and the units `unit::Watt`, `unit::Kilowatt`, `unit::WattHour` and @@ -544,5 +556,6 @@ are one type; `docs/quantities.md` sets out what each spelling costs. for 205.5 g, and so were a curve over it and a value read off that curve. Each now reads in the series' unit, `411/2 g`, when that unit has a symbol and no offset. -[Unreleased]: https://github.com/LASTRADA-Software/formula-cpp/compare/v0.1.0...HEAD +[Unreleased]: https://github.com/LASTRADA-Software/formula-cpp/compare/v0.2.0...HEAD +[0.2.0]: https://github.com/LASTRADA-Software/formula-cpp/releases/tag/v0.2.0 [0.1.0]: https://github.com/LASTRADA-Software/formula-cpp/releases/tag/v0.1.0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 10f932fe..36754eea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.23) # silently becomes 0.0.0 and every find_package(formula-cpp 0.1.0) then fails # with an error the git tag does not explain. project(formula-cpp - VERSION 0.1.0 + VERSION 0.2.0 DESCRIPTION "Declarative, traceable, self-documenting formulas for C++23" HOMEPAGE_URL "https://github.com/LASTRADA-Software/formula-cpp" LANGUAGES CXX) diff --git a/README.md b/README.md index f0b48f76..ff00f452 100644 --- a/README.md +++ b/README.md @@ -278,7 +278,7 @@ Each guide has a matching runnable program under `examples/`. ## Status -0.1.0 is the first release ([CHANGELOG](CHANGELOG.md)). Usable for what is listed as shipped, +0.2.0 is the latest release ([CHANGELOG](CHANGELOG.md)). Usable for what is listed as shipped, and still growing. The public API may change until 1.0. | Area | State | @@ -297,13 +297,13 @@ and still growing. The public API may change until 1.0. | Statistics, precision limits, outlier rejection | shipped | | Other samples and other tests: records, context, lineage | shipped | | Opaque operations (least squares), bounded retry | shipped | -| Values the exact layer cannot hold, reported at a declared precision (`rounded_output`) | next release | -| Logarithms and exponentials, rounded exactly to declared places | next release | -| Least squares over observations, with R², and several regressors | next release | -| Power, energy and Fahrenheit units | next release | -| Named base dimensions such as money | next release | -| Decimals in traces, rendered formulas and `std::format` | next release | -| Calculations: definitions, dependency graph, incremental worksheets | next release | +| Values the exact layer cannot hold, reported at a declared precision (`rounded_output`) | shipped | +| Logarithms and exponentials, rounded exactly to declared places | shipped | +| Least squares over observations, with R², and several regressors | shipped | +| Power, energy and Fahrenheit units | shipped | +| Named base dimensions such as money | shipped | +| Decimals in traces, rendered formulas and `std::format` | shipped | +| Calculations: definitions, dependency graph, incremental worksheets | shipped | ## Requirements diff --git a/docs/index.md b/docs/index.md index 60f70d01..8a812e38 100644 --- a/docs/index.md +++ b/docs/index.md @@ -113,12 +113,12 @@ Usable for what is listed as shipped, and still growing. The public API may chan | Statistics, precision limits, outlier rejection | shipped | | Other samples and other tests: records, context, lineage | shipped | | Opaque operations (least squares), bounded retry | shipped | -| Values the exact layer cannot hold, reported at a declared precision (`rounded_output`) | next release | -| Logarithms and exponentials, rounded exactly to declared places | next release | -| Least squares over observations, with R², and several regressors | next release | -| Power, energy and Fahrenheit units | next release | -| Named base dimensions such as money | next release | -| Decimals in traces, rendered formulas and `std::format` | next release | -| Calculations: definitions, dependency graph, incremental worksheets | next release | +| Values the exact layer cannot hold, reported at a declared precision (`rounded_output`) | shipped | +| Logarithms and exponentials, rounded exactly to declared places | shipped | +| Least squares over observations, with R², and several regressors | shipped | +| Power, energy and Fahrenheit units | shipped | +| Named base dimensions such as money | shipped | +| Decimals in traces, rendered formulas and `std::format` | shipped | +| Calculations: definitions, dependency graph, incremental worksheets | shipped | Apache-2.0. Source at [github.com/LASTRADA-Software/formula-cpp](https://github.com/LASTRADA-Software/formula-cpp). diff --git a/include/formula-cpp/version.hpp b/include/formula-cpp/version.hpp index 531ef31a..63e9485c 100644 --- a/include/formula-cpp/version.hpp +++ b/include/formula-cpp/version.hpp @@ -10,8 +10,8 @@ /// The major version -- bumped for a breaking change. #define FORMULA_VERSION_MAJOR 0 /// The minor version -- bumped for a compatible feature addition. -#define FORMULA_VERSION_MINOR 1 +#define FORMULA_VERSION_MINOR 2 /// The patch version -- bumped for a compatible fix. #define FORMULA_VERSION_PATCH 0 /// The full version, as a string literal. -#define FORMULA_VERSION_STRING "0.1.0" +#define FORMULA_VERSION_STRING "0.2.0" diff --git a/test/runtime_tests.cpp b/test/runtime_tests.cpp index 9d65f50f..98f84c28 100644 --- a/test/runtime_tests.cpp +++ b/test/runtime_tests.cpp @@ -10,9 +10,9 @@ TEST_CASE("version macros agree with each other", "[version]") { CHECK(FORMULA_VERSION_MAJOR == 0); - CHECK(FORMULA_VERSION_MINOR == 1); + CHECK(FORMULA_VERSION_MINOR == 2); CHECK(FORMULA_VERSION_PATCH == 0); - CHECK(std::string_view { FORMULA_VERSION_STRING } == "0.1.0"); + CHECK(std::string_view { FORMULA_VERSION_STRING } == "0.2.0"); } TEST_CASE("quantity types survive a translation unit boundary", "[linkage]")