mrkeyoor.com_
Tue 10 Nov 05:40 UTC
Dev Toolsevaluationupdated 30 Oct 2026

tree-sitter review

Tree-sitter is a parser generator and incremental parsing library. It builds a concrete syntax tree and updates it as source text changes. The project aims to provide useful results even when the source contains syntax errors.

+48stars / 7d
Verdict

Tree-sitter built successfully in 96 seconds, but the test step failed with 548 failures recorded in the aggregate. Its incremental syntax trees make it a candidate for editor tooling; this run does not establish that commit 004c245 is ready for your application. Obtain the full failure output, then verify your chosen binding and grammar on representative files before and after edits.

We ran it

Lab card: what happened when we ran tree-sitterScreenshot of tree-sitter (tree-sitter.github.io)
Install✓ · 15s183 packages
Build✓ · 96s
Tests✗ · 14s86 passed · 548 failed of 634 (cargo test)
Repo628 files~104,430 lines of source · 4.5 MB · 13 CI workflows · tests dir

Answers from our run

Does tree-sitter build from source?

Dependencies installed in 15 seconds (183 packages), and the build succeeded in 96 seconds. We cloned commit 004c245 into a clean Debian container with 3 CPUs and no project-specific setup.

Do tree-sitter's tests pass?

No. The project's own test command finished in 14 seconds and reported 86 passed, 548 failed (cargo test).

Who should not use tree-sitter?

Browser teams unwilling to manage separate runtime and language Wasm assets.

What are the alternatives to tree-sitter?

ANTLR 4, Ohm. Tree-sitter built successfully in 96 seconds, but the test step failed with 548 failures recorded in the aggregate.

SetupN/AInstallation and build succeeded, but the unresolved test failures and absent toolchain logs prevent an integration setup assessment.
Docs4/5On the public rubric, 4 means documented prerequisites and integration boundaries. The CLI and web guides cover these; their integrations were not reproduced.
CommunityN/AThe recorded repository push establishes activity, but the supplied evidence does not assess support responses or maintainer capacity.
MaturityN/AThe measured suite failed for an unresolved reason, and this run did not assess production reliability of a chosen binding and grammar.

Discussed on

  1. hnTree-sitter: an incremental parsing system for programming tools476 points
  2. hnHow to write a linter using tree-sitter in an hour270 points
  3. hnTree-sitter vs. Language Servers266 points
  4. hnHow to Get Started with Tree-Sitter243 points
  5. hnTree Sitter and the Complications of Parsing Languages225 points

Who it’s for

Editor developers evaluating syntax trees that update after edits.
Authors of structural code tools prepared to select and maintain their language grammars.
Teams embedding the C runtime directly or through a binding.

Who it’s NOT for

Browser teams unwilling to manage separate runtime and language Wasm assets.
Grammar authors without Node on PATH and C and C++ compilers: the documented CLI commands require them for generation and parser testing.
Teams expecting arbitrary older prebuilt Wasm grammars to load solely because their parser ABI is supported.

Setup reality

Our run installed Tree-sitter at commit 004c245 in 15 seconds with 183 dependencies recorded, then built it in 96 seconds. The test step failed with exit 101 after 14 seconds. The aggregate records 86 passes and 548 failures across 634 tests; the supplied tail repeats a smaller 43-pass, 274-failure summary.

Grammar development and browser integration have separate requirements. The CLI guide requires Node on PATH for parser generation and C and C++ compilers for running and testing parsers. The web guide documents runtime and language Wasm files, including a compatibility warning about older linking formats.

The October 9, 2026 sandbox configuration listed 3 CPUs, 12 GB RAM and image lab-rust:1. That label does not establish the actual Rust or operating-system version. The panic points to crates/cli/src/tests/helpers/fixtures.rs:50:47, but the supplied tail does not reveal the underlying error.

Evaluate the grammar your editor will use

Tree-sitter updates a concrete syntax tree as source text changes. For an editor developer, a useful adoption check is whether the chosen grammar returns the structure a feature needs while the user types an incomplete expression. The project aims to provide useful results around syntax errors. This run did not measure typing latency, parser throughput or an editor integration.

The runtime is written in C, while GitHub identifies Rust as the repository's primary language. Those facts describe different parts of the project. Embedding an existing grammar and developing a grammar are also different jobs. A successful build of the main repository does not establish that your chosen binding and grammar work together.

What happened when we ran it

Our run installed Tree-sitter in 15 seconds and built it in 96 seconds, with 183 dependencies recorded. The measured checkout was commit 004c245, cloned on October 9, 2026. Its recorded sandbox configuration had 3 CPUs, 12 GB RAM and image lab-rust:1. The image name does not identify the actual compiler or operating-system version. These are repository setup measurements without an editor workload.

The test command exited 101 after 14 seconds. The aggregate records 86 passes and 548 failures across 634 tests. The supplied tail repeats a summary of 43 passes and 274 failures. That smaller summary must not replace the aggregate or be added to it. The excerpt does not provide enough output to reconcile the summaries case by case.

The log names failing tree-edit, included-range and node-equality cases. It also shows test::tests::run_tests_single_passing panicking at crates/cli/src/tests/helpers/fixtures.rs:50:47. The excerpt does not show the underlying error. The file name alone does not establish a missing-fixture problem. The supported finding is that the build completed and the recorded test step failed.

The checkout contained 628 files, approximately 104,430 source lines and 4.5 MB. The scan found 13 CI workflow files and a tests directory, with no Dockerfile detected. These observations do not establish the outcome of upstream CI. Obtain the full failure output and compare the environment with the relevant upstream workflow before relying on this revision. This failed repository check does not establish that every downstream parser is broken.

Grammar development needs additional tools

The CLI guide says the executable itself has no dependencies, then distinguishes commands with runtime requirements. Generating a parser requires Node on PATH. Running and testing parsers requires C and C++ compilers. Account for those requirements if your work includes grammar development.

For an editor evaluation, choose a representative file and the structural question your feature must answer, such as which expression contains the cursor. Inspect the tree, make the file incomplete, and inspect it again. This is a proposed acceptance check, not a test performed in this run. The repository measurements do not establish how your chosen grammar handles that file.

Browser delivery includes Wasm assets

The web binding guide documents a core Wasm file and separate language Wasm files. It warns that some older prebuilt language files use a linking format newer bindings cannot load, even when their parser ABI is supported. A successful JavaScript import therefore does not establish that the deployed application can load its language parser.

Verify the runtime and language asset paths in the deployed application, then attempt a representative parse. The guide advises rebuilding affected older Wasm files with a current CLI. Its warning does not mean every older grammar is unusable. The recorded Rust build did not exercise this browser integration, and the supplied guides are not pinned to measured commit 004c245.

Alternatives depend on the interface you need

ANTLR 4 generates parse trees with listener or visitor interfaces. Its README supports considering it when those traversal interfaces fit your tool.

Ohm separates grammars from semantic actions. Its README also documents a JavaScript interface for creating parsers and interpreters. Consider it when defining a custom language or format through that interface is your main task. Neither alternative was tested in this run, and this review provides no comparative performance result.

What the evidence supports

GitHub recorded a repository push on October 29, 2026. This establishes recent repository activity, but does not establish support response times or maintainer capacity.

Documentation receives 4/5 under this review's rubric: 1 means absent guidance, 2 means partial guidance, 3 means a documented basic path, 4 means documented prerequisites and integration boundaries, and 5 requires those instructions to be corroborated by reproduced integrations. The CLI and web guides document toolchain requirements, asset delivery and compatibility limits. Their integration instructions were not exercised here.

The next adoption step is to verify a specific binding and grammar against your editor's needs, including incomplete input. Resolve the recorded repository failures separately rather than treating the successful build as integration acceptance.

Alternatives

ProjectWhat it isPick it when
ANTLR 4A parser generator that builds parse trees and generates listener or visitor interfaces.Consider it when generated listener or visitor interfaces fit how your tool processes parsed input.
OhmA parsing toolkit with a JavaScript interface and separate semantic actions.Consider it when defining a custom language or format through JavaScript and separate semantic actions is your main task.

Sources

  1. Tree-sitter README
  2. CLI prerequisites
  3. Web binding guide
  4. ANTLR 4 README
  5. Ohm README
  6. Repository activity

More dev tools reviews

universal-android-debloater-next-generation · OpenSandbox · You-Dont-Know-JS · evilginx2 · google-colab-cli · mujoco · the whole board →