# $File: //member/autrijus/PAR/ChangeLog $ # $Revision: #25 $ $Change: 8586 $ $DateTime: 2003/10/27 12:08:42 $ [Changes for 0.76 - October 28, 2003] * New Features - Input filters. "pp --filter Bleach" now obfuscates the incoming script with PAR::Filter::Bleach; "pp --modfilter Bleach" applies Bleach to all packed modules. - Two previously built-in filters, PodStrip and PatchContent, are refactored out as PAR::Filter subclasses. - Two new filters, Bleach and Bytecode, are added for source-hiding purporses. - New utility, "tkpp", provides a GUI frontend to "pp". - New option, "pp --perlscript", to generate stand-alone scripts. - The old "PAR::Intro" documentation has been replaced by two new ones: "PAR::Tutorial" and "PAR::FAQ". - Tk pixmap (.xpm) files can now be packed with "pp --add". * Bug fixes - Perl 5.8.1 has an off-by-one bug that prevents "parl" to function properly. We have now provided a workaround; this bug should also be fixed in Perl 5.8.2. - Fixed https support for LWP via the new Module::ScapDeps. [Changes for 0.75 - September 21, 2003] * New Features - "pp -o file.exe file.par" now packs file.par into file.exe; this means you can hand-tweak PAR files generated by "pp -p" before packing it into an executable. * Bug fixes - Packing multiple programs by "pp script1.pl script2.pl" was producing syntax errors; fixed. - "pp -M datafile" now works. - Exit code from pp-packed executables now properly propagates out. - Fixed "use base" detection, Math::BigInt support and spurious signature warnings, by updated versions of Module::ScapDeps and Module::Signature. - On Win32, the PE info headers no longer show PAR_XXXXXXXXXXX. [Changes for 0.74 - August 20, 2003] * New Features - pp now has a set of "PatchContent" rules, dealing with non-PAR-compatible modules: Tk, Tk::Widget, Win32::API::Type, Win32::SystemInfo, SQL::Parser, diagnostics. These rules may get refactored back to PAR.pm in the future. - New function, PAR::reload_libs(), to reload currently used libraries inside PAR files. - PAR.pm itself is now never packed into pp-generated files, to perserve interface compatibility and reduce bloat. - PAR.pm now handles "use PAR 'othercode.par'" called from program or modules inside PAR files, even recursively. - A new icon for Win32 that is hopefully prettier. * Bug fixes - All data after __DATA__ are preserved for included libraries. This helps self-reading modules like Net::LDAP::Constants. - PAR::read_file() was broken. It now works. - "use PAR" inside pp-generated executables was failing with 'file too short' errors due the mishandling of seek/tell. - Occasional crashes on Win32 due to rmdir() called too early with DLLs still open is fixed; however, "pp -d" executables may still exhibit this problem. - "pp -X" used to only take full pathnames as arguments. It now also takes "Module::Name" and "Module/Name.pm". - Dynamically built Perl under Cygwin failed to build, because libperl.dll.a was not found. - Eliminated "callback called on exit" warnings, and the related "access violation" error on Win32. [Changes for 0.73 - August 6, 2003] * New Features - The PAR Homepage is now online at http://par.perl.org/. Documentations have been changed to link to it. * Bug fixes - Tk applications can now properly access xpm/xbm files with Tk->findINC. - On Win32, pp-generated executables could not start from Explorer, if its path contains space characters. Fixed. - On Win32, pp-generated executables used to leave around an empty directory in $ENV{TEMP}. It is now properly rmdir'ed. - Some systems (notably OpenBSD and Debian) does not put their libperl.so in the default location, which breaks the build process; now searches inside $ENV{$Config{ldlibpthname}} and $Config{libpth} to find it. [Changes for 0.72 - August 2, 2003] * New Features - CHECK and INIT blocks in programs inside PAR are now supported. * Bug fixes - Two debug statements were mistakenly left in the source, resulting in "trying to get rid of /tmp/par_priv.xxxx.tmp" messages. - Building on Linux with GCC 3.2.2 was failing due to massive heap required for my_perl.c. Fixed by splitting it into 3k chunks. - Depends on Module::ScanDeps 0.21; it supports utf8 on Perl 5.6.1 and can significantly reduce executable file size by eliminating unneccessary shared libraries. [Changes for 0.71 - July 30, 2003] * Bug fixes - A nasty data-loss bug has been uncovered immediately after the previous release; it only affects Windows platforms, and may cause all files to be erased under the current root (\) directory. - Building on Red Hat linux was failing, with error message that says "my_perl not declared". This has since been fixed. [Changes for 0.70 - July 29, 2003] * New Features - On machines with shared libperl, "pp" now makes truly stand-alone executables; the old behaviour is available with "pp --dependent". - Under Windows NT/2000/XP, "pp --icon=name.ico" now changes the icon for the generated executable; otherwise, a default "white camel" icon is used. - "use PAR 'http://example.com/foo.par'" now works, as does "perl -MPAR -Ihttp://example.com/foo.par". - PAR::Dist is now a mandatory prerequisite, which provides functions to turn any CPAN distribution into a PAR distribution, as well as to install, uninstall, sign and verify such files. - Integrated PAR::Dist into "par.pl" and "parl". For example, "parl -i Foo-0.01-i386-freebsd-5.8.0.par" installs a PAR distribution; "parl -v out.exe" verifies a digitally signed executable generated by "pp --sign". - A new option, "pp --multiarch", lets you generate PAR files that can work on several architectures. - "pp --sign" now adds digital signatures to generated executables and PAR files. - PAR files may now (recursively) contain other PAR files inside their par/ directories. - shlib/ and par/ directories inside PAR files can now contain architecture- and perl-version-specific subdirectories. - The "Cross-Platform Packaging and Deployment with PAR" tutorial is now online as http://www.autrijus.org/par-tutorial/. * Bug fixes - MANIFEST.SKIP was broken on Win32. - C compilers that doesn't handle long line well can now compile PAR. - DLL files inside the same auto/ library as XS modules was not properly extracted and loaded. This specifically affects Win32. - Because parl's @INC is '.', pp-generated executables may miss IO.dll and other shared libraries since they couldn't be correctly found in @INC. [Changes for 0.69 - May 31, 2003] * New Features - Under Perl 5.8, "pp -p" now works with Apache::PAR. See http://aut.dyndns.org/par-tutorial/slide018.html for a simple example. - "pp -M filename" now adds "filename" to /, not /lib/, unless filename ends in (pm|ix|al). This makes it possible to bundle "web.conf" needed by Apache::PAR. - "pp -l" now searchs in system library paths, and appends "lib" / prepends ".$dl_ext" where necessary. * Bug fixes - PAR segfaults on some Unix platforms due to a NULL pointer used in mktmpdir.c. Fixed. - "pp -o out.par -p -e '...'" now honors -o; previously it used "a.out.par" anyway. - Inhibited spurious uninitialized warnings under -w in the POD-stripping code. - Win32 did not properly cleans up PAR_TEMP directory, resulting in failure for executables that reused the same PID. Fixed. [Changes for 0.68 - May 26, 2003] * New Features - New 'pp -l' option to pack additional shared libraries (DLLs). - POD-stripped libraries inside PAR files now have #line directives inserted, so they report the original line numbers on failure. - PAR files generated by 'pp' now has a MANIFEST file that can be viewed by Gecko-based browsers with Javascript turned on, e.g.: jar:http://aut.dyndns.org/par/test.par!/MANIFEST * Bug fixes - Each pp-executable instance now creates its own PAR_TEMP directory; this avoids permission errors when multiple users run the same binary. As a consequence, PAR_CLEARTEMP is now set to "1" by default. - Newer versions of shared Zlib library no longer causes "pp" to generate broken executables. - Fixed dynamic loading on Cygwin was failing due to missing +x mode. - Like "use lib", "use PAR 'name.par'" now unshift()s instead of push()es into @INC. Same applies for "par.pl -A" and "parl -A". - Fixed building on ActivePerl 626 and below due to a missing $Config{ld}. [Changes for 0.67 - April 1, 2003] * New Features - PAR now works on Cygwin and MinGW/MSYS. - Globbing support in PAR::import(): use PAR "/path/*.pm"; - New license clarification messages added to POD and 'pp -V'. - All 'pp' options now has a short form (-o) and a long form (--output). - Revamped documentation for 'pp'. - New -g (--gui) flag for 'pp' to build console-less Win32 executables. * Bug fixes - Building on Darwin Perl 5.6.0 was broken with 'cc -s'. - Building on 5.6.0 was broken due to bad 'base.pm'. - Win32 Tk::Widget autoloading was broken due to a binmode() bug. - IPC::Run was pod-stripped incorrectly. Fixed. - Depends on Module::ScanDeps 0.19, which supports utf8 and .ph files. - Better AutoInstall support, which uses 'sudo' where necessary. [Changes for 0.66 - March 20, 2003] * New Features - Adds PAR::Intro, a PODified version of the online presentation. - Adds App::Packer::Backend::PAR, a bridge between PAR and App::Packer. - Scripts and modules are now searched in "/" last, instead of first. - Experimental patch for packing shared libraries via "pp -l". - HTTP fetching of precompiled packages in addition to FTP. * Bug fixes - Makefile.PL now downloads precompiled packages only if needed. - AutoInstall has been made to work for an easier installation. - The redundant "parl.exe.bat" is no longer created on Win32. - Pre-0.63 PARs used to leave broken .dll in TEMP; now they're cleaned. - "pp c:\something.pl" no longer treats c: as a relative path. - "pp -I dir" now searches 'dir' first, instead of last. - "pp" was broken on Perl 5.6.0 due to => stringification bugs. - Support for Tk::Widget autoloading has been added. - "parl" was not stripped if "gcc" was invoked as "cc"; fixed. - On a machine with multiple "parl"s, "pp" now uses the correct one. - File::Temp was missing as a dependency. * Known Issues - Cygwin support is still broken. - PAR does not include utf8_heavy.pl nor unicore/* for scripts that has "use utf8;". This has since been fixed by Module::ScanDeps 0.18. [Changes for 0.65 - March 9, 2003] This release comes with several significant improvements: * Automatic binary installation Previously, users without a C compiler cannot build the 'parl' executable, and is therefore unable to create self-contained binaries using 'pp'. Now, if there is a binary package available for that architecture under my CPAN directory, the Makefile.PL script will automatically fetch it, unpack into blib/, and the installation will continue as normal, resulting in a fully-functional 'pp'. This feature is part of the soon-to-be-released Module::Install framework; it will greatly benefit all CPAN authors with non-pure-perl distributions. * POD stripping Packages generated with 'pp' will now strip POD sections from all packed dependencies (your own scripts is unaffected); all binary executables will save at least 276732 bytes, with additional ~20% saving in additional packed dependencies. You can turn off this feature with the PAR_VERBATIM environment variable. * XS Incompatibility solved Because 'pp'-generated executables includes some fixed version of shared libraries (IO, Zlib, etc), they used to break when the target system has different version of shared libraries. Now PAR::Heavy intercepts DynaLoader::dl_expandspec to always prefer the library inside the PAR file, so this issue is resolved. * 5.6.1 Reclaimed Thanks to Sisyphus and various others, building on Perl 5.6.1 (with its old ExtUtils::MakeMaker and lack of PTHREAD_ATFORK) now works again. [Changes for 0.64 - March 2, 2003] * New Features - The t/0-signature.t test is re-enabled for people using my Module::Signature to verify the module's OpenPGP signature. - This release is the first distribution on CPAN to use the Module::Install framework, which is a stand-alone, extensible drop-in replacement for ExtUtils::MakeMaker that needs no extra action/prerequisites for end users. * Bug fixes - Dynamic loading on Win32 was broken, due to a binmode() bug reported by Bill Atkins, D. Menzel and others. - Building on Win32 in directory names that contain spaces did not work. [Changes for 0.63 - February 6, 2003] * Bug fixes - The 'parl' binary (which replaces the old 'par' or 'par.exe') didn't work properly when bundling perl modules for self- contained executables, rendering 'pp' useless on machines without core perl.