Amaan Qureshi
792bba8dab
nix: support single-checkout and multi-workspace direnv setups
...
The current `.envrc` unconditionally runs `use flake`, which breaks multi-workspace
jj setups where workspace subdirectories each have their own `.envrc`. Entering a
workspace unloads the root's nix env even when the workspace `.envrc` is blocked,
because direnv always unloads the parent env on any `.envrc` transition.
`source_up_if_exists` re-runs the parent `.envrc` and inherits its nix env in a
multi-workspace setup (fast due to caching). The `IN_NIX_SHELL` guard then skips
`use flake path:.`, which only runs in a plain single checkout where no parent
`.envrc` exists and `IN_NIX_SHELL` is unset.
2026-02-18 00:50:06 -05:00
dependabot[bot]
957ee4e634
ci: bump the actions group with 2 updates
...
Bumps the actions group with 2 updates: [actions/cache](https://github.com/actions/cache ) and [actions/setup-node](https://github.com/actions/setup-node ).
Updates `actions/cache` from 4 to 5
- [Release notes](https://github.com/actions/cache/releases )
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md )
- [Commits](https://github.com/actions/cache/compare/v4...v5 )
Updates `actions/setup-node` from 4 to 6
- [Release notes](https://github.com/actions/setup-node/releases )
- [Commits](https://github.com/actions/setup-node/compare/v4...v6 )
---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
- dependency-name: actions/setup-node
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 22:42:58 +01:00
dependabot[bot]
6952936eac
build(deps): bump the cargo group with 4 updates
...
Bumps the cargo group with 4 updates: [cc](https://github.com/rust-lang/cc-rs ), [clap](https://github.com/clap-rs/clap ), [clap_complete](https://github.com/clap-rs/clap ) and [ctrlc](https://github.com/Detegr/rust-ctrlc ).
Updates `cc` from 1.2.55 to 1.2.56
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.55...cc-v1.2.56 )
Updates `clap` from 4.5.57 to 4.5.58
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.57...clap_complete-v4.5.58 )
Updates `clap_complete` from 4.5.65 to 4.5.66
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.65...clap_complete-v4.5.66 )
Updates `ctrlc` from 3.5.1 to 3.5.2
- [Release notes](https://github.com/Detegr/rust-ctrlc/releases )
- [Commits](https://github.com/Detegr/rust-ctrlc/compare/3.5.1...3.5.2 )
---
updated-dependencies:
- dependency-name: cc
dependency-version: 1.2.56
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: clap
dependency-version: 4.5.58
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: clap_complete
dependency-version: 4.5.66
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: ctrlc
dependency-version: 3.5.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 22:42:31 +01:00
dependabot[bot]
f3a9b493c0
build(deps): bump the cargo group with 5 updates
...
Bumps the cargo group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow ) | `1.0.100` | `1.0.101` |
| [clap](https://github.com/clap-rs/clap ) | `4.5.56` | `4.5.57` |
| [regex](https://github.com/rust-lang/regex ) | `1.12.2` | `1.12.3` |
| [regex-syntax](https://github.com/rust-lang/regex ) | `0.8.8` | `0.8.9` |
| [schemars](https://github.com/GREsau/schemars ) | `1.2.0` | `1.2.1` |
Updates `anyhow` from 1.0.100 to 1.0.101
- [Release notes](https://github.com/dtolnay/anyhow/releases )
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.100...1.0.101 )
Updates `clap` from 4.5.56 to 4.5.57
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.56...clap_complete-v4.5.57 )
Updates `regex` from 1.12.2 to 1.12.3
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.12.2...1.12.3 )
Updates `regex-syntax` from 0.8.8 to 0.8.9
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/regex-syntax-0.8.8...regex-syntax-0.8.9 )
Updates `schemars` from 1.2.0 to 1.2.1
- [Release notes](https://github.com/GREsau/schemars/releases )
- [Changelog](https://github.com/GREsau/schemars/blob/master/CHANGELOG.md )
- [Commits](https://github.com/GREsau/schemars/compare/v1.2.0...v1.2.1 )
---
updated-dependencies:
- dependency-name: anyhow
dependency-version: 1.0.101
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: clap
dependency-version: 4.5.57
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: regex
dependency-version: 1.12.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: regex-syntax
dependency-version: 0.8.9
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: schemars
dependency-version: 1.2.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 10:50:33 +01:00
dependabot[bot]
377c3d1c75
build(deps): bump eslint from 9.11.0 to 9.39.2 in /crates/cli/eslint
...
Bumps [eslint](https://github.com/eslint/eslint ) from 9.11.0 to 9.39.2.
- [Release notes](https://github.com/eslint/eslint/releases )
- [Commits](https://github.com/eslint/eslint/compare/v9.11.0...v9.39.2 )
---
updated-dependencies:
- dependency-name: eslint
dependency-version: 9.39.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 22:55:27 -05:00
Amaan Qureshi
9a78267a7b
flake: update lockfile
2026-02-09 22:52:13 -05:00
Amaan Qureshi
a91efd56f8
ci: cache npm packages for the web bindings
2026-02-09 22:52:13 -05:00
Amaan Qureshi
e7389ccc2a
make: drop redundant cargo check
2026-02-09 22:52:13 -05:00
Amaan Qureshi
b1b0ef9238
ci: skip release build on PRs
2026-02-09 22:52:13 -05:00
Amaan Qureshi
ad2f2ae76d
ci: don't update msys2 packages
2026-02-09 22:52:13 -05:00
Amaan Qureshi
8b72e64c3c
ci: replace setup-emsdk action with manual install + actions/cache
2026-02-09 22:52:13 -05:00
Amaan Qureshi
68b6020e8e
ci: download pre-built wasmtime C API instead of compiling from source
...
ci: cache npm
2026-02-09 22:52:13 -05:00
Amaan Qureshi
4eefcef0fc
ci: only run wasm tests on linux x64 and mac arm64
2026-02-09 22:52:13 -05:00
Chad McElligott
081c90b769
web: add default export to CJS bundle
2026-02-09 22:23:12 -05:00
Will Lillis
596a4d69bb
fix(query): prevent cross-branch capture contamination in alternations with quantifiers
...
When a branch inside an alternation has a + or * quantifier, the
quantifier's pass_through step loops back to the branch's first step.
The alternation linking also sets that step's alternative_index to
point to the next branch. This causes the quantifier loop-back to
incorrectly explore other branches in the case of a failed match that
follows a successful match, contaminating captures.
This is corrected by redirecting the quantifier loop-back to a
"clean" copy of the target step without the alternative index pointing
to the next alternation branch.
Co-authored-by: Riley Bruins <ribru17@hotmail.com>
2026-02-09 21:57:29 -05:00
Jeremy Fleischman
7d3c321253
feat: allow - in grammar names
...
A number of grammars in the wild have this character in their name:
- https://github.com/sogaiu/tree-sitter-janet-simple/pull/7
- https://github.com/tree-sitter/tree-sitter-c-sharp/pull/408
- https://github.com/tree-sitter/tree-sitter-embedded-template/pull/45
- https://github.com/tree-sitter/tree-sitter-ql-dbscheme/pull/7
I read through https://github.com/tree-sitter/tree-sitter/pull/3700 and
https://github.com/tree-sitter/tree-sitter/issues/3637 , and it doesn't
look like there was much discussion about this name regex, so hopefully
this is an acceptable change?
2026-02-09 21:28:04 -05:00
Will Lillis
48e921883a
fix(rust)!: return u32 from Node::child_count
...
This matches the type returned from the underlying C library, and also
composes more cleanly with other functions like `Node::child`
2026-02-09 21:05:48 -05:00
Will Lillis
9dd09fec1e
fix(cli): require tree-sitter CLI in CMake template
2026-02-08 18:40:57 -05:00
Amaan Qureshi
22cda59a19
lib: clean up strict aliasing fixes in array.h
2026-02-08 11:09:31 +01:00
Amaan Qureshi
a234575b04
nix: fix clangd not working
2026-02-08 11:09:31 +01:00
Will Lillis
73b2f981d5
fix(cli): allow for both debug logs and graphs
2026-02-07 17:03:56 -05:00
Will Lillis
c4acd92930
fix(loader): download wasm tools into a tempdir
...
This ensures the directories are cleaned up even in the case of an
error during or after download.
2026-02-04 22:23:11 -05:00
Will Lillis
953e3f2630
fix(test): acquire lock before downloading wasm tools
...
Because Rust tests run in parallel, two tests compiling a parser to wasm
can both try to download wasi-sdk and wasm-opt to a common location,
causing corrupted files and/or other failures. To prevent this, we can
guard access to these tools. `cfg(test)` isn't passed across crate
boundaries, so this lock must be present for all build configurations.
2026-02-04 22:23:11 -05:00
Bertie Wheen
39f407e3ff
fix(lib): correct ts_parser_parse docstring ( #5295 )
2026-02-04 00:49:54 -05:00
dependabot[bot]
73bf3febf7
build(deps): bump bytes from 1.11.0 to 1.11.1
...
Bumps [bytes](https://github.com/tokio-rs/bytes ) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases )
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md )
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.11.0...v1.11.1 )
---
updated-dependencies:
- dependency-name: bytes
dependency-version: 1.11.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 22:46:35 +01:00
Will Lillis
eab567a02d
fix(rust): place std::env::set_var inside unsafe blocks
...
This is optional for the 2021 but required for 2024. The function is
unsafe either way and should be marked as such.
2026-02-02 04:29:13 -05:00
Will Lillis
2338c3d649
rust: bump language crate version
...
The language crate's version had to be bumped to 0.1.7 on the 0.26
release branch, so bump to 0.1.8 on master
2026-02-01 15:00:22 -05:00
Will Lillis
7e1d8add13
feat(cli): add --verbose flag to build command
...
This displays the working directory of the command (if present),
compiler used, all of its arguments, any environment variables set,
and anything written to stdout/stderr by the compilation tool.
2026-02-01 13:00:02 -05:00
Will Lillis
7100767f64
docs: include info on environment variables for fuzz command
2026-02-01 12:31:13 -05:00
Will Lillis
0b8f124453
fix(cli): include default values for --edits and --iterations in
...
`fuzz` command help
2026-02-01 12:31:13 -05:00
Will Lillis
c9d9ce6cbb
fix(cli): use --edits value for fuzz tests
2026-02-01 12:31:13 -05:00
Will Lillis
337e20e0f2
fix(wasm): when reallocating the last allocated region, properly grow
...
the region in place.
Previous changes to `malloc` caused `realloc` to sometimes pull regions
off of the free list during this optimization. Because no `memcpy` is
performed, this resulted in corrupted data returning to the caller.
Co-authored-by: trim21 <i@trim21.me>
2026-01-31 18:24:31 -05:00
Will Lillis
8fe076695f
test: rename wasm corpus test "wasm_realloc"->"wasm_realloc_overflow_heap"
2026-01-31 18:24:31 -05:00
Will Lillis
439030503c
fix(loader): don't rely on nm to verify scanner symbols
...
Relying on a user's system's installation of `nm` has proven to be bug
prone and flaky. Instead, we can enforce that these symbols are defined
by requiring the linker to resolve them. This is already the default on
macos, but linux has looser requirements which defers the error to when
the library is opened. This check was not run on Windows (because
there's no `nm`), but the msvc linker is similiarly strict to macos's
w.r.t. resolving symbols at build time rather than runtime, so there's
no issue here.
2026-01-31 17:59:50 -05:00
Will Lillis
18e2fb1e78
fix(loader): account for nm/ld fix on newer powerpc linux toolchains
...
Previously a bug in linux powerpc linkers/nm caused function symbols to
be incorrectly reported in the data "D" section. Newer toolchains now
correctly report these symbols' sections as "T". Account for both to
maintain compatibility with older toolchains
2026-01-31 17:59:50 -05:00
Christian Clason
69c6ce8c17
build(deps): cargo update
2026-01-31 17:51:43 -05:00
Christian Clason
1850706af0
fix(wasm): don't wasm-opt twice
...
Now that we run `wasm-opt` explicitly after compilation, skip it during
the `clang` compile and link phase.
2026-01-31 10:43:19 +01:00
Will Lillis
94f4143ad6
generate: return error rather than assert when ABI incompatibility is
...
detected
2026-01-30 22:45:07 -05:00
Will Lillis
e65dc4c3b5
fix(generate): ensure parse table action id's fit within uint16_t
...
Without this check, action ids > 65,535 can be assigned to `uint16_t`s
in parser.c. This causes parsing to either crash or silently misbehave.
2026-01-30 22:45:07 -05:00
Will Lillis
4a2b8ed299
fix(generate): error if supertype is defined as a terminal rule
2026-01-30 22:35:41 -05:00
Will Lillis
4f8983b89f
fix(ci): add wasm-stdlib.h to cache key
2026-01-27 10:25:43 +01:00
Will Lillis
7ad63a865e
fix(wasm): return early from calloc if malloc fails
...
Co-authored-by: trim21 <i@trim21.me>
2026-01-26 21:14:14 -05:00
Will Lillis
634ba3a1f7
fix(wasm): correct several bugs in realloc
...
- free memory if 0 size is passed in
- Don't `memcpy` contents if new pointer is `NULL`
- Copy old region's contents only up to size of new region
- free old region
Co-authored-by: trim21 <i@trim21.me>
2026-01-26 21:14:14 -05:00
dependabot[bot]
2961ef5135
build(deps): bump the cargo group with 2 updates
...
Bumps the cargo group with 2 updates: [cc](https://github.com/rust-lang/cc-rs ) and [thiserror](https://github.com/dtolnay/thiserror ).
Updates `cc` from 1.2.53 to 1.2.54
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.53...cc-v1.2.54 )
Updates `thiserror` from 2.0.17 to 2.0.18
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.17...2.0.18 )
---
updated-dependencies:
- dependency-name: cc
dependency-version: 1.2.54
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
- dependency-name: thiserror
dependency-version: 2.0.18
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 23:23:15 +00:00
Will Lillis
8816d4494f
docs: document parser library symbol checks for build command
2026-01-25 18:19:32 -05:00
Will Lillis
c0137208ec
fix(rust): address new nightly lint
2026-01-25 17:18:43 -05:00
Will Lillis
8f4df58983
fix(init): correct paths in rust bindings on Windows
2026-01-25 17:18:43 -05:00
Will Lillis
5177b3dc26
fix(lib): address strict aliasing violations with Array type
...
Altering the `Array` type itself isn't feasible, as this causes
unacceptable breakage with existing parsers that depend on it. Instead,
pass in individual `Array` fields for to various `_array__*` functions.
Any time the `contents` of an array may be modified (`free`d, `realloc`d,
etc), return the potentially new address out by value. This prevents any
strict aliasing violations as we're no longer writing to a type-casted
pointer.
Co-authored-by: Nathaniel Wesley Filardo <nwfilardo@gmail.com>
2026-01-24 14:18:40 -05:00
Will Lillis
55fdc50e81
feat(xtask): allow alternate branch for fixture grammars
...
Set tree-sitter-php fixture to `upstream_test_fixture` branch.
Also remove the `--update` flag, as it does nothing.
2026-01-24 14:18:40 -05:00
Will Lillis
d736b259de
wasm: build wctype.c as part of stdlib
2026-01-24 14:19:00 +01:00