Skip to content

v1.0.0

Choose a tag to compare

@tstromberg tstromberg released this 24 Jul 05:16

New Signals

  • Added richer package ecosystem identification: Android/Alpine APK, npm, Cargo crate, Ruby gem, Debian package, NuGet, VSIX, IPA, conda, egg, Arch/FreeBSD/macOS pkg.
  • Added .deb identity features: package, version, architecture, maintainer, dependencies, installed size.
  • Added .gem identity features: name, version, platform, homepage, authors, licenses, runtime/development dependency counts.
  • Added more PE malware-relevant metrics, such as CLR managed resource count, max entropy, max size.

Better Evidence Anchoring

  • ELF dynamic imports now include offsets into .dynstr.
  • Mach-O dylib references and code signatures now include offsets.
  • Source member symbols now include byte offsets.

Detection Quality

  • Improved package disambiguation, especially Android vs Alpine .apk, npm .tgz, Arch/FreeBSD/macOS .pkg.
  • Better AppleScript and pacman/AUR install-scriptlet detection.
  • Reduced false positives by classifying unsupported OCaml, Vim, Lisp, SQL, Smali, patches/diffs, CSS-like files, and TS baselines as text
    instead of weakly guessing JS/Kotlin/Batch.

Robustness For Large Corpora

  • Hardened Tree-sitter extraction against panics, deep ASTs, huge query output, and scanner-risk cases.
  • Added metrics such as ast.depth_capped, source.query_limited.*, and source.ast_unavailable so skipped/truncated AST extraction is explicit.
  • Binary string extraction reuses existing PE/ELF/Mach-O parses, reducing duplicate parsing work.

Breaking/Schema Notes

  • FileType::Pkg became specific variants like PkgMacos, PkgFreebsd, and PkgArch.
  • Symbol::Member now has optional offset.
  • New source error stages: SourceParse, SourceExtract, SourceAstWalk.
  • pe.cert_table_size moved from values to metrics.