Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand All @@ -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

Expand Down
14 changes: 7 additions & 7 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
4 changes: 2 additions & 2 deletions include/formula-cpp/version.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
4 changes: 2 additions & 2 deletions test/runtime_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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]")
Expand Down
Loading