Skip to content

v0.7.0

Choose a tag to compare

@tstromberg tstromberg released this 24 Jul 05:16

New facts

  • Markdown extractor — markdown.first_heading and deduped markdown.github_repos[]
  • file.basename / file.stem emitted whenever a path is supplied
  • Wheel outer-filename parsing: whl.filename.{name_prefix,version,build,python_tag,abi_tag,platform_tag} from the PEP 427 basename
  • PDB derived names — pe.debug.pdb.basename and pe.debug.pdb.stem

Hardening

  • Tree-sitter scanner audit. Per-grammar ScannerAudit table re-verified against locked crate sources;
  • Python now models the actual combined delimiter + indent byte
  • Mach-O fat-binary panic fix — misclassified CAFEBABE Java .class no longer slices OOB on bogus arch.offset.
  • Mach-O code-signature caps — Requirement-expression depth 32, plist depth 64, entitlement XML 1 MiB.
  • CHM bounds arithmetic — directory / namelist / system walks converted to checked_add / checked_mul.
  • bytes_at::{u16,u32,u64}_{le,be} helpers replace unchecked try_into().unwrap() reads.
  • CLI — --help / --version no longer process::exit; readdir errors surface per-entry

Breaking API

  • unsafe_code = "deny" (was warn).
  • FileId fields private — use file_type(), source(), extension_mismatch(). #[non_exhaustive].
  • ParseError.kind/.stage are now ErrorKind / Stage enums (JSON wire form unchanged).
  • ArchiveMember regrouped into ArchiveCompression / ArchiveOwnership / ArchiveOffsets sub-structs.
  • VBA sentinel flattened to filefacts::VBA_NON_LITERAL_SENTINEL; rizin module no longer a re-export façade.
  • ParsedFile is #[must_use]; ParsedFile::strings() renamed to text().
  • Sections::from_iter_sections removed in favour of standard FromIterator.