diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3d1e560..e504775 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -37,6 +37,7 @@ jobs:
fail-fast: false
matrix:
target: [ubuntu-latest, windows-latest, macos-latest]
+ java-version: [23, 24, 25]
runs-on: ${{matrix.target}}
steps:
- name: Checkout repository
@@ -47,7 +48,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: temurin
- java-version: 25
+ java-version: ${{matrix.java-version}}
cache: maven
- name: Get tree-sitter commit
shell: sh
@@ -82,10 +83,10 @@ jobs:
JEXTRACT_URL+=_windows-x64_bin.tar.gz
fi
curl -LSs "$JEXTRACT_URL" | tar xzf - -C "$RUNNER_TOOL_CACHE"
- printf '%s/jextract-22/bin\n' "$RUNNER_TOOL_CACHE" >> "$GITHUB_PATH"
+ printf '%s/jextract-25/bin\n' "$RUNNER_TOOL_CACHE" >> "$GITHUB_PATH"
env:
# NOTE: keep this in sync with deploy, docs
- JEXTRACT_URL: https://download.java.net/java/early_access/jextract/22/6/openjdk-22-jextract+6-47
+ JEXTRACT_URL: https://download.java.net/java/early_access/jextract/25/1/openjdk-25-jextract+1-1
- name: Run tests
run: mvn --no-transfer-progress test
- name: Patch SpotBugs SARIF report
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 8c31693..50c605a 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -46,10 +46,10 @@ jobs:
- name: Set up jextract
run: |-
curl -LSs '${{env.JEXTRACT_URL}}' | tar xzf - -C "$RUNNER_TOOL_CACHE"
- printf '%s/jextract-22/bin\n' "$RUNNER_TOOL_CACHE" >> "$GITHUB_PATH"
+ printf '%s/jextract-25/bin\n' "$RUNNER_TOOL_CACHE" >> "$GITHUB_PATH"
env:
# NOTE: keep this in sync with ci, docs
- JEXTRACT_URL: https://download.java.net/java/early_access/jextract/22/6/openjdk-22-jextract+6-47_linux-x64_bin.tar.gz
+ JEXTRACT_URL: https://download.java.net/java/early_access/jextract/25/1/openjdk-25-jextract+1-1
- name: Deploy to Maven Central
run: mvn --no-transfer-progress deploy -Dspotbugs.skip=true
env:
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 0ca5791..4fdd5e7 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -48,10 +48,10 @@ jobs:
- name: Set up jextract
run: |-
curl -LSs '${{env.JEXTRACT_URL}}' | tar xzf - -C "$RUNNER_TOOL_CACHE"
- printf '%s/jextract-22/bin\n' "$RUNNER_TOOL_CACHE" >> "$GITHUB_PATH"
+ printf '%s/jextract-25/bin\n' "$RUNNER_TOOL_CACHE" >> "$GITHUB_PATH"
env:
# NOTE: keep this in sync with ci, deploy
- JEXTRACT_URL: https://download.java.net/java/early_access/jextract/22/6/openjdk-22-jextract+6-47_linux-x64_bin.tar.gz
+ JEXTRACT_URL: https://download.java.net/java/early_access/jextract/25/1/openjdk-25-jextract+1-1
- name: Build javadoc
run: mvn --no-transfer-progress javadoc:javadoc antrun:run@fix-javadoc
- name: Upload pages artifact
diff --git a/README.md b/README.md
index edfacda..ad02b5e 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ Java bindings to the [tree-sitter] parsing library.
## Building
-- Install JDK 22 and set `JAVA_HOME` to it
+- Install JDK 23+ and set `JAVA_HOME` to it
- Download [jextract] and add it to your `PATH`
- Install the `tree-sitter` & `tree-sitter-java` libraries
@@ -31,5 +31,5 @@ These alternatives support older JDK versions or Android:
[ci]: https://img.shields.io/github/actions/workflow/status/tree-sitter/java-tree-sitter/ci.yml?logo=github&label=CI
[central]: https://img.shields.io/maven-central/v/io.github.tree-sitter/jtreesitter?logo=sonatype&label=Maven%20Central
[docs]: https://img.shields.io/github/deployments/tree-sitter/java-tree-sitter/github-pages?logo=githubpages&label=API%20Docs
-[FFM]: https://docs.oracle.com/en/java/javase/22/core/foreign-function-and-memory-api.html
+[FFM]: https://docs.oracle.com/en/java/javase/23/core/foreign-function-and-memory-api.html
[jextract]: https://jdk.java.net/jextract/
diff --git a/pom.xml b/pom.xml
index 5f86edc..1ec74a4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,7 +43,7 @@
https://github.com/tree-sitter/java-tree-sitter/issues
- 22
+ 23
UTF-8
true
true
diff --git a/scripts/TreeSitter_java.patch b/scripts/TreeSitter_java.patch
index ffe070c..25e7b2c 100644
--- a/scripts/TreeSitter_java.patch
+++ b/scripts/TreeSitter_java.patch
@@ -1,22 +1,17 @@
--- a/generated-sources/jextract/io/github/treesitter/jtreesitter/internal/TreeSitter.java
+++ b/generated-sources/jextract/io/github/treesitter/jtreesitter/internal/TreeSitter.java
-@@ -55,9 +55,7 @@
- };
- }
+@@ -20,9 +20,11 @@ public class TreeSitter extends TreeSitter$shared {
+
+ static final Arena LIBRARY_ARENA = Arena.ofAuto();
- static final SymbolLookup SYMBOL_LOOKUP = SymbolLookup.libraryLookup(System.mapLibraryName("tree-sitter"), LIBRARY_ARENA)
- .or(SymbolLookup.loaderLookup())
- .or(Linker.nativeLinker().defaultLookup());
+ static final SymbolLookup SYMBOL_LOOKUP = ChainedLibraryLookup.INSTANCE.get(LIBRARY_ARENA);
-
- public static final ValueLayout.OfBoolean C_BOOL = ValueLayout.JAVA_BOOLEAN;
- public static final ValueLayout.OfByte C_CHAR = ValueLayout.JAVA_BYTE;
-@@ -8599,4 +8606,8 @@ public class TreeSitter {
- throw new AssertionError("should not reach here", ex$);
- }
- }
+
+ static {
+ ts_set_allocator(malloc$address(), calloc$address(), realloc$address(), free$address());
+ }
- }
+
+ private static final int TREE_SITTER_LANGUAGE_VERSION = (int)15L;
+ /**