1.017 2021-01-13 - change bugtracker to GitHub issues - remove obsolete stuff from tutorial 1.016 2019-05-20 - Fix #129312: Code signing for OSX Avoid Archive::Zip::Archive error "can't find EOCD signature" for pp'ed executables with lots of stuff appended (e.g. by OSX codesign): temporarily increase Archive::Zip::ChunkSize around the call to Archive::Zip::readFromFileHandle(). Note this is prerequisite for the corresponding fix in PAR::Packer. - Fix: Archive::Unzip::Burst::unzip result is ignored and _extract_inc does always the slow way, too PR from Vit Spinka , thanks! - Show debug messages if $ENV{PERL_DL_DEBUG} is true 1.015 2017-04-13 - Fix RT#120722 (Reason for Module::Signature dependency unclear since 2008) - "require" a non-broken version of Digest::SHA - remove other crypto related "recommends" - Switch from Module::Install to ExtUtils::MakeMaker - avoids the hassle with Module::Install for Perl without "." in @INC - add some resources cf META.json 1.014 2016-12-18 - Fix RT#119224: "Issue about Can't locate loadable object for module" drop "use" statements in PAR/Heavy.pm added in edf5f24d - Fix RT#119010: "Wrong license link" always refer to the included LICENSE file - generate hello.par in Makefile target "pure_all" 1.013 2016-11-27 - Fix a crucial typo, hopefully fixes RT#118981 "Tests fail (with PAR 1.012?)" - Build t/hello.par at "make" time 1.012 2016-11-25 - Guard against concurrent extraction attempts of zip into "inc" - use a file lock to protect the extraction of the complete zip into "inc" - _run_member_*(), _tempfile(), _dl_extract(): make the "persistent" filename only visible when the file has been completely written - Make build and test work if @INC does not include "." - Upgrade to Module::Install 1.17 1.011 2016-09-18 - Move to GitHub. Thanks, OpenFoundry, for years of service. - Suppress warning "Use of uninitialized value in do "file" ..." - Put a description of its purpose into the canary file - Remove all traces of Internals::PAR::CLEARSTACK - Remove all references to http://par.perl.org/, doesn't exist anymore 1.010 2015-07-13 - Fix #101800 "[PATCH] Reinstate files to inc dir if deleted by external process" Periodic temp directory cleaning programs (eg. "tmpwatch") may remove some (older) files from $PAR_TEMP/inc, but keep others. This causes the packed program to fail. - When extracting a .par file to $PAR_TEMP/inc do NOT restore the original modified timestamps of the file (so that the extracted files have the time of extraction as their modified time). - Add a "canary" file in $PAR_TEMP and back-date it 1 day. Hence any process removing files in $PAR_TEMP based on timestamps should remove the "canary" before others. - If the canary file is missing, extract the .par to $PAR_TEMP/inc as previously was done only when $PAR_TEMP/inc was missing. 1.009 2015-04-22 - Fix 103861 for PAR-Packer: Adding local directories to @INC for a pp executable fails - Get rid of included PerlIO.pm, parent.pm, obsolete Module::Install::Include and included Test::More. 1.008 2015-01-24 - Fix #101662: Prevent shared libs from being cached in memory on AIX applied patch from Thoke@northpeak.org, thanks. Note: this is one half of the fix, the other is in PAR::Packer - Fix #86178: dll files not extracted to shlib subfolder when using -l or to other folder when using -a extract all files from the zip, including all DLLs - Fix #86014: [PATCH] POD fix applied Debian patch from gregor herrmann , thanks! while we're at it fix two bad L<> hyperlinks reported by podchecker - Fix RT #86650: typo fixes - reformat ChangeLog file according to CPAN::Changes::Spec and rename it to Changes - Update to Module::Build 1.14 1.007 2012-10-22 - Hopefully fix "pp -C ..." for any modules that assume an actual tree of files, e.g. looking for all installed modules Foo::Bar::*; call _extract_inc even when $ENV{PAR_CLEAN} is true - update to Module::Install 1.06 1.006 2012-10-15 - Fix RT #78633: PAR::import ignores url => $repo_client_object applied patch from KENO, thanks! - Fix RT #73491: cache directory naming problem In PAR::SetupTemp::_get_par_user_tempdir (actually _find_username) we try to sanitize username (so that there are no problematic characters in the name of the per-user cache directory), but the strategy fails miserably for some charset encodings. E.g. for EUC-KR or CP949 (as in the bug report) we may produce an illegal sequence of bytes; in other cases we may cause collisions (different usernames mapping to the same directory name). Fix the problem once and for all by encoding the username (bytewise) as 2 hex digits. 1.005 2011-12-02 - bump Perl version requirement to 5.8.1 (Schwern: The End Of 5.6 Is Nigh!) - run all tests using a nonce PAR_TMPDIR (otherwise CPAN Testers goes crazy as top level /tmp/par-USER directories (or similar) from previous tests may now be considered "unsafe") 1.004 2011-11-30 - back out r1241: it causes errors in PAR::Packer's test suite - change "unsafe directory" error message to match the wording used by PAR::Packer - remove "debian" sub directory: it isn't released to CPAN and Debian will supply its own anyway - remove some cruft from MANIFEST.SKIP 1.003 2011-11-28 - RT #69560/CVE-2011-4114: PAR packed files are extracted to unsafe and predictable temporary directories (Note: this bug was originally reported against PAR::Packer, but it applies to PAR as well) - create parent of cache directory (i.e. /tmp/par-USER) with mode 0700 - if it already exists, make sure that (and bail out if not) - it's not a symlink - it's mode 0700 - it's owned by USER - Fix a problem packing XML::LibXSLT on Windows (see the thread starting with http://www.nntp.perl.org/group/perl.par/2011/02/msg4919.html) - Die (with a hopefully useful message) if any error is encountered during an Archive::Zip extract operation 1.002 2010-07-25 - Fixes to VERSIONs of PAR::Setup*. - No change in behaviour since 1.001 1.001 2010-07-25 - RT #57399: extract everything (including DLLs) in File::ShareDir directories. Module::ScanDeps classifies everything in File::ShareDir directories as "data", but PAR uses it's own heuristics what to extract from a .par. - Previous release was missing META.yml. - Upgrade Module::Install to 1.00 1.000 2010-04-10 - Fix defined(%hash) deprecation warning in PAR::Heavy 0.994 2009-07-23 - Fix for the PAR::Heavy fix to the INC priority handling. 0.993 2009-07-19 - The priority (fallback=>0) repositories should look at @PAR_INC for the loaded PARs instead of @PAR_INC_LAST. - Don't reload from a downloaded .par file after installing it via "upgrade". - Band-aid fix for the loading priority of shared librares from PAR files: Try PAR's first, the local stuff, then fallback-PARs. - Initial support for running external perl scripts from a packaged interpreter. 0.992 2009-04-05 - Support for non-fallback repositories. 0.991 2009-03-10 - Promote previous release to stable release. 0.989_01 2009-03-02 [Bug fixes, etc.] - Track the locations of all archives that have been extracted to $ENV{PAR_TEMP}/inc in this run. 0.988 2009-03-01 - Promote previous release to stable release. 0.987_01 2009-02-20 [New features] - Better cleanup of the $TMPDIR/par-$USER/temp-$$ directories that are typically used as caches in the "use PAR 'foo.par'" use case. [Bug fixes, etc.] - Very slightly more careful handling of PAR-specific environment variables. - Cleanup of PAR::SetupTemp 0.986 2009-02-19 - Promote to stable release. 0.985_01 2009-02-02 [New features] - Support for the brand new static dependency resolution of PAR::Repository::Client 0.23. [Bug fixes, etc.] - Fix issue with running scripts from repositories: The INC hooks used to be set up too late for this to automatically pick up dependencies. 0.984 2009-01-25 [New features] - Implemented the auto-upgrading option for loading and installing from PAR::Repositories. [Bug fixes, etc.] - Fix issue with PAR::Repository::Client development versions. 0.983 2008-09-12 [Dependencies] - Require AutoLoader 5.67 which contains a PAR-related bug-fix. - Require PAR::Dist 0.32. [Internal changes] - The full extraction process _extract_inc (which is triggered when a non--clean pp packaged executable is run) can now be forced to do the extraction (instead of doing if !-d). - That same extraction routine now accepts Archive::Zip handles or file names. - When, during the full extraction, the extracted paths are to be added to @INC, we now make sure they're not in @INC yet. 0.982 2008-08-10 [New features] - Moved the routines that setup the PAR_TEMP environment variable to a separate module in the distribution so it's possible to use PAR::Repository::Client without loading all of PAR. - Same for the function that sets up PAR_PROGNAME. [Bug fixes, etc.] - Upgrade to Module::Install 0.77 - Fix for running scripts from repositories. 0.980 2008-05-22 [Bug fixes, etc.] - The function PAR::get_filehandle() that was introduced in 0.979 is really broken because Archive::Zip is broken. Turns out calling Archive::Zip::Member->fh() returns a file handle to the zip file, not a virtual/tied/whatever file handle to the member file. Therefore, the get_filehandle() function has been removed again until we work around this issue. - Upgrade to Module::Install 0.73 0.979 2008-05-13 [New features] - New function PAR::get_filehandle() returns a file handle for a file in any open .par files. Similar to read_file(). 0.977 2007-10-19 [Bug fixes, etc.] - HPUX doesn't like shared libraries being unlinked while in use. So don't try to do this even in clean mode. (Workaround will be in par.pl) (Scott Stanton) - Fix DLL extraction file name matching in PAR::Heavy. - Save two system calls per DLL during DLL extraction in PAR::Heavy. 0.976 2007-07-29 [New features] - Use Archive::Unzip::Burst for unpacking binary executables if available. (This yields a significant startup speed-up.) [Bug fixes, etc.] - Removed the auto_install feature from Makefile.PL. auto_install is conceptually broken. 0.973 2007-02-03 [New features] - A new option for the "use PAR { ... };" use case: "no_shlib_unpack" signals that for this particular .par file, shared libraries that were added with the --lib option should not be extracted. This allows users to do their own cache handling for these libraries. - PAR no longer unpacks *all* shared libraries by default but only those in the shlib/ directory (i.e. added with --lib). The shared libraries in auto/ should be picked up by the DynaLoader hack. - If available, the prefork.pm module will be used to declare run-time dependencies for better memory use in forking environments. - PAR now uses a caching mechanism to speed up the extraction process. This should particularly impact users of the "use PAR {file =>...}" form. [Bug fixes, etc.] - Applied an optimization of the unpacking process on case insensitive file systems. 0.972 2007-01-16 [Bug fixes, etc.] - Removed PAR::AutoLoaderFix again. It wasn't working as expected all the time. - To fix the problem AutoLoaderFix was supposed to fix, we now require AutoLoader 5.62 or newer which was just recently released to CPAN. (Previously only available from blead perl.) 0.971 2007-01-12 [Bug fixes, etc.] - Fixed typo in the POD. (Jerrad Pierce) - Included fix for a bug in AutoLoader.pm as shipped with all perl versions up to and including 5.8.8 as PAR::AutoLoaderFix. This cures a problem of endless looping when the %INC entry of a module doesn't point to a file of the same name. This may happen during "use PAR 'foo.par'". 0.970 2006-12-03 [This release introduces some rather radical changes, so read carefully:] [All PAR::Packer related logic has been moved to a separate distribution,] PAR-Packer. This includes pp, parl and all packaging tools. This way, PAR becomes a pure-Perl distribution that can be most easily installed by users of software which requires PAR. Developers who want to use the PAR packager, pp, need to install the PAR-Packer distribution from CPAN. 0.961 2006-11-23 [Bug fixes, etc.] - PAR::StrippedPARL::Base->write_parl() failed to work if the @INC directories contained spaces in 0.960. (Steven Mackenzie) - Much improved documentation of the environment variables (Glenn Linderman) - Fix for a spaces-in-pathname problem on Windows for t/30-current_exec.t. (Malcolm Nooning) 0.960 2006-11-21 [Bug fixes, etc.] - myldr/Makefile.PL fix: Clean up myldr/usernamefrompwuid.h. - Silence warning in myldr/internals.c. - Silence warnings seen on Irix from myldr/env.c. - Skip most tests in 10-parl-generation.t if there is no parl. - Skip loading ActiveState Perl's "sitecustomize.pl" in par.pl. - Load modules via require and other files via do. - The parl-regeneration-for-every-pp-call addition of the 0.958 release should now also work for static perls. [New features] - Adressing RT ticket #6612: Now using getpwuid() to determine the user name if supported by the OS. 0.959 2006-11-12 [This is just a hotfix release because 0.958 lacked META.yml. One day, I will] switch from Module::Install to Module::Build... 0.958 2006-10-25 [Bug fixes, etc.] - myldr/Makefile.PL fix: make static.o depend on mktmpdir.c, my_perl.c, my_par.c. (Roderich Schupp) - Modules included with the -M option to pp were previously scanned for dependencies but not mapped through the %Module::ScanDeps::Preload hash for custom dependencies. That's fixed now. - $ENV{PAR_RUN} isn't set by PAR::Packer any more because nothing in the PAR sources uses it. $ENV{PAR_RUN} is no longer used by PAR at all. - Unified the environment variables which are looked at for finding the system's temporary directory. [New features] - During the build process, PAR appends stripped down copies of parl (and parldyn if applicable) to the data classes PAR::StrippedPARL::Static and ::Dynamic. These parls-without-embedded-modules are used for packaging so the formerly embedded modules are now packaged from the packaging system. (Instead of stemming from the system where PAR/parl was built.) - The "use PAR { repository => $url };" syntax now also supports the use of user-constructed PAR::Repository::Client objects instead of an URL. - The -F (module code filter) option now supports selective filtering of modules. The syntax is "-F FILTER=REGEX" or - as before - "-F FILTER". The regular expression is applied to the *file name*, of the module inside the PAR (e.g. Foo/Bar.pm). This behaviour was chosen over matching against the module name (e.g. Foo::Bar) because the filters can be applied to module-like and script files as well (.pl, .al, etc.). - Updated PAR/FAQ.pod with the new FAQ's from the PAR wiki. - Added a POD file PAR/Environment.pod which is intended to become an index of all environment variables PAR uses of its own or recognizes from its users. Still mostly a stub. 0.957 2006-10-24 [Bug fixes, etc.] - Fix executable PARs top properly detect embedded scripts named the same as the executable. (Jesse Vincent) - Comment out the call to par_current_exec_proc (in the C loader) which breaks the use of symlinks to pp-ed executables when not called with a path. (I.e. using a search in $PATH). 0.956 2006-10-03 [Bug fixes, etc.] - This is another hotfix release. Fixed a mindless bug introduced in 0.955. 0.955 2006-10-03 [Bug fixes, etc.] - 0.952 introduced removal of system module search paths if -B is in effect. This resulted in some valid PAR-related paths being removed as well. Fixed. Upgrading from 0.952 and 0.954 is suggested. - Changed the use of hard-coded '/' as path-separator to using File::Spec. 0.954 2006-09-26 - This release is equivalent to 0.953. The 0.953 CPAN upload is broken! 0.953 2006-09-18 [Bug fixes, etc.] - Added optional POD tests. - Modified -B so that if -B is in effect, all entries are stripped out of @INC except for the PAR hooks. This happens right before the script contained in the pp-ed binary is executed. 0.952 2006-08-22 [New features] - Added the "install" option to the PAR loading syntax. If specified, the contents of the PAR distribution are permanently installed. This requires PAR::Repository::Client 0.04. [Bug fixes, etc.] - Fixed broken META.yml in 0.951. 0.951 2006-08-12 (This includes any changes up to 0.950.) [New features] - Introduced new PAR loading syntax and semantics: use PAR { file => 'path/to/par/or/URL' }; ==> equivalent to "use PAR 'path/to/par/or/URL';" - Introduced the 'fallback' option: (default = 0) use PAR { file => 'foo.par', fallback => 1 }; ==> Loads modules from the PAR file only if loading them from @INC did not succeed. - Introduced the 'run' option which executes a script in a PAR archive just like perl -MPAR foo.par script.pl - If PAR::Repository::Client is installed, you can add a repository of .par distributions to your library search path as follows: use PAR { repository => 'http://foo' }; - Of course, 'run' also works with repositories: use PAR { repository => 'http://foo', run => 'my_app' }; (This searches the repository for any distributions that have a my_app script.) --> For details on repositories, have a look at the PAR::Repository::Client module. - Bug fixes, etc. - Commented a couple of the routines in PAR.pm. (Yay!) - New test script for the new fallback loading feature. - Fixed a bug in the Spreadsheet::ParseExcel handling in PatchContent.pm. 0.942 2006-07-22 [Bug fixes, etc.] - Better support for diagnostics.pm (in conjunction with Module::ScanDeps 0.62.) - Now requiring Module::ScanDeps 0.62. 0.941 2006-06-20 (No, PAR isn't stagnating. It's just that 1.00 would draw close if we continued with 0.01 increases.) [Bug fixes, etc.] - Version 0.94 of PAR would use the same cache area for all pp-ed applications due to a faulty hotfix for Digest::SHA. This applies to PAR 0.94 only. Think of 0.941 being PAR 0.94 done right. 0.94 2006-06-01 [New Features] - Added support for reading options to pp from a file using a '@filename' argument to pp: pp -o foo --gui @filename foo.pl [Bug fixes, etc.] - Workaround for a bug in Digest::SHA 5.38 and 5.39 that would prevent PAR from being built. - Fixed details in the 2-pp.t test file. - Now recognizes text files that aren't picked up by the -T operator but by the "file" tool. - Applied Roderich Schupp's patch to 30-current_exec.t to fix a path issue. - Now requiring Module::ScanDeps 0.60 which fixes a couple of bugs which might be observed as PAR bugs. - Now working well with Spreadsheet::ParseExcel which uses an invalid POD section to comment out a code block. This wasn't recognized by PAR::Filter::PodStrip as POD and hence partly left in... - If the output directory doesn't exist, we create it now and output a meaningful error message if that failed. 0.93 2006-05-19 [New Features] - Added support for PAR_TMPDIR (PAR_GLOBAL_TMPDIR) so that the temp directory can be controlled for just the PAR file bits. (Leolo) - Added par_current_exec_proc() which finds the file of the current executable in /proc, if possible. (Leolo) - Added par_current_exec() which finds he file of the current executable, if possible on this OS. (Leolo) - par_findprog() now uses par_current_exec() if possible. [Bug Fixes, etc.] - Upgraded to Module::Install 0.62+ (Audrey Tang, Steffen Mueller) - Document a strange interaction with chdir() and relative paths. (Chris Dolan) - Documented the bits that make up PAR_TEMP. (Leolo) - Fixed the call to par_findprog. path (aka val) was set to tmpdir. (Leolo) - Documented the CACHE name at the end of a self-executing PAR. (Leolo) - myldr/Makefile.PL now generates some dependencies for main.c (Leolo) - Applied patch from RT ticket. (tsee) https://rt.cpan.org/Ticket/Display.html?id=13959 - Applied Ivan Kudryavtsev's patch that fixes a couple of calls to PAR subroutines in PatchContent filtered code. (tsee) 0.92 2006-02-22 [Bug Fixes] - Now requiring Module::ScanDeps 0.56 which handles autouse correctly. - Now shipping with a correct SIGNATURE. (Which was broken for 0.91.) 0.91 2006-02-13 [Bug Fixes] - Applied Alan Stewart's patch which fixes @ARGV pollution in daughter programs. See also http://www.nntp.perl.org/group/perl.par/2152 - Now mentioning the ENV var "PAR_VERBATIM" in the documentation. See also http://www.nntp.perl.org/group/perl.par/2196 - Applied Malcolm Nooning's fix for the test suite. We used to get failed tests on Windows because of spaces in path names. - Applied Roderich Schupp's and Malcolm Nooning's patches to the test suite fixing problems with Cygwin. - Applied Vincent Ladeuil's patch to PAR::Filter::Bleach to return a true value for modules that loaded okay. - Changed 'PAR_BASE' in the Makefile.PL to 'SMUELLER'. 0.90 2005-11-25 [Bug Fixes] - When compiling with static libperl, myldr/ may fail "make" due to sha1.c not generated properly. - Pod stripping could fail on __DATA__ sections for files with CRLF line endings. - The documentation erroneously referred to the PAR_TEMP environment variable, whereas it should be PAR_GLOBAL_TEMP. - Compilation fixes for MinGW/MSYS. 0.89 2005-06-10 [Bug Fixes] - Stop static.c from pulling in Perl header files, otherwise parl.exe ends up depending on the Perl DLL on Win32 when Perl is built without PERL_IMPLICIT_SYS. - With *nix and File::Path 1.06, par.pl's avoidance of loading Cwd.pm caused syntax errors. 0.88 2005-06-07 [Bug Fixes] - Extracted .pl files should be loadable via the coderef-in-@INC too, just like .pm files and autosplit files. This makes PAR work with Perl 5.8.7 on Win32. - Fix the build with GCC 4.0. - If $ENV{PWD} is not defined, fallback to use `pwd` to obtain the working directory for invoking. 0.87 2005-01-31 [Bug Fixes] - On Win32, some versions of File::Spec::Win32 contains explicit "use Cwd;" lines, which renders parl.exe unusable. - Executable made by "pp" may fail when invoked as "./a.out" or "../a.out", due to incorrect PWD handling logic. 0.86 2004-12-11 [New Features] - New "pp -z" (--compress) option to set compression level (0-9). - New "pp -T" (--tempcache) option to override the per-executable directory name; it defaults to a hash of the executable, computed at compile time. This makes startup much faster for large executables. - The hash algorithm described above now prefers Digest::SHA if installed, otherwise Digest::SHA1, then fallbacks to Digest::MD5. - Functionality of "pp -X" is now extended: if the argument after -X is a zip or par file, files in it are excluded from the produced executable, and the executable will "use" the zip/par instead. For multiple -X args, successive args are only "use"d if they contain additional unique files. - "pp -l" now searches for libraries in "." and PATH in Win32. - "pp -l" shared libraries are now added to %skip, so it will not be included in both shlib/ and lib/. - "pp -l" now chases symbolic links. For example, if "libsomelib.so" is a symlink to "libsomelib.so.1", which is another symlink to "libsomelib.so.1.2", pp now follows these symlinks and add the real file the par, rather than "libsomelib.so". - New contributed code in "contrib/stdio/": Useful Tk console for "pp -g" users. - New contributed tutorial documents, currently in "contrib/docs/", which will eventually be turned into POD documents. - Running "perl Makefile.PL" with $ENV{DEBUG} set to true now produces "parl" with debug symbols. - Remove Cwd.pm (and Cwd.so) from the bundled dependencies. [Bug Fixes] - More robust probing for case-insensitive file systems. - PodStrip now attempts to match "standard" pod start before =cut, otherwise =cut gets removed by itself. - Win32 slashes are now normalized in privlib and archlib directories. - Don't extract shared libraries to inc/, since they were extracted in $PAR_TEMP already. - Don't re-extract shared libraries in subdirectories, since they are picked up by corresponding "use". - Tk now exits properly with a non-zero exit() value. - Fix libperl probing problem on Debian and Gentoo that manifests as a "libperl5.8.so not found" error during runtime. - gpp: Fixed typo in options with multiple filenames; cleaned up pp parameters. - When PAR_TEMP is set, shlib/ was not correctly added to the dynamic load path environment variables. - PAR now builds with Win32 VC++ without CVTRES.EXE available. - Detection of cl.exe, gcc.exe and cc.exe is now case-insensitive. 0.85 2004-07-02 [New Features] - New version of "gpp"; see contrib/gui_pp/gpp_readme.txt for details. [Bug Fixes] - MANIFEST and META.yml were not properly updated by PAR::Packer. - Setting directory aliases with "pp -a"/"pp -A" was broken. Fixed, and tests were added for it. - Statically-built executables was needlessly extracting libperl each time it runs; now it is eliminated and hence much faster. 0.83 2004-05-29 [New Features] - Revamped PAR::FAQ and sychronized with par.perl.org. - In pp-generated programs, $0 is now set to the pathname leading to the invoked executable. Use $ENV{PAR_0} instead to get the filename that contains the main perl program. - Updated "contrib/gui_pp/gpp" to support PAR::Packer options. [Bug Fixes] - Core XS modules, such as Data::Dumper, were skipped by "pp". - Fix t/2-pp.t for Cygwin by probing $Config{_exe} rather than uname(). - Scripts made by "pp -P", when invoked as "perl scriptname", should not search for the same-named programs in PATH. - Correctly remove leading slash and drive letters from absolute filenames passed to "pp -a". Also normalized blackslahes to slashes. - The PP_OPTS environment variable was not recognized. - "pp -a dirname;diralias" was broken. - "pp -f" and "pp -F" were broken. 0.82 2004-05-24 [New Features] - New module PAR::Packer provides an OO interface to "pp"'s functionality; "pp" is now merely a thin wrapper for it. - New module App::Packer::PAR is a modified version of App::Packer, designed to work with PAR::Packer, and will hopefully be merged back to App::Packer. - The old, procedural "pp" is moved to contrib/; end-users should notice no changes in "pp"'s behaviour. - New options "pp -a" and "pp -A" (--addfile/--addlist) provides ways to include extra files and directories in the package. - The long option name for "pp -M" is changed from --add to --module. The old name is still recognized but no longer documented. Using "pp -M" to include non-library files is now deprecated; use "pp -a" instead. - par.pl and parl now writes messages to STDOUT, instead of STDERR. As a consequence, t/2-pp.t no longer prints extra warnings during "make test". [Bug Fixes] - On Non-Win32 platforms, perl 5.8.0 and earlier versions produced pp-generated executables that immediately segfaults. - Running pp-generated executables with absolute pathname failed on statically-built perls. - Tests were failing due to a missing pipe_a_command.pm in MANIFEST. - Add the missing myldr/win32.coff for building on Cygwin/MinGW. - If the "perl" in path is different from the perl interpreter used for "make test", t/2-pp.t is known to fail and is now skipped. - Cygwin failed t/2-pp.t because "parl" is spelled as "parl.exe" there. 0.81 2004-05-23 [New Features] - Regained support for Win9x, Cygwin and MinGW. - PAR now supports 64-bit platforms, such as Tru64 and AIX. - Cygwin and MinGW can now build EXEs with icons, too; MinGW can update the icons, but Cygwin cannot. - Newly supported modules: Pod::Usage, DBIx::SearchBuilder, DBIx::ReportBuilder, SVK::Command, SVN::Core, and the ':encoding()' IO discipline. [Bug Fixes] - On non-Win32 systems, invoking pp-generated executable from PATH did not work. - Standalone executables were clobbered by existing perl environments with an identical "auto/IO" libpath as the author's environment. - Standalone executables did not work on systems with an unset dynamic load path environment variable (eg. LD_LIBRARY_PATH). - "pp -p -o multi.par 1.pl 2.pl; parl multi.par 1.pl" now works. - $ENV{PATH} and $ENV{TEMP} were truncated at first path delimiter. - "pp -f Bleach" did not work for ActivePerl on Win32. - Windows 9x systems were generating invalid cache directory names. - $ENV{path} is also recognized as $ENV{PATH} for Win32. 0.80 2004-03-17 [New Features] - A comprehensive test suite for pp in contrib/automated_pp_test/. It is run as part of the "make test" process from t/2-pp.t. - Much better support for "pp -i" and "pp -N" (--icon/--info) using the Win32::Exe module. You may now use EXE and DLL as icon files. - If PAR_GLOBAL_CLEAN (-C, --clean) is not set, we now preemptively extracts files under the cache directory. That made POSIX.pm and other modules that depends on %INC pointing to real files work correctly. - Now uses SHA-1 to create temporary directories and files, instead of mtime. - Verbosity level is now 1..3, not 0..5; "pp -v" now takes an optional integer, so "pp -v input.pl" is no longer an error. - New flags "-vv" and "-vvv", as shorthands for "-v 2" and "-v 3". - The user-settable PAR_CLEAN and PAR_TEMP environment variables has been renamed to PAR_GLOBAL_CLEAN and PAR_GLOBAL_TEMP; the original variables are still accessible within the program. This is so that a pp-generated program can exec() or system() another one without crippling its environment variables. - File lookups are now case-insensitive on case-insensitive filesystems. - Another Tk-based GUI in contrib/gui_pp/; not installed by default. - OOified "pp" in contrib/object_oriented_pp/; not installed by default. [Bug Fixes] - "pp -d" (--dependent) prevented "pp -C" (--clean) from working. - The "pp -m" (--multiarch) option was implemented incorrectly and thus broken. - Many documentation tweaks. - Previously, "pp -M" (--module) did not add the module itself, only its dependencies. - Suppress a bogus warning when $ENV{$Config{ldlibpthname}} is empty. - "parl -v" without Module::Signature installed could delete all files within the current directory. Oops. - On *nix systems, pp-generated executables erroneously linked to libperl even if "pp -d" (--dependent) is not set. - Spurious =cut directives in source files is now handled gracefully by PAR::Filter::PodStrip. - "pp -L" (--log) now logs all output messages to the log file, not just the ones printed by "pp" itself. 0.79 2004-01-08 [Bug Fixes] - Setting PAR_CLEAN had the reversed effect. Oops. - Dynamic libraries in cached directories was not detected properly, resulting in "permission denied" errors during certain race conditions. 0.78 2004-01-07 [New Features] - By default, executables generated by "pp" will now store extracted files in cache directories. You may override this by setting the PAR_CLEAN environment variable to "1", or generate executables using "pp -C". - New "pp -C" (--clean) option to make the generated executable clean up temporary directories after each run. - PAR_CLEARTEMP is renamed to PAR_CLEAN. [Bug Fixes] - On Win32, temporary directories containing shared libraries was not being properly cleaned up. - If no suitable temporary directories are found, use the current directory (".") instead of the root directory ("/"). 0.77 2004-01-01 [New Features] - New "pp -c" and "pp -x" (--compile/--execute) options run the script with "perl -c" to check for dependencies. - Also, the new "pp -n" (--noscan) command skips the default static scanning altogether. - Added support for "pp -c/-x/-n" to tkpp. - For dynamically-built perls, pp-generated .exe files will now appear in the process table with the same name as it was launched, instead of "par.exe". - New filter "Obfuscate", which uses B::Deobfuscate to strip away PODs and comments, as well as mangling variable names. - Merged tkpp 1.1 from Doug Gruber. - OS/2 is now supported. - External Zlib is no longer required to run pp-generated binaries. [Bug Fixes] - Makefile.PL was failing if $Config{cc} contains spaces. - No longer needs setting "Windows 95 compatible mode" to run on WinXP. - On Win9x with Perl 5.6.1, "nmake" was failing due to extra "@[...]" symbols in Makefile. It should be fixed now. - The "bad signature" problem with newer Archive::Zip versions is fixed. - App::Packer::Backend::PAR was misplaced into App/Packer/PAR. - Signature tests were failing under new ExtUtils::MakeMaker versions. - ActiveState's PPM building machine was having problem with PAR; a ".pdb" entry in MANIFEST.SKIP is added to fix that. - Some self-built PAR instances on Windows were failing due to mismatching short and long pathnames. 0.76 2003-10-28 [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. 0.75 2003-09-21 [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. 0.74 2003-08-20 [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. 0.73 2003-08-06 [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. 0.72 2003-08-02 [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. 0.71 2003-07-30 [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. 0.70 2003-07-29 [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. 0.69 2003-05-31 [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. 0.68 2003-05-26 [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}. 0.67 2003-04-01 [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. 0.66 2003-03-20 [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. 0.65 2003-03-09 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. 0.64 2003-03-02 [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. 0.63 2003-02-06 [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.