This project follows SemVer with the following policy:
Version 3.0 is intended to be the last foreseeable broad API reset. That means new JDK releases should normally enter the 3.x line through additive, runtime-gated minor releases; it is not a promise to retain an unsound API or to avoid a major version after a genuinely incompatible upstream change.
3.xreleases preserve the documented public API unless a safety fix makes a narrow break unavoidable.- Breaking public API changes require a new major version and migration notes.
- New JVMTI/JNI helpers are added in minor releases with clear changelog notes.
- Unsafe APIs are never silently changed; safety assumptions are documented explicitly.
- Feature-gated helper modules may grow faster, but feature behavior is still documented.
- New JDK table tails, reclaimed slots, and capability bits must be runtime-gated before access.
- Version 3.0 has an MSRV of Rust 1.85 and uses Edition 2024. Any 3.x MSRV increase is a documented minor-release change, not an incidental CI update.
- Zero third-party crates across all features and development targets is part of the 3.x product contract. A future dependency requires an explicit changelog entry and supply-chain review.
- Every 3.x release is compared with the tagged 3.0.0 full public-signature and compile-tested API baseline. A name-only symbol list is insufficient. Predictable JDK evolution is not grounds for a breaking callback redesign.
- Every raw table slot must remain mechanically classified as high-level wrapped, reserved, or deliberately raw-only. New fixed-signature upstream operations normally receive additive high-level wrappers in a 3.x minor.
- Native leases and parser resource budgets remain encoded in owning or bounded APIs; convenience methods must not bypass those contracts.
Version 2.3.x is the final source-compatible line for the old callback trait.
Version 3.0 intentionally removes reduced callbacks, *_with_jvmti callbacks,
and unsound raw ownership contracts. Its complete upgrade contract is
Migrating From 2.x to 3.0.
API review goals before each minor release:
- Public types are minimal, stable, and well-documented.
- No unsound
SendorSyncbehavior. - All FFI allocations have clear ownership and cleanup.
- Examples and docs match the released crate name and feature flags.
The definitive 3.x release and maintenance gates are in
Definitive 3.0 Release Gates. Adding a newer
JDK is a documented minor release under Compatibility
“Next JDK Policy”, not an inferred bump from master.