| Filename | Latest commit message | Latest commit date |
|---|---|---|
Reshaping the table builder for memory needs a way to tell where the memory goes, and a profiler attributes allocation sites rather than phases: it says which call allocated, not which phase still holds the result. What matters here is what a phase *retains*. The CLI installs a tracking global allocator that keeps a running total of live bytes and their high-water mark, and the generator reports the totals at each phase boundary. Sizes for individual structures come from dropping or clearing them and differencing the live total, which is exact, rather than from estimating a layout. Everything stays quiet unless TS_MEM_STATS is set, so an instrumented binary behaves like an uninstrumented one; accounting itself is two relaxed atomics per allocation and does not measurably change generation time. TS_MEM_SIZES additionally sizes structures by cloning them, which inflates the very peak the phase report exists to measure and is therefore separate. TS_MEM_DISSECT takes the finished table apart to attribute it field by field, and necessarily ends the run. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
| .cargo | chore: remove CARGO_WORKSPACE_DIR var | |
| .github |
fix(lib): address strict aliasing violations in TreeCursor type
|
|
| .zed | Add zed config file (enable all cargo features for rust-analyzer) | |
| crates | feat(generate): account allocations behind TS_MEM_STATS | |
| docs | docs: note zero point unbounded behavior in query functions | |
| lib | feat(generate): emit large lex tables as chunk functions | |
| test/fixtures | fix(lib): Consider subtree lookahead bytes when determining whether the | |
| .dockerignore | Add a simple dockerfile for testing | |
| .editorconfig | style(zig): reformat files | |
| .envrc | feat: add nix flake | |
| .gitattributes |
Reorganize rust crates into a flat crates directory, simplify some CI steps (#4496)
|
|
| .gitignore | refactor: rework nix flake | |
| build.zig |
fix(build): define _BSD_SOURCE
|
|
| build.zig.zon | release v0.26.10 | |
| Cargo.lock | perf(generate): shrink the parse table build | |
| Cargo.toml | perf(generate): shrink the parse table build | |
| CMakeLists.txt | release v0.26.10 | |
| CONTRIBUTING.md | docs: improve docs for contributing to docs | |
| Dockerfile | Add a simple dockerfile for testing | |
| flake.lock | refactor: rework nix flake | |
| flake.nix | release v0.26.10 | |
| FUNDING.json | chore: add FUNDING.json | |
| LICENSE | chore: copy license to all packages | |
| Makefile | release v0.26.10 | |
| Package.swift |
fix(build): define _BSD_SOURCE
|
|
| README.md | docs: change WASM/wasm to Wasm | |
tree-sitter
Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter aims to be:
- General enough to parse any programming language
- Fast enough to parse on every keystroke in a text editor
- Robust enough to provide useful results even in the presence of syntax errors
- Dependency-free so that the runtime library (which is written in pure C) can be embedded in any application
Links
Languages
- Rust 64.2%
- C 24.4%
- TypeScript 6.3%
- C++ 1.3%
- JavaScript 1%
- Other 2.6%