Comparing CodeIntelligenceTesting:main...xerial:main · CodeIntelligenceTesting/snappy-java

Commits on Nov 24, 2025

  1. Configuration menu

    Browse the repository at this point in the history

  2. Configuration menu

    Browse the repository at this point in the history

  3. Document JDK 24+ native access requirements (xerial#702)

    Add documentation for JEP 472 native access requirements that affect
    users running snappy-java on JDK 24 or later.
    
    Since snappy-java uses JNI to load native libraries, applications
    running on JDK 24+ must add the --enable-native-access=ALL-UNNAMED
    JVM flag. Per JEP 472 guidance, this is the application developer's
    responsibility (not the library's).
    
    The new section includes:
    - Clear explanation of the requirement
    - Examples for Maven, Gradle, sbt, and command-line usage
    - Warning message examples users will encounter
    - Rationale based on JEP 472's "integrity by default" policy
    
    No code changes are needed - this is purely documentation to help
    users understand and address the warnings they see on JDK 24+.
    
    Fixes xerial#689
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-authored-by: Claude <noreply@anthropic.com>
    Configuration menu

    Browse the repository at this point in the history

  4. Add JDK 25 to CI test matrix (xerial#703)

    Update CI to test on JDK 25 (LTS) and remove JDK 24 (non-LTS).
    
    Changes:
    - Replace JDK 24 with JDK 25 in test matrix
    - Add --enable-native-access=ALL-UNNAMED flag for JDK 24+ tests
    - This ensures native library loading works correctly per JEP 472
    
    The CI now tests on: JDK 8, 11, 17, 21, 25 (all LTS versions plus latest)
    
    Related to xerial#689
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-authored-by: Claude <noreply@anthropic.com>
    Configuration menu

    Browse the repository at this point in the history

  5. Add JAR integration test for JDK compatibility (xerial#704)

    * Add Enable-Native-Access manifest attribute for JDK 24+
    
    Add the Enable-Native-Access: ALL-UNNAMED attribute to the JAR manifest
    to suppress native access warnings on JDK 24+ without requiring users
    to add the --enable-native-access=ALL-UNNAMED command-line flag.
    
    This manifest attribute allows the library to declare its need for
    native access, which helps suppress the warnings introduced by JEP 472
    when snappy-java loads native libraries via JNI.
    
    Benefits:
    - Users no longer need to add JVM flags for basic usage
    - Warnings are suppressed automatically when the JAR is on the classpath
    - Backwards compatible with all JDK versions (attribute is ignored on JDK < 24)
    
    Related to xerial#689
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * Add integration test for JAR manifest and native access
    
    Add a comprehensive integration test that verifies snappy-java works
    in a separate JVM process. This test:
    
    1. Builds the JAR with sbt
    2. Compiles a simple test program that uses snappy-java
    3. Runs the test in a fresh JVM WITHOUT --enable-native-access flag
    4. Verifies the compression/decompression works correctly
    5. Checks for JEP 472 warnings on JDK 24+
    
    The test can be run two ways:
    - Via JUnit: testOnly org.xerial.snappy.JarManifestIntegrationTest
    - Via script: ./script/test-jar-integration.sh
    
    Findings: The Enable-Native-Access manifest attribute is present but
    does NOT suppress warnings when the JAR is used as a library on the
    classpath. The attribute only works for executable JARs (java -jar).
    Users still need to add --enable-native-access=ALL-UNNAMED for now.
    
    Related to xerial#689
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * Clean up and finalize integration test
    
    Changes:
    - Remove Enable-Native-Access manifest attribute (doesn't work for library JARs)
    - Remove unused JUnit integration test (using shell script instead)
    - Add JAR integration test to CI workflow for all JDK versions
    
    The integration test now runs in CI after regular tests, verifying that
    the built JAR works correctly in a separate JVM process on each tested
    JDK version (8, 11, 17, 21, 25).
    
    Related to xerial#689
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * Remove unnecessary manifest check from integration test
    
    The manifest check is no longer needed since we decided not to
    include the Enable-Native-Access attribute.
    
    Related to xerial#689
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: Claude <noreply@anthropic.com>
    Configuration menu

    Browse the repository at this point in the history