v0.9.0
New language & format support
- Clojure and Windows Batch AST analysis (tree-sitter)
- AppleScript source detection
- BEAM bytecode and FreeBSD zstd .pkg detection
- binding.gyp parsed as JSON; Meson, Arch package metadata, and R Markdown/Quarto recognized
New facts & metrics
- Comments exposed as a matchable string tier; JS/TS/Go backtick strings no longer misread as comments; Lisp and
Batch comment styles added - New obfuscation AST metrics: operator density, numeric arrays, XOR loops, const/string-return functions, identity
functions, and more - Extension/content mismatch metrics name the transition (e.g. binary_as_image), with carve-outs for benign
conventions - VBA identifier metrics: mean length, entropy, distinct trigger count
- binary.overall_entropy emitted for every file type
- Java constructors, C# qualified names, and import aliases (import x as y) surfaced
Detection accuracy
- Stylesheets treated as text, no longer misparsed as JavaScript
- JS/Kotlin scoring fixed: var/let/const count for JS; === ignored in separator runs
- Python relative imports keep their . prefix — no more false PyPI matches
- PEs that goblin can't parse now get rizin section/import recovery
Performance & memory
- jemalloc tuned to release freed pages immediately: peak RSS −~60%
- JSON output streams to stdout instead of building in memory
- Tree-sitter queries compiled once and cached
API & maintenance
- Symbol objects slimmed: dropped source, decl, and rare rizin fields
- Dependency updates