Skip to content

Record the behaviour changes since 1.4.0, and link the docs that exist - #741

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
docs/behaviour-changes
Aug 5, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
docs/behaviour-changes

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

AGENTS.md says a published API that returns the wrong answer is a bug with users rather than an asset — "say so in the changelog, and change it". There was nowhere to say it. CHANGELOG.md is one line pointing at the site, and 61 commits of behaviour changes have landed since v1.4.0 with the reasoning living only in commit messages, which is not where anyone looks when their build breaks.

BREAKING-CHANGES.md is that record.

What is in it

Every entry gives the value on 1.4.0 and the value now, measured on a build of each rather than read off the diff, with the issue and the PR it came from. Entries are marked silent where the call still succeeds and quietly returns something else, since those are the ones that cost a reader an afternoon:

was is
exp(x) exp * x e ^ x
log10(100) log ^ 10 * 100 2
(Real)(-7) % 3 -1 2
sqrt(12) sqrt(12) 2 * sqrt(3), wherever a radical is built
Simplify of a cancelling quotient a Divf a Providedf
(x - x = 0).Solve(x) { 0 } CC
x^5 + 3x + 1 28 roots 5
lim x->0 (1+x)^(1/x) 1 e
Minusf.Minuend on a - b b a

Organised by surface — types, parsing, printing, numbers, remainder, simplification, solving, limits, calculus, compilation — so a reader arrives with a symptom and leaves with the reason.

Measuring both sides was worth it

Four entries changed once measured against a v1.4.0 build instead of trusting the commit messages: arccos(-1/2) prints 2/3 * pi, sec(t)^2 - tan(t)^2 comes back 1 provided not cos(t) = 0 rather than 1, and the free parameter an under-determined system answers with arrives unsimplified.

The substantial one: int x(x^2+x+1)^2 and int x^2(x^2+1)^2 were correct antiderivatives on 1.4.0 and are unevaluated today. Differentiating each back on a 1.4.0 build gives the integrand exactly at every point tried. They reached an answer through the integration-by-parts re-entry that overflowed the stack on int x*ln(x), so bounding that closed their route as well. That is a loss, not a fix, and it is written down as one rather than filed under improvements.

Two stale claims found while linking the docs

AGENTS.md linked almost nothing, so this also adds a Where things are written down section. Wiring it up surfaced two things that were not true:

  • Sources/Tests/UnitTests/Common/IssueRegressionTest.cs, which AGENTS.md named as the home for issue regressions, does not exist. They live in SimplificationRegressionTest, SolverRegressionTest and NumericsRegressionTest, with AlreadyFixedIssuesTest for the separate case of an open issue that already works.
  • Docs/Contributing/RS1617Errors.md tells you to add public members to a PublicApi.*.txt. Neither those files nor the analyzer that required them are in the tree any more. The new section says not to follow it and suggests deleting or rewriting it — happy to do that here if you would rather it went now.

Measured

Both columns come from console harnesses built against v1.4.0 and against 40ce1093, run side by side. Every relative link in the four changed files resolves to a real path, checked by script.

Docs only — no code changed, so no suite was run.

🤖 Generated with Claude Code

AGENTS.md says a published API that returns the wrong answer is a bug with
users rather than an asset -- "say so in the changelog, and change it". There
was nowhere to say it: CHANGELOG.md is one line pointing at the site, and 61
commits of behaviour changes have landed since v1.4.0 with the reasoning living
only in commit messages nobody hits when their build breaks.

BREAKING-CHANGES.md is that record. Every entry gives the value on 1.4.0 and the
value now, measured on a build of each rather than read off the diff, with the
issue and the PR. Entries are marked silent where the call still succeeds and
quietly returns something else, which are the ones that cost a reader time:
`exp(x)` was the product `exp * x` and is now `e^x`, `Real`'s `-7 % 3` was -1 and
is 2, `sqrt(12)` is now reduced wherever a radical is built, `Simplify` of a
cancelling quotient returns a Providedf where it returned a Divf, and
`x^5 + 3x + 1` came back with 28 roots and comes back with 5.

Measuring both sides rather than trusting the commit messages changed four
entries. `arccos(-1/2)` prints `2/3 * pi`, `sec(t)^2 - tan(t)^2` comes back
`1 provided not cos(t) = 0` rather than 1, and the free parameter a
under-determined system answers with arrives unsimplified. More substantially,
`int x(x^2+x+1)^2` and `int x^2(x^2+1)^2` were correct antiderivatives on 1.4.0
and are unevaluated today -- they reached an answer through the by-parts
re-entry that overflowed the stack on `int x*ln(x)`, so bounding that closed
their route too. That is a loss and is written down as one.

Two stale claims in AGENTS.md turned up while linking the docs it never pointed
at. `Sources/Tests/UnitTests/Common/IssueRegressionTest.cs` does not exist; the
regressions live in SimplificationRegressionTest, SolverRegressionTest and
NumericsRegressionTest, with AlreadyFixedIssuesTest for the separate case of an
open issue that already works. And Docs/Contributing/RS1617Errors.md tells you
to add public members to a PublicApi.*.txt, when neither those files nor the
analyzer that wanted them are in the tree any more; the new section says not to
follow it.

Docs only -- no code changed, so no suite was run.
@Rafael-SOWNet Rafael-SOWNet changed the title Record the behaviour changes since 1.4.0, and link the docs that exist (#740) Record the behaviour changes since 1.4.0, and link the docs that exist Aug 5, 2026
@Rafael-SOWNet
Rafael-SOWNet merged commit 61af68a into master Aug 5, 2026
24 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the docs/behaviour-changes branch August 5, 2026 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant