The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Version 2.5005

    * Fix issues with corrupted Perl call stack after handling a certain
      number of files with hard links enabled

Version 2.5004

    * Keep member name of hardlinks, not physical path

Version 2.5003

    * Implement 'preserve_hardlinks' flag in Archive::Tar::Builder->new() to
      trigger this new behavior

    * Implement Archive::Tar::Builder::HardlinkCache to keep track of device
      and inode numbers and the path which was originally seen when
      producing the tarball; only regular files with a link count greater
      than 1 are stored and looked up in the cache

    * In unit tests, change permissions of subdirectories of directories
      created by File::Temp created with 0000 permissions to 0600 to allow
      File::Temp to successfully delete them at the end of execution

    * Add missing POD for posix_extensions flag

    * Implement support for saving device inode major and minor numbers

Version 2.0000

    * Change to a versioning scheme more friendly to the mysterious
      black box known as PAUSE

    * Don't fail on EACCES when stat()ing file

Version 1.9

    * Fix a bug in b_find() wherein some error recovery code tried to destroy
      the same object twice, potentially

Version 1.8

    [redacted for secret government purposes]

Version 1.7

    * Fix a variety of unit tests which depended on GNU tar availability as
      indicated by CPANTS; make provisions for BSD tars as well

    * Make t/lib-Archive-Tar-Builder_bitfile.t only run when TEST_BIGFILE=1 is
      specified

    * Don't produce archives with mismatched file sizes

    * Implement 'gnu_extensions' flag to make support for arbitrarily long
      filenames an explicit feature to enable, so as to help end developers
      avoid producing archives that cannot be extracted by their native tar

    * Set $! to ENAMETOOLONG when long filenames are detected and the
      aforementioned 'gnu_extensions' flag is not specified

    * Set $! to EINVAL when truncated files are detected

    * Fix an issue in b_error_set() wherein the message actually got clobbered
      due to a missing 'return' statement

    * Retool $builder->archive_as() to display error names for archive members,
      rather than their original filenames, in appropriate circumstances

Version 1.6

    * Avoid stat() calls on files excluded from archive

Version 1.5

    * Correct handling of files between 4 GiB & 8 GiB, inclusive

Version 1.4

    * Do not croak() on a warning

Version 1.3

    * Remove 2 GB file limit

Version 1.2

    * Correct handling of member names in LongLink blocks

    * Correct handling of filenames between 100 and 156 characters

Version 1.1

    * Correct suffix length calculation for directories, so directory path
      is set to archive_as value instead of absolutely path.

Version 1.0

    * Implement a large shared buffer; alleviate the need to copy tar file
      headers and file contents from one place to another when reading and
      writing

    * Allow reading from the filesystem and writing to tar streams in large
      blocks, thanks to a large shared buffer; no more reading and writing in
      blocks of 512 bytes at a time, which becomes rather slow for very large
      files

    * Remove the need to memcpy() a new file header buffer for each file

    * Allow the caller to specify a blocking factor in the constructor
      Archive::Tar::Builder->new(), in multiples of 512 bytes

    * Introduce a new Archive::Tar::Builder usage pattern; instead of allowing
      caller to add "members" to the archive, new archive members are written
      on-the-fly with the archive() and archive_as() methods, which are much
      friendlier to making tarball streams from arbitrary parts of a filesystem

    * Add 'flush()' method to Archive::Tar::Builder; allow caller to flush
      buffers at the end of an archive

    * Add 'finish()' method to Archive::Tar::Builder; allow caller to flush
      buffers and die() if any errors are encountered at the end of an archive

    * Use breadth-first, not depth-first, recursion in src/b_find.c, to prevent
      loss of items upon extraction

    * Add a 'follow_symlinks' option to Archive::Tar::Builder->new()

    * Resolve an issue wherein certain long paths are split incorrectly

    * Strip any leading slashes from paths generated while archiving

    * As a bonus, much of the codebase has been simplified due to the unified
      usage of a large shared buffer

Version 0.9

    * Resolve issues where files of certain sizes will cause no header value to
      be written in the size field

    * Ensure files >=8GB receive a proper base256-encoded size header field
      value

    * Implement a "ignore_errors" option which causes Archive::Tar::Builder to
      not die() at the end of archiving a stream wherein non-fatal errors were
      encountered

Version 0.8

    * Implemented an error handling mechanism which allows the presentation of
      non-fatal warnings to the caller, but also causes Archive::Tar::Builder
      to exit cleanly in otherwise fatal conditions; simple permissions issues
      while building an archive will no longer stop the stream

    * Allow caller to suppress warn()ings when archiving files

Version 0.7

    * No functional changes; drop unnecessary dependencies from PREREQ_PM in
      Makefile.PL

Version 0.6

    * No functional changes; adds build and test support for Perl 5.6 toolchains
      with the help of a variety of very ugly hacks in various places in unit
      test t/lib-Archive-Tar-Builder.t

Version 0.5

    * Feature-for-feature reimplementation in C with a small XS layer

    * Remove option of "GNU extensions"; GNU extensions are now always available
      and use is implied

    * Slightly better adherence to POSIX ustar header format, such as with ustar
      header magic

Version 0.4

    * Resolve an issue of build-time modules in mk/ being picked up by
      CPAN's indexer, resulting in an "UNAUTHORIZED RELEASE" warning, by
      declaring the PMLIBDIRS value in Makefile.PL to include only 'lib', and
      using a trick (thanks RURBAN!) to cause the PAUSE indexer to not pick up
      the package declarations in the files in mk/

Version 0.3

    Initial release