Name the next release 2.1.0, with the performance pair and the #746 tier note - #914
Merged
Conversation
Three things a release needs, and two of them are what 2.0.0 skipped. The version. Version and FileVersion go to 2.1.0 while AssemblyVersion stays 2.0.0.0, which is what the comment beside it asks for: the assembly is strong-named, so every AssemblyVersion change breaks binding for a consumer without a redirect, and holding it makes each 2.x a drop-in. Not a patch: the sixteen commits since the tag change answers, withdraw two, and reserve a word. The performance pair. v2.0.0 (the 1691st) and the candidate (the 1707th), measured minutes apart on one machine in one session, 18 benchmarks each. No regression: the largest real move is SolveMedium at +4.6%, the rest inside +/-3%, and Derivate, EvalTrig and EvalTrigPrecise are byte-identical in allocation. It also corrects the pair above it, which reported SimplifyEasy at +8.7% and blamed guards calling Evaled inside a pattern's when clause, asking for a measurement of its own before more were written that way. Six more of exactly that shape have been added since -- #887, #892, #881, #902, #897 -- and SimplifyEasy is +2.1% here with allocation moving 0.5%. If the guards were the cause the row would have moved further and allocation would have followed, since Evaled allocates on its first call per node. So the +8.7% was mostly the machine, the earlier attribution was wrong, and the action item it raised is discharged. The changelog said the wrong thing about which version shipped what. All thirteen entries added after the tag sat under "2.0.0 -- since 1.4.0", which tells a reader they are in the package they already have -- including three I had misremembered as pre-tag: the Compile exception, the logarithm division and the arctan/arccotan guard. They now sit under "2.1.0 -- since 2.0.0" with their own glance table. Which entries those are was derived by diffing the file against the tag rather than judged by eye, and the section and row counts were checked before and after: 20 rows and 13 sections moved, nothing duplicated, nothing dropped. Suite 6488 passed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release preparation for 2.1.0, carrying the two checklist items 2.0.0 shipped without.
The version
VersionandFileVersiongo to 2.1.0;AssemblyVersionstays2.0.0.0, which is what the commentbeside it asks for — the assembly is strong-named, so every
AssemblyVersionchange breaks binding for aconsumer without a redirect, and holding it makes each 2.x a drop-in replacement.
Not a patch. The sixteen commits since the tag change answers, withdraw two deliberately, and reserve a
word (
NaN).The performance pair
v2.0.0(the 1691st commit) against the candidate (the 1707th), 18 benchmarks each, measured minutesapart on one machine in one session — because columns from different hardware cannot be read as a ratio,
which is what the top of that file has always said.
No regression. The largest real move is
SolveMediumat +4.6%; the rest sits inside ±3%. Allocationis flat, and
Derivate,EvalTrigandEvalTrigPreciseare byte-identical.It corrects the pair above it
That one reported
SimplifyEasyat +8.7%, attributed it to guards callingEvaledinside a pattern'swhenclause, and asked for "a measurement of its own before more guards are written that way".Six more guards of exactly that shape have landed since — #887's interval tests, #892's zero test, #881's
sign read, #902's positivity check, #897's sort guard.
SimplifyEasyis +2.1% here, and itsallocation moves 0.5%. If the guards were the cause, the row should have moved further and allocation
should have followed, since
Evaledallocates on its first call per node. Neither happened.So the +8.7% was mostly the machine, the attribution in that section was wrong, and the action item it
raised is discharged — the pattern is not measurably expensive at this scale. Recorded in the file, since
the wrong reading is as instructive as the number.
The changelog said the wrong thing about which version shipped what
All thirteen entries added after the tag sat under
## 2.0.0 — since 1.4.0, which tells a reader they arein the package they already have. They now sit under
## 2.1.0 — since 2.0.0with their own glance table.Three of them I had misremembered as pre-tag — the
Compileexception (#894), the logarithm division(#890) and the
arctan/arccotanguard (#887) — which is why the split was derived by diffing the fileagainst
v2.0.0rather than judged by eye. Section and row counts were checked before and after: 20rows and 13 sections moved, nothing duplicated, nothing dropped. My first attempt at the move did
duplicate content — 76 sections became 192, because the span of each section ran to the next
##andswallowed the
###sections between — which the count caught and a backup undid.The #746 tier note
Posted as a comment on #746, and it says
plainly that 2.1.0 advances no tier. Against v1.0's required infrastructure: the polynomial layer
untouched, the canonical-form specification untouched, pattern-matching-as-data untouched — this release
added
switcharms — and assumptions-travelling-with-a-node untouched. The one item that moved is thecorpus-and-harness requirement.
Of the three standing conditions, two are met (performance measured; correctness coverage grown) and one
is unaffected (no package boundary moved).
The note also carries an argument for the roadmap: three separate pieces of work this session stopped at
the same wall — #902's two lost limits, #721/#890's domain contradiction, and the
ln(a) + ln(b)guard— and each is a guard-versus-coverage trade that exists only because an assumption cannot be attached to
an expression and carried. Three independent hits is a stronger case for scheduling v1.0's metadata item
early than any one of them is alone.
Checklist
BREAKING-CHANGES.mdentry per changed answer, measured on a build of eachdocsamplesclean; the Solvers page was updated when #901 shippedWhat I have not done: tagged, packed or published anything. This is the preparation; the release itself
is yours.