Ryan Patterson
b5e4ef6d9a
clone wasm store engine ( #3542 )
...
CI / checks (push) Waiting to run
CI / sanitize (push) Failing after 12s
CI / build (push) Failing after 13s
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
ObserverOfTime
2512f3ab17
docs: document rust library features
CI / checks (push) Waiting to run
CI / sanitize (push) Failing after 11s
CI / build (push) Failing after 12s
2024-07-28 11:34:26 +03:00
DragonBillow
d13d7235d2
feat(lib): support no_std
2024-07-28 11:34:26 +03:00
ibrahim Sağıroğlu
76456919ae
docs: fix tree cursor documentation ( #3324 )
...
- ts_tree_cursor_current_depth
- ts_tree_cursor_reset
2024-07-28 10:36:06 +03:00
Amaan Qureshi
25c7189180
feat(lib): add ts_query_end_byte_for_pattern
2024-07-07 20:29:09 -04:00
Piotr Osiewicz
3c3699ba90
perf: hoist out common subexpressions in satisfies_text_predicates
...
This commit stores the result of text predicates evaluation in a separate variable to ensure that they're computed just once. As is, it is possible for e.g. #match predicates to match node against a regex twice.
2024-06-03 14:25:30 +02:00
Amaan Qureshi
7f4a57817d
build(deps): bump wasmtime to v21
2024-05-29 18:57:26 -04:00
Max Brunsfeld
38137c71b2
feat!: introduce tree-sitter-language crate for grammar crates to depend on
...
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Amaan Qureshi <amaanq12@gmail.com>
2024-05-24 21:54:07 -04:00
Paolo Tranquilli
d35e40185a
fix(rust): fetch CARGO_MANIFEST_DIR at runtime in build script
...
The `CARGO_MANIFEST_DIR` environment variable should be accessed by
`build.rs` at run time rather than compile time. This was for example
causing issues when importing `tree-sitter` via
[`rules_rust`](https://github.com/bazelbuild/rules_rust ) in bazel,
where compilation and running happen in separate environments.
2024-05-13 10:09:58 -04:00
vanaigr
90e0e28b95
feat: reverse iteration through node parents ( #3214 )
2024-04-23 15:19:57 +01:00
Liam Rosenfeld
0f125e2d09
fix(rust): use unix + wasi cfg instead of not windows for fd
2024-04-23 10:13:38 -04:00
Jisuk Byun
4cd23ff6b0
fix(rust): update README example
2024-04-18 13:25:42 -04:00
Mark McCulloh
a7a47d561d
fix(rust): compilation on wasm32-wasi
2024-04-13 18:30:41 -04:00
Amaan Qureshi
abc7910381
refactor(rust): misc fixes & tidying
2024-04-11 22:35:43 -04:00
Amaan Qureshi
5825e24d56
style: wrap comments
2024-04-11 22:35:43 -04:00
Amaan Qureshi
b35efa8f33
style: format imports
2024-04-11 22:35:43 -04:00
Will Lillis
cbcb51b857
fix: tie the lifetime of the cursor to the query in QueryCursor::captures()
2024-04-09 12:19:06 -04:00
WillLillis
a7078a1561
fix: Add lifetime to mactches function
2024-04-03 22:06:19 -04:00
Max Brunsfeld
b7fcf9878e
Upgrade wasmtime
2024-03-20 18:23:44 -07:00
Amaan Qureshi
09d2b23a64
fix(lib): account for the root node of a tree cursor being an alias
2024-03-20 19:23:08 -04:00
Max Brunsfeld
09b18fad5b
Merge pull request #3181 from tree-sitter/handle-wasm-oom
...
When loading languages via WASM, gracefully handle memory errors and leaks in external scanners
2024-03-18 13:15:06 -07:00
Max Brunsfeld
b19d85aca7
Remove logic for building with clang static analyzer in core rust binding
2024-03-17 09:59:51 -07:00
ObserverOfTime
4b12eab927
feat(lib): implement Display for Node
2024-03-17 06:12:28 -04:00
Amaan Qureshi
ad07fa8a9e
feat(bindings/rust): expose Parser::included_ranges
2024-03-12 02:29:35 -04:00
Amaan Qureshi
0a5a564ea7
0.22.0
2024-03-10 17:15:08 -04:00
Amaan Qureshi
5a4765ca01
style: clippy lints
2024-02-29 02:17:30 -05:00
ObserverOfTime
799833f9cf
build: use c11 everywhere
...
And improve the makefiles
2024-02-27 15:54:38 -05:00
Max Brunsfeld
b40a42ac0f
Remove vendored wasmtime headers
...
When building rust binding, use wasmtime headers provided via cargo
by the wasmtime-c-api crate.
Co-authored-by: Marshall <marshall@zed.dev>
2024-02-26 10:48:58 -08:00
Amaan Qureshi
f1eecf9786
feat: expose the allocator and array header files for external scanners
2024-02-26 09:43:13 -05:00
Max Brunsfeld
9301c1e676
Merge pull request #3068 from tree-sitter/load-old-language-via-wasm-crash
...
Fix crash when attempting to load ancient languages via wasm
2024-02-23 12:24:01 -08:00
Max Brunsfeld
8dded3ab60
Fix crash when attempting to load ancient languages via wasm
2024-02-23 11:48:14 -08:00
Amaan Qureshi
a5b7c2a584
fix: publish 0.21.0 to registries
2024-02-21 15:11:37 -05:00
Amaan Qureshi
7980669267
feat: support dot graph output on windows
2024-02-08 15:21:47 -05:00
dundargoc
df1fe842eb
docs: various fixes
...
Closes https://github.com/tree-sitter/tree-sitter/issues/1317 .
Closes https://github.com/tree-sitter/tree-sitter/issues/1752 .
Closes https://github.com/tree-sitter/tree-sitter/issues/2439 .
Co-authored-by: Simon Hengel <sol@typeful.net>
Co-authored-by: Akash Yadav <itsaky01@gmail.com>
Co-authored-by: Sebastiaan Speck <12570668+sebastiaanspeck@users.noreply.github.com>
Co-authored-by: Laytan Laats <laytanlaats@hotmail.com>
2024-02-08 00:08:59 +01:00
Thanabodee Charoenpiriyakij
9fb06643f3
docs: fix incorrect Tree::edit example in README.md
2024-02-07 21:24:02 +01:00
dundargoc
c8bd6705cf
chore: clippy
2024-02-06 23:34:14 -05:00
dependabot[bot]
3d849cb40e
build(deps): bump bindgen from 0.66.1 to 0.69.4
...
Bumps [bindgen](https://github.com/rust-lang/rust-bindgen ) from 0.66.1 to 0.69.4.
- [Release notes](https://github.com/rust-lang/rust-bindgen/releases )
- [Changelog](https://github.com/rust-lang/rust-bindgen/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/rust-bindgen/compare/v0.66.1...v0.69.4 )
---
updated-dependencies:
- dependency-name: bindgen
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 20:16:49 -05:00
Douglas Creager
44aa80d678
feat: include build script links in Rust bindings
...
This patch updates the Rust binding's build script to output [build
metadata][links]. This makes it easier for downstream crates to
determine the include path, in case they need to compile their own C
code that requires the tree-sitter headers.
[links]: https://doc.rust-lang.org/cargo/reference/build-scripts.html#the-links-manifest-key
2024-02-05 20:05:05 -05:00
Max Brunsfeld
11e73bedc3
Remove unnecessary static lifetime
2024-02-05 11:57:24 -08:00
Max Brunsfeld
f4788b49c0
Merge branch 'master' into wasm-stdlib
2024-02-05 11:55:58 -08:00
Amaan Qureshi
28bb2a8c1c
chore(lib): apply clippy fixes
2024-02-04 04:18:59 -05:00
Max Brunsfeld
e054de4191
Return an error from build-wasm if scanner uses unavailable functions
2024-02-02 12:04:49 -08:00
Amaan Qureshi
f4c40f6098
fix: do not install parser.h
2024-02-02 11:30:24 -05:00
Max Brunsfeld
1d8975319c
Merge pull request #2840 from tree-sitter/language-reference-count
...
Introduce APIs for managing the lifetimes of languages, allow WASM languages to be deleted
2024-01-30 10:24:37 -08:00
Max Brunsfeld
d351f81b4a
Release stale instances from wasm store when languages are dropped
2024-01-29 10:17:49 -08:00
Marshall Roch
6eacca9606
fix documentation typos
2024-01-25 20:33:15 -05:00
Max Brunsfeld
675da7bfe8
Free C error message properly when loading wasm language fails
2023-12-31 10:05:42 -08:00
Max Brunsfeld
4a8e4b1963
Allow wasm languages to be deleted
2023-12-27 15:00:16 -08:00
Max Brunsfeld
da16cb1459
Introduce language ref-count management C APIs, remove Copy impl for Language in Rust
2023-12-27 14:59:16 -08:00
Max Brunsfeld
13dd76e444
Return an informative error on failing to construct a WasmStore
2023-11-27 17:48:29 -08:00
Max Brunsfeld
6fd7a1e44e
Return informative error when load_language fails
2023-11-26 12:15:05 -08:00
Max Brunsfeld
2c0b52eec6
Add a comment about how wasmtime-c-api is linked by cargo
2023-10-27 21:53:31 +01:00
Max Brunsfeld
7715e2477a
Use Box::leak when passing wasm engine to C code
2023-10-27 21:32:28 +01:00
Max Brunsfeld
81a1a1733d
Fix C compile warnings in wasm.c
2023-10-27 12:16:05 +01:00
Max Brunsfeld
f4e2f68f14
Merge branch 'master' into wasm-language
2023-10-27 12:11:43 +01:00
Andrew Hlynskyi
524bf7e2c6
Merge pull request #2607 from ahlinc/fix-zero-deallocs
...
fix: `dealloc` calls on zero pointers
2023-09-03 09:45:52 +03:00
Andrew Hlynskyi
9cc1daafca
chore(ffi): remove enum name prefixes from all C enum values
2023-09-03 07:38:27 +03:00
Andrew Hlynskyi
67a5dbdd93
fix: dealloc calls on zero pointers
2023-09-03 06:53:18 +03:00
Andrew Hlynskyi
52f7eaff31
chore(rust): make Query extra predicates state fully immutable
2023-09-02 23:12:28 +03:00
Amaan Qureshi
09ac28c77d
feat!: properly handle predicates used on quantified captures
2023-08-31 16:01:36 -04:00
Andrew Hlynskyi
f9117a0221
doc: Add internal links for api.h funcs
2023-08-28 23:09:37 +03:00
Andrew Hlynskyi
756e51867d
doc: fix cargo doc warnings
2023-08-28 23:09:37 +03:00
mgunyho
bdc0e44d45
doc: Include README in top-level module documentation
2023-08-28 21:27:41 +03:00
mgunyho
8d894bb050
doc: Add backticks to all internal links
2023-08-28 19:26:38 +03:00
mgunyho
dcfd91fc25
doc: Add internal links to backticked text where applicable
2023-08-28 19:26:37 +03:00
mgunyho
4fabc49066
doc: Fix broken link
2023-08-28 19:26:33 +03:00
Andrew Hlynskyi
abd57bc69b
chore: simplify script/generate-bindings
2023-08-21 02:56:14 +03:00
Andrew Hlynskyi
4278e03b11
feat: generate Rust bindings during build process
...
It can be used as:
> cargo build -p tree-sitter -F bindgen
2023-08-21 02:56:14 +03:00
James McCoy
545ef842de
Remove -Werror from default CFLAGS
...
Production builds shouldn't include -Werror by default since that could
cause spurious build failures when there are toolchain updates.
CI uses -Werror to prevent warnings, so that should be sufficient.
2023-08-18 14:23:19 -04:00
Amaan Qureshi
458b5de0fc
feat: add any-of predicate
2023-08-17 22:20:57 -04:00
Andrew Hlynskyi
f9e8802234
Use the same flags in lib's build.rs as in Makefile
2023-08-17 16:27:52 +03:00
Andrew Hlynskyi
26c3ae7b98
Rename: ts_lookahead_iterator_advance -> ts_lookahead_iterator_next
2023-08-09 14:40:29 +03:00
Amaan Qureshi
d710dc9c89
fix: ensure function signatures in the API consistently show parameter names
2023-08-03 22:17:53 +01:00
Andrew Hlynskyi
e23e4cea18
Make Rust code statements more compact and in functional style
2023-08-03 14:28:00 +03:00
Andrew Hlynskyi
cb8c89fbd7
Merge pull request #2464 from tree-sitter/relax-lifetimes
...
feat: rework lifetimes, relax dependencies and tie only on implementations
2023-08-03 14:22:33 +03:00
Andrew Hlynskyi
c85f81f625
feat: rework lifetimes, relax deps and tie only on impls
2023-08-03 13:13:26 +03:00
Andrew Hlynskyi
485d192880
binding_rust: set_max_start_depth accepts optional to reset limit
2023-08-03 11:45:36 +03:00
Samuel Moelius
41ec8b4166
Partially revert d4d5e29
2023-08-03 11:41:50 +03:00
Andrew Hlynskyi
d185f3126f
Make LookaheadIterator Sync and Send
2023-08-03 03:50:35 +03:00
Andrew Hlynskyi
4eb22ed3ae
Fix UB for LookaheadIterator
2023-08-03 03:49:57 +03:00
Andrew Hlynskyi
1fbe929ad9
feat: define Sync, Send for Node and TreeCursor types
2023-08-03 03:03:03 +03:00
Andrew Hlynskyi
0f533b909d
chore: group Sync, Send impls by type
2023-08-03 03:03:03 +03:00
Andrew Hlynskyi
b456f831d1
Remove PartialOrd, Ord deriving from Range in Rust lib
2023-08-02 18:30:32 +03:00
Andrew Hlynskyi
1ac134a97d
Apply ts_node_is_error in Rust binding
2023-08-02 00:27:19 +03:00
Andrew Hlynskyi
a08c61235d
Fix, reference by value for Language as everywhere
2023-08-02 00:04:24 +03:00
Andrew Hlynskyi
759af6d0a4
Remove Copy, Clone from TSLookaheadIterator raw binding struct
2023-08-02 00:04:17 +03:00
Daumantas Kavolis
8c789bf7d5
After review
2023-08-02 00:02:33 +03:00
Daumantas Kavolis
8d5462cea4
LookaheadIterator doesn't need lifetime annotation as it depends on language only
2023-08-02 00:02:33 +03:00
Daumantas Kavolis
672d38803e
Add iteration over names
2023-08-02 00:02:33 +03:00
Daumantas Kavolis
1f52f2f1dc
Symbols without aliases should be used for lookahead
2023-08-02 00:02:33 +03:00
Daumantas Kavolis
c47e217e73
API extensions
2023-08-02 00:02:33 +03:00
Andrew Hlynskyi
cd1d717551
chore: regenerate bindings.rs after #2370
2023-08-01 21:33:55 +03:00
Andrew Hlynskyi
d489d71623
fix: children_by_field_id API to receive non option field id
2023-08-01 12:21:24 +03:00
Andrew Hlynskyi
fec7454ced
chore: simply use FieldId::new because it contains id == 0 check
2023-08-01 11:45:54 +03:00
Andrew Hlynskyi
9c06b90fc2
More general TextProvider for F
2023-07-31 04:13:18 +03:00
Andrew Hlynskyi
7938db90fe
TextProvider with generic return type
2023-07-30 21:56:58 +03:00
Amaan Qureshi
36c6c8aadf
Merge pull request #2423 from amaanq/nonzero-field-id
...
feat!: use `Option<NonZeroU16>` for TSFieldIds
2023-07-27 13:04:34 -04:00
Amaan Qureshi
7ad21396c2
feat!: use Option<NonZeroU16> for TSFieldIds
2023-07-27 12:26:25 -04:00
Amaan Qureshi
a4f939520f
docs: update Rust bindings' README
2023-07-24 02:07:09 -04:00
Andrew Hlynskyi
7afd5a1a8b
rust: remove Copy, Clone from opaque ptr data structs
2023-07-14 00:19:23 +03:00