Skip to content

[#60] Exercise packaged and JPMS hashing consumers through Java 25 - #123

Merged
peter-lawrey-admin merged 7 commits into
feature/60-explicit-jpms-modulefrom
feature/60-module-path-hardening
Sep 13, 2026
Merged

peter-lawrey-admin merged 7 commits into
feature/60-explicit-jpms-modulefrom
feature/60-module-path-hardening

Conversation

@peter-lawrey

@peter-lawrey peter-lawrey commented Aug 21, 2026 •

Copy link
Copy Markdown
Member

Exercise packaged class-path and JPMS hashing consumers, preserving the #122 descriptor foundation and the existing direct DirectBuffer.address() implementation. The evidence covers Java 8 class-path use and Java 11-25 named-module consumers; it does not establish Java 9/10 execution or jlink support.

Head: 07551444fe628db618532666b4d6f19d0d60c39a. Contains current develop at f06d8ecc3e8887a9d53546c1e69cdaa9b76dadb2. The declared parent remains #122, whose current head 470fa6c7be0d1428656c6317a1b0f45ea066a5cc is an ancestor. Deliver that prerequisite separately first.

Both LongHashFunctionTest and LongTupleHashFunctionTest now put distinct non-zero guards around the payload. After checking the whole-remaining-buffer overload, they clear position/limit to cover the full capacity and request only (1, len). They assert the hash and unchanged full cursor, then restore the payload window for the whole-buffer byte-order assertion. Direct-buffer-specific mutations that substitute position()/remaining() for the supplied range fail both regression groups; the unmodified implementation passes.

Retain named-module execution, direct/heap equivalence, native-order integer-array oracles, unchanged cursors, packaged-stub exclusion and required class-path/module exports. No hashing algorithm or seed semantics change.

Validation on 12 September 2026, zero retries:

  • Java 8u502 clean verify: 14,901 library test cases, 12 skips, no failures/errors; all three packaged-JAR checks and the five ordinary consumer tests pass. The Java-11-targeted module consumer is correctly skipped.
  • OpenJDK 11 clean verify: 14,901 library test cases in each configured string mode, five/eight skips respectively, no failures/errors; all three packaged-JAR checks and both Invoker consumers pass.
  • The Java-11-built JAR with SHA-256 505caa4251142cfddf67118e52c53df55b1fe5c7399e1bb7a92a2c3cda3eb549 passed a separate all-25-factory direct-range consumer on class paths using Java 8, 11, 17, 21 and 25, and the committed named-module consumer on Java 11, 17, 21 and 25. Java 25 controls omitting the required exports fail with IllegalAccessError in both modes. The receipt links the JAR to the tested source/diff and records each actual invocation; this is not reuse of an older publication's evidence.

Readiness: the documented -Pquality verify attempt remains blocked resolving net.openhft:chronicle-quality-rules:1.27.0-SNAPSHOT; it is not a passed quality gate. The new-head Actions run 34697896588 passed both 14,901-case library test modes, packaged-JAR checks and both consumers, then failed SonarCloud with Not authorized or project not found. Sonar token permissions/project configuration remain unresolved; TeamCity checks for this head are queued. Successful TeamCity contexts would not resolve the separate Sonar gate.

@peter-lawrey
peter-lawrey marked this pull request as ready for review September 11, 2026 13:37
@peter-lawrey peter-lawrey changed the title [#60] Complete JPMS runtime compatibility through Java 25 [#60] Exercise packaged and JPMS hashing consumers through Java 25 Sep 12, 2026
@peter-lawrey-admin
peter-lawrey-admin merged commit dd86acc into feature/60-explicit-jpms-module Sep 13, 2026
10 of 13 checks passed
@peter-lawrey-admin
peter-lawrey-admin deleted the feature/60-module-path-hardening branch September 13, 2026 11:49
peter-lawrey added a commit that referenced this pull request Oct 4, 2026
Preserve Benjamin Marwell's original signed #107 commit as a parent,
and consolidate Peter Lawrey's #122/#123 integration and the local
review corrections against the existing comparison base.

Remove redundant manifest settings: source-removal controls retain
the final multi-release flag and all library class bytes. Derive the
repeat-package harness JAR name from project coordinates so normal
version bumps retain the paired overwrite regression.

Keep the Java 8 classes, Java 9 descriptor, public API, pinned inputs
and contributor fixtures. Original commits and exact mappings are
retained in the operator receipt and archive-reviewed-r0003 branch.

Co-authored-by: Peter Lawrey <peter.lawrey@chronicle.software>
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.

2 participants