- Is TreeSitter.create() / newParser() intended to be thread-safe when called concurrently on one instance?
- If not, should TreeSitter be per-thread (or per-task), or is there a recommended pattern for parallel batch parsing?
TreeSitter ts = TreeSitter.create();
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
for (Path file : javaFiles) {
executor.submit(() -> {
String source = Files.readString(file);
TreeSitterParser parser = ts.newParser();
parser.setLanguage(Language.JAVA);
TreeSitterTree tree = parser.parseString(source);
tree.close();
parser.close();
});
}
}