What's Changed
- enhancement(benchmark): record copyright/email/url/info scan phase timings by @mstykow in #1036
- fix(parsers): surface silent entry-drop truncation across all parsers by @mstykow in #1038
- fix(assembly): deterministic assembler order and scoped nested-merge dedup by @mstykow in #1037
- fix(copyright): skip overlong words instead of truncating the holder tail by @mstykow in #1039
- enhancement(encoding): surface near-binary text-skip diagnostic and pin encoding edge cases by @mstykow in #1040
- test(license): pin refinement threshold boundaries and document provenance by @mstykow in #1041
- perf(pipeline): skip unused per-file SHA-256 and fuse multi-hash under --info by @mstykow in #1042
- perf(copyright): single-pass copyright-symbol normalization in prepare_text_line by @mstykow in #1043
- perf(license): prune and defer set-intersection work in candidate selection by @mstykow in #1044
- perf(license): use FxHash for candidate-selection per-run set/map by @mstykow in #1048
- docs(cli): clarify --max-in-memory bounds the in-scan working set, not peak RSS by @mstykow in #1049
- docs(cli): simplify --max-in-memory section for a user audience by @mstykow in #1050
- fix(deps): update rust crate daachorse to 3.0.2 by @renovate[bot] in #1051
- perf(license): faster candidate selection via dense Vec maps + bitset high-gate by @mstykow in #1054
- fix(xtask): normalize random package UIDs in perf-ab --check-output by @mstykow in #1055
- perf(license): build the two index automata concurrently (~24% faster cold build) by @mstykow in #1056
- perf(build): thin LTO for profiling profile (~3.5x faster profiling builds) by @mstykow in #1060
- perf(license): cache per-file line index for matched-text extraction (3.7× faster on large-file repos) by @mstykow in #1059
- perf(license): FxHashMap + buffer reuse in sequence-matching hot loop by @mstykow in #1062
- perf(license): hoist candidate-independent work out of sequence-matching driver (~23% on uv) by @mstykow in #1063
- fix(composer): extract per-package declared license from composer.lock by @mstykow in #1064
- fix(cargo): resolve workspace-inherited license into declared expression by @mstykow in #1068
- docs(benchmarks): refresh 13 targets on M5 Pro and regenerate chart by @mstykow in #1069
- fix(assembly): don't attribute co-located LICENSE holder to resolved dependencies by @mstykow in #1070
- fix(buck): synthesize pkg:buck purl for BUCK and METADATA.bzl targets by @mstykow in #1067
- fix(deps): update rust crate chrono to 0.4.45 by @renovate[bot] in #1071
- docs(benchmarks): refresh 10 more targets on M5 Pro and regenerate chart by @mstykow in #1074
- fix(license): normalize ambiguous bare declared-license names by @mstykow in #1075
- fix(copyright): strip PE version-info field labels and separator runs by @mstykow in #1076
- fix(parsers): resolve declared license to canonical index key by @mstykow in #1078
- docs(benchmarks): refresh 10 targets on M5 Pro 4-proc methodology by @mstykow in #1079
- feat(output): emit file-level detected_license_expression in scancode keys by @mstykow in #1080
- fix(assembly): stop smearing a multi-package DB file's license onto its packages by @mstykow in #1081
Full Changelog: v0.1.11...v0.1.12