tree-sitter/cli/loader
Ryan Patterson b5e4ef6d9a
clone wasm store engine (#3542)
This resolves https://github.com/tree-sitter/tree-sitter/issues/3454.

This brings the usage of wasmtime::Engine in line with how wasmtime
intends it to be used. All wasmtime functions that receive an Engine
always receive an `&Engine`, never an owned `Engine`.  They are always
responsible for cloning the reference if they need it.

This brings the usage of wasmtime::Engine in line with how TSParser
treats TSLanguages: when setting a language to the parser, the parser is
responsible for cloning the reference to the TSLanguage. It is
counterintuitive for TSParser to have different behavior when receiving
wasmtime_engine_t.

C API users also expect this behavior, see "Memory Management"
[here](https://docs.wasmtime.dev/c-api/wasm_8h.html). Talking about the
C API: without this change, failing to clone the `wasmtime_engine_t`
(which, again, is never something API users need to do in wasmtime) and
then reusing the engine in multiple TSLanguages results in a use after
free. With this change, failing to call `wasm_engine_delete` on your
owned Engine results in a memory leak. Memory leaks are safer than
use-after-free.
2024-08-22 08:01:37 -07:00
..
src clone wasm store engine (#3542) 2024-08-22 08:01:37 -07:00
build.rs fix(cli): keep default cc flags in build 2024-05-05 13:06:45 -04:00
Cargo.toml build(loader): make dependencies optional (#1638) 2024-07-28 10:59:21 +03:00
emscripten-version build(wasm): bump emscripten to 3.1.64 2024-07-29 15:59:56 +03:00
README.md doc: Include README as top-level module documentation for all crates 2023-08-28 23:09:37 +03:00

Tree-sitter Loader

The tree-sitter command-line program will dynamically find and build grammars at runtime, if you have cloned the grammars' repositories to your local filesystem. This helper crate implements that logic, so that you can use it in your own program analysis tools, as well.