Revision history for App-SlimPacker

0.07  2026-10-19
    - Fix: perl -c on a packed script no longer runs the program.

0.06  2026-10-19
    - New: compressed sources are stored as escaped binary, about 25% smaller.
      Use --no-binary for a plain-text (base64) bundle that survives diff,
      mail and copy-paste.
    - New: a boot program's __DATA__/__END__ section is compressed too, read
      through an in-memory DATA handle; it is no longer left verbatim with a
      warning.
    - Fix: bundling a program with no modules produced a syntax error.
    - New: the bundle keeps the boot script's shebang line; without one it
      gets #!/usr/bin/env perl, so bundles run on systems without
      /usr/bin/perl (e.g. FreeBSD). --shebang LINE overrides it.
    - Fix: the test suite ran bundles through their shebang and failed on
      machines without /usr/bin/perl; it now uses the perl running the tests.
    - Fix: embedded sources could use `;` as a q-literal delimiter, which is
      a syntax error on perl 5.16 and older.

0.05  2026-10-19
    - Minifier moved to its own module, App::SlimPacker::Minify.
    - New: rename sub and method names across the whole bundle
      (--rename-subs, on by default). Names Perl looks up by string
      (builtins, new, DESTROY, tie/serialization methods, can('...')) are kept.
    - New: rename bundled package names (--rename-modules, on by default),
      e.g. App::Foo::UI becomes bk::bl::UI.
    - New: rename subs in import/export lists and can() strings
      (--rename-exports, on by default).
    - New: --include and --exclude add modules to the bundle or leave them out.
    - --rename-vars is the new name for --rename (old name still works).
    - Moo programs no longer bundle Moose unless they use it.
    - ALL_CAPS lexicals (my $ROWS) are now renamed too.
    - Variables interpolated in regexes (qr/\Q$query\E/) are now renamed.
    - Plugins are inlined before renaming, so they get renamed consistently.
    - Fix: ternaries with a bareword branch were mistaken for labels.
    - Fix: --bundle-lib-all could drop the main program from the output.
    - Fix: module-only renaming could break "$Pkg::var" strings.
    - Fix: Moo programs failed to run when bundled with sub or module renaming.
    - Fix: XS modules keep their package names, so their compiled code loads.

0.04  2026-09-07
    - Compression is on by default: bundled modules and the main program are
      deflated and decompressed on load (core modules only).
      Use --no-compress to keep the sources readable.
    - New: --rewrite (opt-in, experimental) shortens code, e.g.
      foreach -> for, $x += 1 -> $x++, print($x) -> print $x.
    - --rewrite renames our globals across the whole bundle, including
      inside interpolated strings and heredocs.
    - Smaller bundles: embedded sources are quoted more compactly.
    - All on/off options accept a --no-* form.
    - Fix: __END__/__DATA__ could merge with the surrounding lines and
      lose the data section.

0.03  2026-09-05
    - New: minify-only mode (slimpack minify FILE, or the minify script).
    - Faster: each module is parsed once instead of twice.
    - Shebang lines are kept when minifying.

0.02  2026-09-05
    - Only my variables are renamed; local/our globals are left alone.
    - Modules without a .packlist are found in @INC.
    - Core modules are never bundled.
    - Fix: minifier broke print $fh $$source.

0.01  2026-09-04
    - Initial release.
