Revision history for App-SlimPacker
0.08 2026-10-21
- Fix: require Module::CoreList 3.07; on perls <= 5.16 the core-shipped
version has no is_core() and slimpack died with "Undefined subroutine".
- Fix: names referenced from non-interpolating strings (q[...], '...',
<<'EOT') are no longer renamed — such strings can be string-eval'd at
runtime. Bundling Moo broke on perl < 5.22 (Sub::Defer builds deferred
subs from a q[...] template naming its lexicals, a sub and its package).
- Fix: keep the space in `$x && Foo::Bar->baz` and `$n - word(...)`;
removing it warns on perl <= 5.18 ("Operator or semicolon missing") or
turns `- e(...)` into a filetest.
- Fix: -e/-E bundles failed on perl < 5.16 (no ':all' feature bundle
there; those perls now get ':5.10').
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.
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)