Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
259 commits
Select commit Hold shift + click to select a range
a59e311
feat(ls): improve code completion by distinguishing between enums and…
plusvic Jul 30, 2026
0bd9c4e
chore: bump MSRV to 1.93.0.
plusvic Jul 30, 2026
873ddde
chore: upgrade `wasmtime` to version 45.0.3.
plusvic Jul 30, 2026
cc8e4ff
chore: upgrade to `daachorse` version 4.0.0.
plusvic Jul 30, 2026
1b0da61
chore: upgrade dependencies.
plusvic Jul 30, 2026
d64bc0f
chore(deps-dev): bump postcss from 8.5.15 to 8.5.25 in /playground (#…
dependabot[bot] Jul 30, 2026
9e0267d
chore: upgrade `itertools` to version 0.15.0.
plusvic Jul 30, 2026
439d642
fix: anchor patterns in 'of' expressions with explicit offsets
plusvic Jul 31, 2026
b786b48
chore(deps-dev): bump brace-expansion in /ls/editors/code (#727)
dependabot[bot] Aug 3, 2026
9d62d72
fix: allow Teddy algorithm to propagate early termination
plusvic Aug 3, 2026
9266f44
fix: add missing import.
plusvic Aug 3, 2026
2f27699
refactor: replace the `Action` type with the standard `ControlFlow`.
plusvic Aug 3, 2026
5e40e6a
feat: raise warning when patterns are unintendedly included in a set.…
plusvic Aug 5, 2026
448922c
chore(deps-dev): bump undici from 7.28.0 to 7.29.0 in /ls/editors/cod…
dependabot[bot] Aug 5, 2026
6e0a753
chore(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /ls/editors/cod…
dependabot[bot] Aug 5, 2026
be2a325
docs: publish blog post about `unintended_pattern_in_set` warning.
plusvic Aug 5, 2026
15f4984
feat: add dark and light mode theme support
plusvic Aug 7, 2026
7e43f4b
fix: issues with the sandbox after previous changes.
plusvic Aug 7, 2026
74eb947
chore(playground): add light theme mark (#731)
kevinmuoz Aug 7, 2026
cc5a790
chore(deps-dev): bump js-yaml from 4.2.0 to 4.3.1 in /ls/editors/code…
dependabot[bot] Aug 17, 2026
db4abd7
refactor: use carrying_add instead of overflowing_add (#732)
saguywalker Aug 17, 2026
299a78a
chore: upgrade `daachorse` to version 5.0.
plusvic Aug 17, 2026
662cf9d
chore: upgrade dependencies.
plusvic Aug 17, 2026
3480292
chore: upgrade `logos` to version 0.16.1.
plusvic Aug 17, 2026
f6b58a0
chore: upgrade `rowan` to version 0.17.0
plusvic Aug 17, 2026
f76e08f
chore: upgrade dependencies.
plusvic Aug 17, 2026
31aaf28
style: run `cargo fmt`.
plusvic Aug 17, 2026
3c411d8
feat: add `rlib` crate types to `yara-x-capi` and `yara-x-py` to allo…
plusvic Aug 19, 2026
54435ac
fix: rename Python library to `yara_x_py` to prevent conflict with th…
plusvic Aug 20, 2026
1429bfd
docs: fix warnings while running `cargo doc`.
plusvic Aug 20, 2026
95fc833
fix: explicitly set Python module name to `yara_x`
plusvic Aug 20, 2026
e389dda
ci: update GitHub Action versions (#740)
zdiff Aug 24, 2026
a1f4e54
chore: bump minimum Go version to 1.26 (#739)
zdiff Aug 24, 2026
7fd65d9
ci: publish the language server to Open VSX registry.
plusvic Aug 24, 2026
396b8c3
ci: allow publishing to VS Marketplace to fail gracefully
plusvic Aug 24, 2026
35e16ef
chore: disable modules `msi`, `vba` and `olecf` as they are still exp…
plusvic Aug 24, 2026
529a207
perf: apply file size and file header constraints only to regular exp…
plusvic Aug 24, 2026
ce67892
tests: fix test case broken after disabling experimental modules.
plusvic Aug 24, 2026
60ad069
chore: bump version to 1.20.0.
plusvic Aug 24, 2026
9b14668
docs: remove unused field `rust_module` from module options.
plusvic Aug 24, 2026
7923f2d
chore: update `vt` module. (#742)
copybara-service[bot] Aug 24, 2026
def4461
refactor: use `Pattern` as single source of truth for filesize and he…
plusvic Aug 24, 2026
26875e4
chore: update generated protos.
plusvic Aug 25, 2026
9c0b416
feat(py): add Scanner.set_module_output to Python bindings (#744)
CfirTsabari Aug 25, 2026
6e02c2d
perf(regex): use bitmaps for four-range byte classes (#747)
king-tero Aug 27, 2026
c187d29
feat: add debug command for selected atoms (#748)
matt-acsc Aug 27, 2026
e2ae57c
docs: add comment explaining how `Pattern::atoms` works internally.
plusvic Aug 27, 2026
24cd993
perf(regex): store PikeVM instruction pointers as u32 (#750)
king-tero Aug 27, 2026
b86161e
feat(cli): expose native code serialization (#754)
king-tero Aug 28, 2026
02a0ddd
feat(cli): read scan lists from stdin (#753)
king-tero Aug 28, 2026
85f6f93
chore(deps-dev): bump js-yaml from 4.3.1 to 4.3.2 in /ls/editors/code…
dependabot[bot] Sep 21, 2026
3049219
chore(deps-dev): bump @humanfs/node in /ls/editors/code (#764)
dependabot[bot] Sep 21, 2026
e3350fa
chore(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in /ls/editors/cod…
dependabot[bot] Sep 21, 2026
dbf16ab
perf(wasm): skip empty pattern ranges (#756)
king-tero Sep 21, 2026
7f5c029
tests: add regression test for issue #771.
plusvic Sep 21, 2026
1db7929
perf(regex): swap PikeVM thread buffers by reference (#755)
king-tero Sep 21, 2026
cdf4692
perf(parser): clear speculative errors after each top-level item (#761)
king-tero Sep 21, 2026
dfb0c6b
perf: propagate `filesize` bounds and file header constraints across …
plusvic Sep 21, 2026
6f55e90
style: homogenize some identifiers.
plusvic Sep 21, 2026
3f35e3d
tests: add test cases for HeaderConstraint::merge.
plusvic Sep 22, 2026
21c1b88
style: run `cargo fmt`.
plusvic Sep 22, 2026
1a41bd5
tests: try fixing #774.
plusvic Sep 22, 2026
91d1aec
chore: add instructions how to build the docs and Python package (#773)
nyx0 Sep 22, 2026
1dd1423
fix(py): make yara-x-py's module features actually work (#766)
CfirTsabari Sep 22, 2026
cbca186
chore(capi): expose yara-x modules and update default features
plusvic Sep 22, 2026
b846b3b
feat(py): allow `pathlib.Path` for `add_include_dir`.
plusvic Sep 22, 2026
23a75aa
feat: add support for more ELF `e_machine` architecture types
plusvic Sep 23, 2026
61a2dc2
fix: exclude non-matching files from ndjson output.
plusvic Sep 23, 2026
4fbe5d9
style: minor changes.
plusvic Sep 23, 2026
d8d4869
Project import generated by Copybara. (#779)
copybara-service[bot] Sep 23, 2026
b89b794
perf(scanner): track disabled patterns in a bitmap (#758)
king-tero Sep 24, 2026
a41d91a
perf(scanner): stop tracking pattern matches in fast-scan mode once c…
plusvic Sep 25, 2026
72979f0
perf: improve logic for anchoring pattern. (#782)
plusvic Sep 25, 2026
1dbdb15
refactor: associate fast-scan match limits directly with patterns
plusvic Sep 25, 2026
2367413
style: run `cargo fmt`.
plusvic Sep 28, 2026
ffc4793
fix: restore limit controlling when to show warning message due to to…
plusvic Sep 28, 2026
df102df
perf(scanner): adjust memory-map file size threshold
plusvic Sep 28, 2026
f093332
chore: bump serialization format version.
plusvic Sep 28, 2026
8e8bc78
tests: fix test case.
plusvic Sep 28, 2026
1b428d8
chore: upgrade dependencies.
plusvic Sep 29, 2026
7b2637d
chore: bump version to 1.21.0.
plusvic Sep 29, 2026
a8f7791
docs: improve documentation for entropy function. (#783)
agreene0 Sep 29, 2026
3bbe876
feat: add allow the `dump` command to show information from the `zip`…
plusvic Sep 30, 2026
07f7a94
feat: add `pe.offset_to_rva` to convert file offset to RVA
plusvic Oct 1, 2026
e62dad5
chore: fix clippy warnings.
plusvic Oct 1, 2026
441911e
fix: don't implement Copy for MetaType.
plusvic Oct 1, 2026
8b9b759
chore: bump MSRV to 1.95.0.
plusvic Oct 1, 2026
d029d25
chore: stop using `AtomicU64::fetch_update` as it is deprecated.
plusvic Oct 1, 2026
ca5262a
chore(deps-dev): bump undici from 7.29.0 to 7.30.0 in /ls/editors/cod…
dependabot[bot] Oct 1, 2026
029e9c9
fix: correct output line termination with active progress bar.
plusvic Oct 2, 2026
5b1b4ac
chore(deps-dev): bump brace-expansion in /ls/editors/code (#790)
dependabot[bot] Oct 2, 2026
894a215
chore(deps-dev): bump markdown-it in /ls/editors/code (#791)
dependabot[bot] Oct 2, 2026
7a9e860
feat(ls): implement `Workspace Symbols` language feature. (#788)
prosperritty Oct 5, 2026
0ed7485
fix: enhance C API robustness with comprehensive null checks and deta…
plusvic Oct 5, 2026
1dbd177
style: run `cargo fmt`.
plusvic Oct 5, 2026
9d6a1d8
fix: improve robustness of deserialized rule data validation
plusvic Oct 5, 2026
015a192
style: run `cargo fmt`.
plusvic Oct 5, 2026
d34819c
feat: link compiler errors and warnings to documentation
plusvic Oct 5, 2026
ee3aa16
chore: upgrade `wasmtime` to version 48.0.5.
plusvic Oct 6, 2026
398eef2
chore: upgrade hash and crypto dependencies.
plusvic Oct 6, 2026
fee4fa4
style: fix clippy warnings.
plusvic Oct 6, 2026
763a943
chore: upgrade dependencies.
plusvic Oct 6, 2026
1923fb5
chore(ls): upgrade dependencies.
plusvic Oct 6, 2026
004f78e
sytle: run `cargo fmt`.
plusvic Oct 6, 2026
9d8979b
chore: upgrade getrandom to 0.4.3.
plusvic Oct 7, 2026
92c1ec1
feat: improve documentation capabilities of `Code Completion` feature…
prosperritty Oct 7, 2026
2ff51e9
feat(ls): completing non-top-level symbol auto imports the module. (#…
prosperritty Oct 7, 2026
60a1b85
docs: move instructions for installing with `brew` in macOS to the co…
plusvic Oct 8, 2026
707cd21
chore(ls): Document Highlights does not highlight entire rule definit…
plusvic Oct 8, 2026
01be7a0
feat(ls): add --help and --version options to the yr-ls CLI (#798)
chojuninengu Oct 8, 2026
a7574d6
chore(deps-dev): bump source-map-js from 1.2.1 to 1.2.2 in /playgroun…
dependabot[bot] Oct 8, 2026
ee7c4c7
chore(deps): bump brace-expansion from 2.1.1 to 2.1.7 in /playground …
dependabot[bot] Oct 8, 2026
b8e09cb
fix(capi): don't force yara-x default features in yara-x-capi (#802)
CfirTsabari Oct 9, 2026
0531a86
fix: exclude `test_proto` modules from release builds. (#805)
prosperritty Oct 9, 2026
6d22e07
Project import generated by Copybara. (#804)
copybara-service[bot] Oct 9, 2026
de67857
chore: fix zizmor warning.
plusvic Oct 13, 2026
9b774d3
tests: fix tests when `constant-folding` is disabled.
plusvic Oct 13, 2026
3c8d33c
ci: run `yara-x` tests without default features.
plusvic Oct 13, 2026
7b23432
refactor(modules): use `int64` instead of `uint64` for module fields.
plusvic Oct 13, 2026
5996397
feat: implement `int64` and `int64be` built-in functions.
plusvic Oct 7, 2026
3faa8cd
refactor(types): replace `TypeValue::Integer` with width-specific var…
plusvic Oct 13, 2026
40edad7
feat(parser): support integer literals greater than `i64::MAX`.
plusvic Oct 13, 2026
3666849
feat: add support for unsigned 64-bit integers.
plusvic Oct 13, 2026
efb028f
feat: keep the width and signedness of protobuf integer fields.
plusvic Oct 13, 2026
7d16c1f
fix(compiler): avoid WASM trap when dividing `i64::MIN` by -1.
plusvic Oct 13, 2026
af690da
fix(compiler): quantifiers computed at runtime that are out of range …
plusvic Oct 13, 2026
697e36e
fix(compiler): fix the number of iterations in loops over ranges.
plusvic Oct 13, 2026
9e00369
fix: don't truncate 64-bit offsets and indexes in 32-bit platforms.
plusvic Oct 13, 2026
0c936a1
feat(compiler): implement constant folding for division and modulus.
plusvic Oct 13, 2026
22a8278
feat: raise warning when an implicit sign conversion changes the valu…
plusvic Oct 13, 2026
8366ce0
docs: clarify that `uint32` fields are promoted to signed integers.
plusvic Oct 14, 2026
9c2b3c7
refactor: reduce peak memory consumption during `Compiler::build()`.
plusvic Oct 15, 2026
5a574cd
refactor: reduce WASM blocks and block results to prevent `wasmtime` …
plusvic Oct 15, 2026
1422387
chore: update generated protobufs.
plusvic Oct 15, 2026
e00fbac
perf: group string literal comparisons in "or" conditions into litera…
plusvic Oct 16, 2026
cacc96f
chore: upgrade `zip` crate to version 9.0.4.
plusvic Oct 16, 2026
786f914
chore: upgrade `wasmtime` to version 48.0.6.
plusvic Oct 16, 2026
da19715
chore: fix out-of-sync version of `yara-x` crate.
plusvic Oct 16, 2026
649cd3b
chore: enable automatic Gemini reviews on new pull requests.
plusvic Oct 16, 2026
1706b5d
Project import generated by Copybara. (#812)
copybara-service[bot] Oct 19, 2026
20c7949
fix: limit the size of emitted WASM functions and return error when a…
plusvic Oct 19, 2026
f2a0b20
feat: expose xor_key in C and Go APIs. (#814)
plusvic Oct 19, 2026
63aa201
chore: update generated protobufs.
plusvic Oct 20, 2026
3bcebfe
chore: upgrade dependencies.
plusvic Oct 20, 2026
fa84ca1
chore: bump version to 1.22.0.
plusvic Oct 20, 2026
4156104
docs: clarify that `xint64xx` functions were introduced in v1.22.0.
plusvic Oct 20, 2026
1fe41aa
tests: fix flaky test_teddy_scan_timeout (#774).
plusvic Oct 20, 2026
e27597f
tests: run test_teddy_scan_timeout only on platforms that support Teddy.
plusvic Oct 20, 2026
37153d0
Project import generated by Copybara. (#815)
copybara-service[bot] Oct 21, 2026
b3eb9b0
chore(playground): bump pinned Node.js to 24.22.1 (security release) …
danipv Oct 22, 2026
cdc62f1
chore(deps-dev): bump markdown-it in /ls/editors/code (#816)
dependabot[bot] Oct 22, 2026
a6c7cc0
chore: enable pyo3 abi3 support for Python 3.9+.
plusvic Oct 22, 2026
e063ac1
chore: update generated protobufs.
plusvic Oct 22, 2026
b23dd0e
refactor: refine Mach-O parsing error logging to use Display trait
plusvic Oct 22, 2026
85b58ed
chore(deps-dev): bump vite from 7.3.6 to 7.3.7 in /playground (#818)
dependabot[bot] Oct 22, 2026
a0b49a4
fix: panic when a regex is translated to a masked literal and it has …
plusvic Oct 23, 2026
cd237c9
fix: pin workspace dependencies to exact version (#820)
plusvic Oct 23, 2026
d5a4290
tests: add test cases for regular expression with an empty repetition…
plusvic Oct 23, 2026
834e697
fix: panic when compiling regexes with deeply nested fixed repetitions.
plusvic Oct 23, 2026
8a21304
chore: use pull_request event for PR title validation
plusvic Oct 24, 2026
885bd56
chore(deps-dev): bump undici from 7.30.0 to 7.30.1 in /ls/editors/cod…
dependabot[bot] Oct 26, 2026
582e825
chore(deps): bump wasmtime from 48.0.6 to 48.0.7 (#822)
dependabot[bot] Oct 26, 2026
8192fdd
chore(deps-dev): bump fast-uri from 3.1.7 to 3.1.9 in /ls/editors/cod…
dependabot[bot] Oct 26, 2026
2a4c9f8
tests: add additional tests for `$` and `^` boundaries.
plusvic Oct 26, 2026
fc38749
chore: bump version to 1.22.1.
plusvic Oct 26, 2026
198fa48
ci: stop testing with Python 3.9.
plusvic Oct 26, 2026
7a219f8
fix: broken test cases after upgrading `zip` crate.
plusvic Oct 26, 2026
e664861
ci: upgrade to `wasm-pack` version 0.15.0 and `wasm-bindgen` version …
plusvic Oct 26, 2026
e6b5d7a
tests: fix broken test cases in `yara-x-js`.
plusvic Oct 26, 2026
00cec1d
docs: publish new blog entry "Who launched that process?"
plusvic Oct 26, 2026
c465b46
fix: memory leaks in Scanner and ReadFrom when Destroy isn't called.
plusvic Oct 26, 2026
cbc5834
chore(playground): update YARA-X to v1.22.0 (#824)
kevinmuoz Oct 27, 2026
71cfcc9
fix: false positive E048 when multiple rules share a WASM function.
plusvic Oct 27, 2026
79e81c1
chore: add docs-only site build (#830)
dharineesh27 Oct 27, 2026
e9d3649
docs: add documentation for the magic module (#829)
arxhr007 Oct 28, 2026
64dd140
fix: auto-discover libmagic library search path in build.rs.
plusvic Oct 28, 2026
7bb260e
ci: fix Python sdist build in release workflow.
plusvic Oct 28, 2026
00a4c81
docs: explain how to build the Python library with magic-module support.
plusvic Oct 28, 2026
089581f
chore(deps-dev): bump qs from 6.15.2 to 6.17.0 in /ls/editors/code (#…
dependabot[bot] Oct 28, 2026
37d39d0
ci: remove the "# v1" comment from every place where the rust-toolcha…
plusvic Oct 28, 2026
9e89546
fix(parser): handle Unicode whitespace without splitting UTF-8 spans.
plusvic Oct 28, 2026
2fcf36e
fix: address undefined-variable bitmap by byte in WASM memory.
plusvic Oct 28, 2026
e2153a9
fix: roll back anchored_sub_patterns when restoring compiler snapshots.
plusvic Oct 28, 2026
e89aaae
feat(re): support \b{start-half} and \b{end-half} in regular expressi…
plusvic Oct 28, 2026
eed7687
fix(re): track scoped Unicode flags in non-capturing groups during va…
plusvic Oct 28, 2026
1baf65c
feat(re): compile Unicode classes using UTF-8 byte sequences
plusvic Oct 29, 2026
f2fa044
fix(compiler): consider only the first 64 KiB in best_atom_in_bytes.
plusvic Oct 29, 2026
ac2e94b
fix(re): return Error::TooLarge instead of panicking on oversized Fas…
plusvic Oct 29, 2026
7883874
fix(re): prevent usize underflow in FastVM::jump_bck on wide patterns.
plusvic Oct 29, 2026
294a49a
fix(compiler): bound atom search to first 32 KiB to prevent wide back…
plusvic Oct 29, 2026
c46e2a7
fix(compiler,re): handle large and coalesced hex jumps and widen Fast…
plusvic Oct 29, 2026
07af39a
test(compiler): fix tests without fast-regexp feature and clippy octa…
plusvic Oct 29, 2026
9137a19
fix(parser): enforce MAX_CST_DEPTH in ParserImpl to prevent stack ove…
plusvic Oct 29, 2026
64d4d90
fix(parser): enforce MAX_AST_DEPTH on condition expressions and drop …
plusvic Oct 29, 2026
64c2a16
fix(re): handle bare repetition operators in relaxed_re_syntax mode.
plusvic Oct 30, 2026
431834f
fix(re): avoid mid-UTF-8 slice panic when escaping braces in relaxed_…
plusvic Oct 30, 2026
e3a6a23
fix(re): adjust Validator error spans in relaxed_re_syntax mode.
plusvic Oct 30, 2026
95cd52e
fix(re): map error spans per edit position in relaxed_re_syntax mode.
plusvic Oct 30, 2026
fb2332a
fix(re): avoid infinite loop on (?x) comments with braces in relaxed_…
plusvic Oct 30, 2026
360f42f
fix(compiler): avoid panic on empty allowed tags list in Tags linter.
plusvic Oct 30, 2026
b107e9d
fix(fmt): handle Unicode whitespace in Tokens::next without panicking.
plusvic Oct 30, 2026
c557033
fix(capi,parser): handle literal null bytes in metadata strings witho…
plusvic Oct 30, 2026
6b7bbb7
fix(compiler): support regular expressions in with statements.
plusvic Oct 30, 2026
0f71e3b
fix(compiler,scanner): build multi-pattern regex sets directly from H…
plusvic Nov 2, 2026
220a268
fix(hash): use checked arithmetic for offset and size bounds.
plusvic Nov 2, 2026
30074ca
fix(console): use checked arithmetic for offset and length bounds.
plusvic Nov 2, 2026
02c6d37
fix(scanner): avoid out-of-bounds slice in NonMatchingRules::new on W…
plusvic Nov 2, 2026
e7510e2
fix(math): return undef on math.abs(i64::MIN) instead of overflowing.
plusvic Nov 2, 2026
3af8e05
fix(wasm): handle runtime string slices larger than 64 KiB without pa…
plusvic Nov 2, 2026
852fed0
fix(scanner): avoid integer overflow in verify_literal.
plusvic Nov 2, 2026
77d84c8
fix(compiler): avoid truncating anchor offsets on 32-bit targets.
plusvic Nov 2, 2026
8001188
fix(pe): avoid u32 addition overflows in section_index and calculate_…
plusvic Nov 2, 2026
8f4999a
fix(pe,scanner): avoid panics on unset fields in user-provided PE mod…
plusvic Nov 2, 2026
3b09b1e
fix(compiler): traverse Quantifier::Percentage expressions in IR DFS.
plusvic Nov 2, 2026
1cdf204
fix(compiler): replace children in ForIn iterables and Of quantifiers.
plusvic Nov 2, 2026
a2a4823
fix(compiler): reserve loop VarStack frames before compiling quantifi…
plusvic Nov 2, 2026
0165856
fix(compiler): track ForOf pattern-variable dependencies during loop …
plusvic Nov 2, 2026
14ec84b
fix(compiler): bound loop hoisting candidates and avoid overflowing M…
plusvic Nov 2, 2026
d90d431
fix(cli): avoid slice panic and file truncation on overlapping or dup…
plusvic Nov 2, 2026
b2293bd
fix(cli): avoid unbounded recursion on self-referential rules in yr d…
plusvic Nov 2, 2026
97933f3
test(compiler): make combined_too_large exceed NFA limit on 32-bit ta…
plusvic Nov 2, 2026
2c0360c
fix(ls): enforce lexical scoping for for and with bindings in find_de…
plusvic Nov 2, 2026
b4b9192
fix(ls): bound recursion and handle incomplete declarations in get_type.
plusvic Nov 2, 2026
5a1c488
fix(ls): reparse cached CST when text diverges on document open or save.
plusvic Nov 2, 2026
8b6d7f1
fix(ls): clamp out-of-bounds positions and map UTF-16 columns in Line…
plusvic Nov 2, 2026
1973e8a
fix(ls): build parent selection ranges iteratively instead of recursi…
plusvic Nov 2, 2026
b3e1ffe
fix(ls): pre-compile metadata validation regexes without unwrapping.
plusvic Nov 2, 2026
f489e2d
fix(cli): pre-compile metadata regexes with bytes::Regex in yr check.
plusvic Nov 2, 2026
985d3cd
fix(parser): avoid Span::offset overflow and panic in Builder::string…
plusvic Nov 2, 2026
46ea1af
fix(parser): emit structured syntax error when source size reaches Sp…
plusvic Nov 2, 2026
c7d4afb
fix(parser): allow skipped trivia gaps in CST::try_from.
plusvic Nov 2, 2026
24d964f
fix(parser): handle empty CST nodes in Node::start_pos and Node::end_…
plusvic Nov 2, 2026
ae8ff83
fix: let --ignore-module ignore modules that YARA-X implements (#833)
arxhr007 Nov 3, 2026
c8f99d2
fix(py): don't mistake maps with encoding/value keys for encoded valu…
CfirTsabari Nov 3, 2026
d970018
test(py): expect bytes for metadata strings with null bytes.
plusvic Nov 3, 2026
3b91c41
chore(deps): bump zip from 8.6.0 to 9.0.5 in /examples/custom-module …
dependabot[bot] Nov 4, 2026
b754a70
chore(deps): bump zip from 8.5.1 to 9.0.5 in /lib/fuzz (#839)
dependabot[bot] Nov 4, 2026
ece6b0f
chore(deps): bump wasmtime from 43.0.1 to 48.0.7 in /lib/fuzz (#838)
dependabot[bot] Nov 4, 2026
c68a1c6
chore: upgrade `wasmtime` to version 48.0.8.
plusvic Nov 4, 2026
910a938
perf: improve scanner creation performance (#841)
plusvic Nov 4, 2026
afe4585
chore: bump version to 1.23.0.
plusvic Nov 5, 2026
596766a
chore: update vt module (#842)
copybara-service[bot] Nov 5, 2026
b922ec2
chore: update generated module protobufs.
plusvic Nov 5, 2026
cfe605d
fix(dotnet): handle non-monotonic method_list and table truncation in…
plusvic Nov 5, 2026
3533f81
chore: increase MAX_FUNC_INSTRS from 100k to 300k.
plusvic Nov 5, 2026
1bda5fc
fix(olecf): convert stream size to i64 when building the module outpu…
VISHNU0906 Nov 5, 2026
0258378
perf: reduce memory usage and improve performance of Struct and dotne…
plusvic Nov 6, 2026
8f98c97
refactor: use Option<Vec<StringConstraint>> in TypeValue::String
plusvic Nov 6, 2026
b47e3fe
chore: bump SERIALIZATION_VERSION.
plusvic Nov 6, 2026
698ebc9
tests: fix test case broken with previous commit.
plusvic Nov 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 3 additions & 2 deletions .gemini/config.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
code_review:
disable: true
comment_severity_threshold: HIGH
pull_request_opened:
summary: true
include_drafts: false
188 changes: 188 additions & 0 deletions .github/scripts/update_playground.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@

#!/usr/bin/env python3
"""Update the YARA-X playground from a published release.

Usage: python3 .github/scripts/update_playground.py 1.22.0
Requires Python 3.11+, Rust, wasm32-unknown-unknown, Node.js and npm.
"""

import argparse
import re
import shlex
import shutil
import subprocess
import tempfile
import tomllib
from pathlib import Path

ROOT = Path(__file__).resolve().parents[2]
PLAYGROUND = ROOT / "playground"
LS_PACKAGE = PLAYGROUND / "src/wasm/yara-x-ls/pkg"
LS_FILES = (
"yara_x_ls.js",
"yara_x_ls.d.ts",
"yara_x_ls_bg.wasm",
"yara_x_ls_bg.wasm.d.ts",
)


def run(*command: str | Path, cwd: Path = ROOT) -> None:
args = [str(arg) for arg in command]
print(f"\n$ {shlex.join(args)}", flush=True)
subprocess.run(args, cwd=cwd, check=True)


def parse_version(value: str) -> str:
if not re.fullmatch(r"v?\d+\.\d+\.\d+", value):
raise argparse.ArgumentTypeError("Expected 1.22.0 or v1.22.0")
return value.removeprefix("v")


def verify_npm_release(version: str) -> None:
package = f"@virustotal/yara-x@{version}"
result = subprocess.run(
["npm", "view", package, "version"],
capture_output=True,
text=True,
)

if result.returncode != 0:
raise ValueError(
f"Cannot verify {package} on npm: {result.stderr.strip()}"
)

if result.stdout.strip() != version:
raise ValueError(
f"Expected npm version {version}, got {result.stdout.strip()!r}"
)

print(f"npm release found: {package}", flush=True)


def fetch_release(version: str, directory: Path) -> Path:
source = directory / "source"

run(
"git", "clone", "--depth", "1", "--branch", f"v{version}",
"--single-branch", "https://github.com/VirusTotal/yara-x.git",
source,
)

manifest_path = source / "ls/Cargo.toml"

if not manifest_path.is_file():
raise ValueError(
f"Release v{version} does not include the Language Server"
)

manifest = tomllib.loads(
manifest_path.read_text(encoding="utf-8")
)

if manifest["package"]["name"] != "yara-x-ls":
raise ValueError(
f"Release v{version} does not contain yara-x-ls"
)

return source


def wasm_bindgen_version(source: Path) -> str:
lockfile = tomllib.loads(
(source / "Cargo.lock").read_text(encoding="utf-8")
)

for package in lockfile["package"]:
if package["name"] == "wasm-bindgen":
return package["version"]

raise ValueError("wasm-bindgen not found in Cargo.lock")


def build_language_server(source: Path) -> Path:
run(
"cargo", "build",
"--target", "wasm32-unknown-unknown",
"--no-default-features",
"-p", "yara-x-ls", "--lib",
"--release", "--locked",
cwd=source,
)

return source / "target/wasm32-unknown-unknown/release/yara_x_ls.wasm"


def generate_bindings(
source: Path, wasm: Path, directory: Path
) -> Path:
tools = directory / "tools"

run(
"cargo", "install", "wasm-bindgen-cli", "--locked",
"--version", wasm_bindgen_version(source),
"--root", tools,
)

output = directory / "bindings"

run(
tools / "bin/wasm-bindgen", wasm,
"--target", "web",
"--out-dir", output,
)

for filename in LS_FILES:
if not (output / filename).is_file():
raise ValueError(f"Missing generated LS file: {filename}")

return output


def update_playground(version: str, bindings: Path) -> None:
run(
"npm", "install", "--save-exact",
f"@virustotal/yara-x@{version}",
cwd=PLAYGROUND,
)

LS_PACKAGE.mkdir(parents=True, exist_ok=True)

for filename in LS_FILES:
shutil.copyfile(bindings / filename, LS_PACKAGE / filename)

run("npm", "run", "format", cwd=PLAYGROUND)
run("npm", "run", "build", cwd=PLAYGROUND)


def main() -> None:
parser = argparse.ArgumentParser(
description="Update the YARA-X playground"
)
parser.add_argument(
"version",
type=parse_version,
help="e.g. 1.22.0 or v1.22.0",
)

version = parser.parse_args().version

verify_npm_release(version)

with tempfile.TemporaryDirectory(
prefix="yara-x-playground-"
) as temporary:
directory = Path(temporary)

source = fetch_release(version, directory)
wasm = build_language_server(source)
bindings = generate_bindings(source, wasm, directory)
update_playground(version, bindings)

print("\nPlayground updated. Review the diff before committing.")


if __name__ == "__main__":
try:
main()
except (OSError, ValueError, subprocess.CalledProcessError) as error:
raise SystemExit(f"Update failed: {error}") from None
15 changes: 11 additions & 4 deletions .github/workflows/code_health.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,18 @@ name: Code health

on: [ push, pull_request ]

permissions:
contents: read

jobs:
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: dtolnay/rust-toolchain@master
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772
with:
toolchain: stable
components: clippy
Expand All @@ -18,8 +23,10 @@ jobs:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: dtolnay/rust-toolchain@master
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 # v1
with:
toolchain: stable
components: rustfmt
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ on:
# Also run manually from the Actions tab
workflow_dispatch:

permissions:
contents: read

jobs:
coverage:
name: Coverage
Expand All @@ -19,10 +22,12 @@ jobs:
CARGO_TERM_COLOR: always
steps:
- name: Checkout sources
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Install toolchain
uses: dtolnay/rust-toolchain@master
uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772
with:
toolchain: stable

Expand All @@ -32,13 +37,15 @@ jobs:
sudo apt-get install -y libmagic-dev

- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
uses: taiki-e/install-action@6cd13508893c0e7eab5f273c2575d3859bd7229a # v2.86.6
with:
tool: 'cargo-llvm-cov'

- name: Generate code coverage
run: cargo llvm-cov --features=magic-module,rules-profiling --workspace --lib --lcov --output-path lcov.info

- name: Upload coverage to Codecov
uses: codecov/codecov-action@0fb7174895f61a3b6b78fc075e0cd60383518dac # v7.0.0
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
12 changes: 7 additions & 5 deletions .github/workflows/golang.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,30 @@ jobs:
strategy:
fail-fast: false
matrix:
go-version: [ '1.25.x', '1.26.x' ]
go-version: [ '1.26.x', '1.27.x' ]
os: [ ubuntu-latest, macos-latest ]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup Go ${{ matrix.go-version }}
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version: ${{ matrix.go-version }}

- name: Setup Rust
uses: dtolnay/rust-toolchain@master
uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772
with:
toolchain: stable

- name: Install cargo-c
run: cargo install cargo-c

- name: Build and install Rust library
run: cargo cinstall -p yara-x-capi --release --pkgconfigdir=${{ github.workspace }} --includedir=${{ github.workspace }} --libdir=${{ github.workspace }}
run: cargo cinstall -p yara-x-capi --release --features=test_proto2-module,test_proto3-module --pkgconfigdir=${{ github.workspace }} --includedir=${{ github.workspace }} --libdir=${{ github.workspace }}

- name: Run Go tests
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr_title.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Check PR title
on:
pull_request_target:
pull_request:
types:
- opened
- reopened
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/publish_npm_package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,23 @@ jobs:
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
runs-on: ubuntu-latest
permissions:
contents: write
contents: read
id-token: write

steps:
- name: Checkout sources
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772
with:
toolchain: stable
target: wasm32-unknown-unknown

- name: Install Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
registry-url: https://registry.npmjs.org/
Expand Down
Loading
Loading