[Release] 2.0.0: version bump, changelog, release notes, README incremental-sessions section - #31
Conversation
…mental-sessions section. VERSION and every pinned version reference move to 2.0.0; CHANGELOG and docs/releases/2.0.0.md record the incremental-sessions release; the root README gains an Incremental sessions section with Swift and ECMAScript examples and a pointer to the sessions-and-deltas contract. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The usage section shows Document.parse on every platform; the session section now does the same — Kotlin (AutoCloseable use) and C (borrowed committed view, caller-owned delta) join the Swift and ECMAScript examples. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PR performance and binary-size diff
Baseline unavailable for exact PR base Performance
Binary size
Size deltas are deterministic for identical build inputs. Performance deltas compare separate hosted runners and should be treated as directional evidence, not a pass/fail threshold. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f41eadc7a4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…erate-shape bounds. Review finding: README/notes claimed per-commit cost "independent of document size" unconditionally, stronger than the contract's degraded cases. Measured at 4x size steps against Document.parse of the same text: unclosed-fence edits are linear at ~1.06x a one-shot parse; one-enormous-paragraph edits are linear at 2-8 MiB (~3-4x a one-shot parse; the 7x at 256KiB->1MiB is a cache-tier transition, not asymptotic); definition churn re-resolving every reference is linear at ~3x. All three are O(document) per commit — the constant over a bare parse is adoption, delta recording, and table upkeep over the reparsed material. README, CHANGELOG, and the 2.0.0 notes now say "proportional to the damaged region — for typical documents, independent of total document size" with the degraded shapes named and bounded by a small multiple of one full parse; the contract's cost-model bullet states the small-constant-multiple bound explicitly instead of a literal "one full parse". Measurements recorded in the plan doc. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review finding: README, CHANGELOG, and the 2.0.0 notes described the delta as added/removed/changed only, but the contract exposes a fourth disjoint array — ancestors whose revision bubbled because a descendant changed. A mirror built from the three-set overview keeps stale ancestor revisions after descendant-only edits, so every overview now names bubbled and states the four-set mirror recipe. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…roadmap. Forced-full-path measurements on the degenerate shapes: routing whole-document restarts through commit_full saves 5% (enormous paragraph) to 31% (definition churn); the dominant term in both paths is adoption pairing — the inherent cost of keeping node identity across a whole-document reparse. Roadmap: label-scoped dependent narrowing, fused splice walks, inline-level damage. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Refreshed over the merged optimization chain (#32–#35) in bb3b7fa: main merged in (plan doc reconciled — the pre-release measurement record now reflects that all three degenerate-cost items shipped as release blockers), CHANGELOG dated to the tag day, Full host release dry run passed on this head: version contract, C staging, Swift source archive + consumer, npm staging with the packed consumer, Maven staging + ephemeral signing + every Gradle/Maven consumer, publication audit, and checksums. Correctness (104) green locally. After merge: |
Release preparation for 2.0.0 per docs/releasing.md — a normal PR into main; publishing happens afterwards by pushing the signed protected tag
v2.0.0on the merged commit.What changed
VERSIONand every pinned version reference move to 2.0.0: the C version header (MARKDOWN_CORE_VERSION2<<16, version string), root and package READMEs, the npm manifest, the Kotlin consumer fixtures, and the Maven consumer POM.pnpm release:check-versionpasses.CHANGELOG.mdgains the 2.0.0 section anddocs/releases/2.0.0.mdcarries the curated notes — consumer-visible only: incremental sessions on every platform, snapshots with structural sharing, deltas over stableMarkupIDs, dump-equality with one-shot parses, session footnote queries, transactional commits, no process-global parser state, and the sessions-and-deltas contract.docs/specs/sessions-and-deltas.md) — 2.0.0's headline feature was otherwise undocumented there.The CHANGELOG/notes date is 2026-07-19; if the tag lands on a later day, the date should be touched up before tagging.
Preparation evidence
Full host release dry run passed locally on this change (version contract, C staging, Swift source archive, npm staging, Maven staging + ephemeral signing + all Gradle/Maven consumers, publication audit, checksums), and the branch now sits on main with #29 + #30 merged. The tag-triggered release workflow re-runs the complete suite from its own snapshot.
🤖 Generated with Claude Code