tree-sitter/lib
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
..
binding_rust clone wasm store engine (#3542) 2024-08-22 08:01:37 -07:00
binding_web build(wasm): don't minify JS (#3380) 2024-07-29 10:00:02 +03:00
include/tree_sitter fix(lib): fix api header C++ interop (#3534) 2024-08-18 12:01:13 +03:00
language feat(lib): support no_std 2024-07-28 11:34:26 +03:00
src clone wasm store engine (#3542) 2024-08-22 08:01:37 -07:00
.ccls rust: Change QueryCursor::captures to expose the full match 2019-10-03 12:45:58 -07:00
Cargo.toml build(deps): bump wasmtime to v24.0.0 2024-08-20 18:09:23 +02:00
compile_flags.txt build: use c11 everywhere 2024-02-27 15:54:38 -05:00
README.md docs: update badges; fix markdown lint complains 2023-04-16 23:39:08 +03:00

Subdirectories

  • src - C source code for the Tree-sitter library
  • include - C headers for the Tree-sitter library
  • binding_rust - Rust bindings to the Tree-sitter library
  • binding_web - JavaScript bindings to the Tree-sitter library, using WebAssembly