1.019  2023-11-01

- register XS DLLs extracted into $PAR_TEMP/inc with %PAR::Heavy::FullCache
  
  This solves the problems mentioned in GitHub PR #8
  ("Special case Gtk related dlls to dl_load from the unpacked inc dir")
  with applications using modules Gtk2, Pango, Cairo and others (this is
  a Windows only problem)

- Heavy.pm: use strict; use warnings
  Thanks @shawnlaffan

1.018  2022-09-28

- Fix #6: PAR fails to test its build on MSWin32 with Perl-5.36.0

  Makefile.PL:  Quote t/gen-hello-par.pl for Windows
  Merge PR #5 by Tim Hoke <Tim.Hoke@veritas.com>

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 <vit.spinka@gmail.com>, 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 <gregoa@debian.org>, 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.