Repository navigation
Releases: nhan7777/flutter_pruner
Releases · nhan7777/flutter_pruner
Release list
1.9.0
Fixed
- Asset scan no longer stalls on code that reassigns locals from each other
(for example the hash routines insyncfusion_flutter_pdf). Opaque-call
asset provenance is now collected as one path-independent union that expands
each expression and assigned variable once, instead of re-expanding every
assignment path, which was exponential and made real-project scans run for
hours. Retained assets and blockers are unchanged.
Changed
- Scan is roughly 3× faster on medium projects (synthetic 1000-file fixture:
7.3 s to 2.4 s median, −67%). Package ownership, path-policy exclusion, canonical
path resolution, and project-relative paths are memoized per analysis pass
instead of repeating symlink and stat syscalls for every reference; the
duplicate detector hashes small files from one bounded read; the Dart
adapter reuses resolved-unit diagnostics instead of a second analyzer
round-trip per unit; declaration-scoped caller IDs are memoized per fragment;
the reference collector tracks non-runtime syntax depth instead of two
ancestor walks per identifier; and the unresolved-reference index skips
function bodies. Graph nodes, edges, and findings on the synthetic fixtures
are unchanged. - Asset analysis inspects at most 2,000 external Dart libraries reachable
from selected execution roots. Past that bound it adds the fail-closed
blockerexternal Dart closure fan-out truncated at 2000 librariesfor
the selected package's asset namespace instead of resolving the rest.
On very large dependency graphs, unused assets are therefore reported as
REVIEWinstead ofSAFE. - Asset analysis memoizes string evaluation per unit, pattern matches per
pattern, and package ownership lookups by nearest root path.