Skip to content

Release v1.2.0 - #22

Merged
josephjohncox merged 1 commit into
mainfrom
release/1.2.0
Jul 22, 2026
Merged

Release v1.2.0#22
josephjohncox merged 1 commit into
mainfrom
release/1.2.0

Conversation

@josephjohncox

Copy link
Copy Markdown
Owner

Summary

Release 1.2.0 — a compatible feature release cutting the perf work merged in #19/#20/#21. Bumps pyproject.toml to 1.2.0, regenerates uv.lock, adds docs/releases/1.2.0.md, points the README release-notes link at it, extends the versioning/post-release docs, and moves the pinned version contracts (test_installed_version_matches_project_metadata, test_release_tag_contract_tracks_the_releasable_major_version) to 1.2.0.

The stable 1.0.0/1.1.0/1.1.1 APIs are unchanged; existing applications require no migration.

What ships in 1.2.0

  • Selectable lockingsynchronized= on RangeSet / create_range_set / BackendRegistry.create (+ RangeSet.synchronized). Default True keeps full thread-safety; False opts out of internal synchronization under a caller-owned contract.
  • Fully-native scalar mutatorsRangeSet.release(span) -> int and reserve(span, *, require_covered=False) -> int, returning only the changed length, geometry-consistent with add/discard, guarded to authoritative geometry-only sets (no silent fallback).
  • Faster add/discard — validation-free native result construction and cached bound native mutators on the cpp_boundary path; MutationResult/Span/IntervalResult unchanged.
  • New surfaceBackendAdapter.supports_scalar_delta/release_delta_length/reserve_delta_length; RangeSetProtocol.release/.reserve; native IntervalManager.release_delta_length/reserve_delta_length.
  • Behavior-preserving perf — geometry-only snapshot cache; lease projection + O(1) fence-lookup caches.

Scoped cpp_boundary evidence (Apple M5 Max): scalar release/reserve ~4.3M/s synchronized, ~5.0M/s unsynchronized; add/discard ~1.5–1.7M/s; raw-native floor ~7.9M/s (was ~0.9M/s for 1.1.1 add/discard). Not a universal claim — see docs/performance.md.

Pre-release gate (run locally on this branch)

  • uv lock --check clean; ruff check + format clean; mypy treemendous clean.
  • tests/docs + tests/packaging/test_artifact_policy.py: 73 passed (version/notes/link contracts updated).
  • uv build → wheel + sdist; scripts.verify_artifact_contents dist rc=0 (docs/releases/1.2.0.md present in sdist); twine check --strict PASSED for wheel and sdist.
  • Full suite on the same tree earlier: 1402 passed, 21 skipped.

Publish

On merge, publish a GitHub Release with tag v1.2.0 targeting the merge commit. The release: published workflow re-audits, builds all platform wheels + sdist, runs isolated wheel/sdist smokes and twine check --strict, runs the exact-batch evidence against the immutable pre-promotion commit, and publishes once via the single OIDC trusted publisher.

Compatible feature release: selectable RangeSet locking (synchronized),
fully-native scalar release/reserve mutators, faster native add/discard via
trusted result construction, and behavior-preserving snapshot/lease caching.
Bumps pyproject version, regenerates uv.lock, adds docs/releases/1.2.0.md, and
updates the version/release-notes contracts.
@josephjohncox
josephjohncox merged commit 5ddd6ff into main Jul 22, 2026
16 checks passed
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