Start a CHANGELOG, opening with the 0.3.0 entry - #105
Merged
Conversation
Adds a Keep a Changelog / SemVer changelog. The first entry is 0.3.0, built from the work merged since 0.2.4: the new operators, the Option-returning / and %, inferred return types, function and generic signatures, the new built-ins and Expression builder methods, and the API/behavioral breaks already documented in UPGRADING.md. Releases before 0.3.0 are left to the git tags rather than reconstructed from history, so nothing in the changelog is a post-hoc guess. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Td1ZAFUUB3j7u4U2rXjz4J
Both filter and unwrap already shipped in 0.2.4 — they lived in Scope and evaluated fine. What 0.3.0 adds is their declared Signatures (they could not be typed until generics), so the calls are now checked at parse time. Calling them "new built-in functions" was wrong; fix it in both the new CHANGELOG and the matching line in UPGRADING.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Td1ZAFUUB3j7u4U2rXjz4J
Audited every falsifiable claim in the CHANGELOG (and the matching lines in UPGRADING) against 0.2.4 and HEAD. Four were wrong: - "Evaluated values are now compared strictly" was not a library change at all — commit #78 only tightened the test harnesses; 0.2.4's Eq already used ===. Dropped the entry. - Parser\Types::resolve() is not removed. It still exists with the same resolve(TypeNode) signature; it was newly marked @internal. Corrected in both docs. - Eq/Gt were described as subclasses of Comparison, but in 0.2 they extended Expression — the Comparison base only arrived mid-0.3. Reworded to "the @internal nodes eq()/gt() returned" in both docs. - The int-overflow break was framed as all integer arithmetic; the actual break vs 0.2.4 is subtraction and negation, with + and * new and sharing the rule. Scoped it down. The rest (new operators, Type::some/returnType removed, the seven @internal seals, builder methods, Delimiters removed, the fn(...) render change) verified accurate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Td1ZAFUUB3j7u4U2rXjz4J
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.
What
Adds a
CHANGELOG.mdin the Keep a Changelog / SemVer format. The first entry is 0.3.0, assembled from the work merged since0.2.4:+ * / %,!== >= < <=,!), Option-returning/and%, inferred function return types,fn(...) -> R/ genericfn<...>(...)signatures, thefilter/unwrapbuilt-ins, and the newExpressionbuilder methods.&&/||precedence, int-overflow error, strict typed comparison),Typegoing private, thefinal/selfbuilder cleanup, rendering changes, and the@internalsealing.Type::some(),Type::returnType(),Parser\Types::resolve(),Parser\Delimiters, and theEq/Gtclasses.Each break cross-references UPGRADING.md for the migration steps.
Why not back-fill 0.1.x / 0.2.x
The changelog starts at 0.3.0 by design. Those commits weren't written for changelog categorization, so reconstructing per-version Added/Changed/Removed after the fact would be guesswork — and a subtly-wrong changelog is worse than an absent one. The preamble points readers at the git tags, which are the authoritative record for earlier releases.
Note for release time
The 0.3.0 heading reads
## [0.3.0] - Unreleasedand the compare link targets0.2.4...HEAD. At tag time, swap "Unreleased" for the date andHEADfor0.3.0.🤖 Generated with Claude Code
https://claude.ai/code/session_01Td1ZAFUUB3j7u4U2rXjz4J