Skip to content

[#60] Complete JPMS runtime compatibility through Java 25 - #123

Open
peter-lawrey wants to merge 4 commits into
feature/60-explicit-jpms-modulefrom
feature/60-module-path-hardening
Open

[#60] Complete JPMS runtime compatibility through Java 25#123
peter-lawrey wants to merge 4 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

Strengthen the named-module runtime checks from #60 while preserving the direct-buffer fast path. The integer-array oracle now compares hashing against an explicitly native-order byte representation instead of accepting any nonzero result. Keep the existing heap/direct-buffer equivalence, offsets, cursor checks and packaged-stub exclusion tests.

Apply the Actions setup repair already validated in #120: current checkout/cache/Java actions and a Java 21 scanner runtime. Hashing output and the Java 8 library target are unchanged. SonarCloud authentication remains a separate external gate; analysis is still enabled.

Packaging is inherited from #122 at 41381de5878f5ad8ec62f20a8f48163073f49632, whose current target is develop. Review that explicit-module packaging first, then retarget this PR after #122 merges.

Fresh evidence on Linux amd64:

  • Java 8, Java 21 and Java 25 Maven clean verify passed. Java 8 ran 14,901 unit tests with 12 existing skips; Java 21 and Java 25 each ran two string configurations with 14,901 tests each and 5/8 existing skips. All had zero failures/errors. Packaged-JAR checks and the class-path consumer passed; the named-module consumer passed on Java 21 and Java 25 and is intentionally skipped on Java 8.
  • One fresh Java-8-built JAR was retained unchanged and identified by SHA-256 aebb1f24e5d1b5cc747b806c2827b6a9da3899fea7d0774e8dd70d20c28145ae.
  • That same JAR passed class-path execution on Java 8/11/17/21/25 and explicit-module execution on Java 11/17/21/25. The consumer exercised all 25 public scalar/tuple factory overloads, both buffer byte orders, direct-buffer offsets/cursors and scalar primitive-array equivalence. All nine launches produced checksum -7613445165642694420.
  • Java 25 launches without the required export failed with IllegalAccessError in both deployment forms. The required flags remain --add-exports java.base/sun.nio.ch=net.openhft.hashing for modules and --add-exports java.base/sun.nio.ch=ALL-UNNAMED for the class path.
  • The retained JAR has Java 8 class version 52, an explicit descriptor at META-INF/versions/9/module-info.class, a Multi-Release manifest and no sun/nio/ch/DirectBuffer.class. jar --validate and module-description checks passed.
  • Actionlint passed. Actions run 34603804160 on this head passed checkout, Java setup, both caches and the test/build phases, then failed SonarCloud analysis with "Not authorized or project not found". The token/project configuration needs administrator disposition; CI is not green. Commands, logs, source and binary provenance are retained in the local follow-up evidence pack.

The older claimed JAR with digest a468b81e3956b6da43376a6620e83a791bedddfb57cfb6250410958ece50361e could not be recovered from its recorded path or 58 local candidate JARs. The fresh results above replace the unsupported historical matrix claim; they do not verify that older binary. They also do not establish other-platform CI success or full algorithm conformance beyond the submitted regression suite and stated runtime checks.

Refs #60.

@peter-lawrey
peter-lawrey marked this pull request as ready for review September 11, 2026 13:37
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