- Release build are now optimized for size, gaining 50-60%.
- selfupdate: Add version selection via
patch,minor,major, or explicit semver argument - (...)tsdl selfupdatedefaults tominor(same as before).tsdl selfupdate patch/minor/majorfilters compatible releases.tsdl selfupdate 2.5.0installs an exact version with downgrade confirmation.
- Artifact (wasm, dylib, so) discovery is now exact except for custom
scriptbuilds.
The display backend moved to ratatui. The information displayed are more informative and more coherent.
- cache: Parser builds that track moving refs such as
HEADor branches now notice when those refs move and rebuild the affected parsers. The parser cache format changed for this major release and older cache files are not migrated. - Downloaded
tree-sittercli are now verified upon download (no crypto).
- lock: Use OS-level build locks to avoid concurrent lock acquisition races,
and replace
--unlockwith an interactive SIGTERM takeover flow controlled by--unlock-timeout. - shutdown: Handle
SIGTERM/SIGINTgracefully by terminating running build command process groups before releasing the build lock. - install: Avoid replacing existing output files unless they are already the
same file, have identical contents, or
--forceis used; replacements are now installed through visible temporary hardlinks. --jobsis a strictly positive number now.tsdlnow fails on repos with nogrammar.js.tsdl config defaultandtsdl selfupdateno longer :- crash on malformed configs,
- write any logs unless
--logis explicitly set.
- Cycling through
--targetvalues{all,native,wasm}would not invalidate the cache for artifacts built in the previous calls. This used to happen:tsdl build --target native # cache says native tsdl build --target wasm # cache says wasm tsdl build --target native # cache misses
- Bumped to rust 2024
This is a major rewrite, moving to a single-threaded async runtime, with actors. (aacb30f)
Some of the things done are arguably unnecessary, granted, but also as always, it's a serious project where I get to try and learn to do things at the same time.
Some people call it fun, believe it or not …
- cache: new Skips rebuilding when no changes are found
- lock: new
- Output dir - (5aeb1d7)
- cli: Tag each downloaded tree-sitter cli with its proper version - (a8987d9)
- build: Generate file name with prefix and extension on build - (0e2a8b4)
- build: Copy exact files, or best match when possible - (c1cce92)
- build: --force = --fresh when installing - (55b07a4)
- display: Integer math - (42ad2d0)
- target: Use --target [native, wasm, all] - (77f965e)
- cliff: Remove new contributors section - (f655e6c)
- release: Do not add a leading v when deducing version - (80a7993)
- tree_sitter: Avoid needless iteration - (c7b08cb)
- Add support for
--target:nativefor native shared libraries,dyliborso(default).wasmfor web assembly.allfor all of the above.
- clone: Always clone to tree-sitter-{language} dir - (daf6e36)
- tree_sitter: Init - (160d832)
- cargo.toml: Specify markdown_to_docs version for proper publishing - (0b9d96a)
- config: From env vars if cmd args are not present - (b693719)
- build: Clean, clone, then build if remote definition changes - (62375ae)
- clone: When a parser was not correctly cloned in a previous run - (b976d87)
- crate: Add README.md to the crate's documentation - (8d25198)
- tsdl: Use markdown_to_docs to properly display in docs.rs - (e980e99)
- build: --tree-sitter-version sha1 - (a611f94)
- download: Remove tree-sitter-cli gz - (69af2a4)
- log: Create dir if --log specifies a path - (1d88722)
- cli: Remove wrong description for build command - (c73f096)
- build: Check that tree-sitter-cli exists and is executable - (5abb1a5)
- build: Check downloaded tree-sitter-cli version - (362dc5c)
- build: Verify multiparser with cmd - (35e8442)
- lint: Add typos checker - (70cd5ce)
- selfupdate: Add selfupdate command and fetch from github releases - (a0832d8)
- chmod: Use rust to set executable permissions - (a36e1d9)
- download: Use reqwest instead of curl or wget - (76ac6c9)
- gunzip: Use async-compression instead of the gunzip binary - (de16590)
- release.sh: Lint and test before releasing - (bc5aa6c)
- readme: More information on config file and overriding parser.toml - (dcafb2c)
- logging: Print to stderr and file when -v,-vv - (181cf77)
- changelog: Simplify and skip chore, refactor, and style commits - (dccf215)
- pr template: Remove the git-cliff message - (1507e3e)
- test: Retry because some tests are flaky - (c44183b)
- tsdl: Working implementation