Bump version to 1.0.0#59
Merged
Merged
Conversation
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.
This is the 1.0.0 release, closing out the roadmap laid out in #46. It bundles no behavioral changes of its own beyond the version bump — everything below already landed on
masterthrough the 11 preceding PRs.What's in 1.0.0
Documentation
produce()/drafts, serialization, observ integration), and an internals section covering the list-diff algorithm, proxy design, and pointer semantics (Add MkDocs documentation site, internals section, and rewritten README #49)Typing
tyin CI,OperationTypedDicts for patch shapes,py.typedmarker (Add MkDocs documentation site, internals section, and rewritten README #49, Fully implement modern type hinting, checked with ty in CI #50, Fix ty failure on master from the #50/#51 merge crossover #52)Test hardening
CI & benchmarking
Performance
produce()hot-path redesign: lazy path recording and epoch-based location memoization instead of eagerPointerallocation on every write (Memoize proxy locations in produce() with epoch invalidation #54)Benchmarks: 1.0.0 vs 0.3.12
Median times from 3 interleaved local runs per side (
PYTHONHASHSEED=0, GC disabled), same methodology as CI's benchmark guard.list_diff_medium[0.1](Myers vs DP)list_diff_completely_differentdict_diff_flat_500_keysset_diff_1000_elementsproduce_deep_leaf_writes[copy]produce_in_place_vs_copy_dictdiff_dict_many_mutationsapply_dict_many_opsThe list-diff rewrite dominates: cases with large or scattered edit distance see order-of-magnitude wins, since the DP table's O(m·n) cost no longer applies. A handful of
list_diff_similar_*benchmarks (many small localized edits already handled well by the prefix/suffix trim) show a mild regression instead — up to +19% — from Myers' bookkeeping overhead on inputs where the old approach had little left to do; this sits within the CI guard's documented noise floor (10–30% run-to-run) and wasn't worth chasing further given the wins elsewhere. Everything else lands within a few percent either way.Verification
uv run pytest— 100% coverageuv run ruff check/ruff format --checkuv run ty checkmkdocs build— warning-freeNext step
Once merged, tag the merge commit
v1.0.0to trigger the release/publish pipeline (publishjob in CI, gated onrefs/tags/v*).Generated by Claude Code