Skip to content

Releases: JuliaIO/Tar.jl

v1.9.2

04 May 22:06
db1fd21
Compare
Choose a tag to compare

Tar v1.9.2

Diff since v1.9.1

Closed issues:

  • permission docs are inaccurate (#38)
  • Mismatched tree hash (#100)
  • Unsupported entry type: hardlink (#101)
  • Not recording non-empty directories is problematic (#103)

Merged pull requests:

v1.9.1

09 Apr 21:47
86825ec
Compare
Choose a tag to compare

Tar v1.9.1

Diff since v1.9.0

Closed issues:

  • Extracting error (#94)

Merged pull requests:

v1.9.0

04 Dec 22:05
3ff3375
Compare
Choose a tag to compare

Tar v1.9.0

Diff since v1.8.0

This is the release in which Tar.jl has become a stdlib, so many changes were made to accommodate that. The primary "feature" in this release is technically a bug fix: previously on Windows Tar would not correctly detect executable files and it would always extract all files as executable; now, when using Julia ≥ 1.6 it will do both correctly.

Closed issues:

  • AssertionError when extracting tarball (#80)

Merged pull requests:

v1.8.0

25 Sep 00:11
4b1cad8
Compare
Choose a tag to compare

Tar v1.8.0

Diff since v1.7.0

This release adds one "feature": it no longer checks that the magic field of TAR header blocks contains the string ustar. It seems that some implementations don't fill in this magic value and instead leave the field empty. If we're reading a block that isn't actually in TAR format we'll figure it out since the checksum won't be right.

It also fixes incorrect documentation of how Tar.extract handles permissions and adds a README section on reading and writing compressed tarballs using either external commands (e.g. gzip) or transcoding streams packages (e.g. CodecZlib).

Closed issues:

  • unknown magic string for tar file: "" (#67)
  • permission docs are inaccurate (#38)
  • Document and/or simplify how to create compressed tarball (#66)

Merged pull requests:

v1.7.0

24 Sep 22:04
c0a739d
Compare
Choose a tag to compare

Tar v1.7.0

Diff since v1.6.1

The only feature introduced in this release is the ability to Tar.list streams that do not support the mark, unmark and reset API for rewinding IO streams.

Merged pull requests:

v1.6.1

07 Aug 21:03
678e790
Compare
Choose a tag to compare

Tar v1.6.1

Diff since v1.6.0

This patch release fixes an uncommon bug that can occur when the amount of data available to read is not a multiple of the TAR file block size of 512 bytes. This can occur, for example, when reading tarball data from a network socket.

Merged pull requests:

v1.6.0

24 Jun 22:02
304c8bd
Compare
Choose a tag to compare

Tar v1.6.0

Diff since v1.5.0

The major feature of this release is being able to simulate symlinks by copying on file systems that cannot create them.

Closed issues:

  • tree_hash giving invalid result (#59)

Merged pull requests:

v1.5.0

08 Jun 15:02
af9333f
Compare
Choose a tag to compare

Tar v1.5.0

Diff since v1.4.0

This is a big release. The major features are:

  1. Tar.list has a method which takes a callback instead of returning a vector of headers.
  2. All arguments that can be files or IO handles can now also be commands and pipelines.
  3. Support for "skeleton" files.

Skeleton files provide a means of reconstructing exact tarballs from an on-disk extracted tree: during Tar.extract you can provide a file (or IO handle or command) to save the "skeleton" of the tarball to. This skeleton is all the headers in the tarball without any file data, prefixed with a header allowing the file to be recognized as a skeleton file. Later, if you provide the skeleton file to Tar.create when making a tarball of that extracted directory, it will use the skeleton to reconstruct the original tarball, filling in the missing file data from files on disk. If the files haven't changed, the reconstructed tarball will be identical.

Merged pull requests:

v1.4.0

23 May 14:02
aa0cd90
Compare
Choose a tag to compare

Tar v1.4.0

Diff since v1.3.1

This release adds two new API functions:

  • rewrite allows a tarball to be rewritten to the standard form that create produces without needing to fully extract and re-create the tarball. If the input stream is seekable, it makes one pass to index the tarball and uses seek to access file data in the correct order. If the input stream is not seekable, it will collect all the data in a buffer first and then use that.
  • tree_hash compute the git tree hash (SHA1 and SHA256 supported) of a tarball without needing to extract it to disk. This is particularly useful since some file systems lack features that are significant to git when hashing a file tree (e.g. symlinks, case preservation, ability to set/get executable bits).

This also includes significant refactoring of the internal {read,write}_tarball functions. This refactoring allows read_tarball to by extract, rewrite and tree_hash while write_tarball is used by create and rewrite. In the future these internal functions may be promoted to official low-level APIs.

Closed issues:

  • add rewrite function (#18)
  • add tree_hash function (#19)

Merged pull requests:

v1.3.1

04 May 05:01
e7ff504
Compare
Choose a tag to compare

Tar v1.3.1

Diff since v1.3.0

Greatly improved performance: the default buffer size was previously the same as the TAR block size—512 bytes. This is, of course, a tiny buffer which is bad for I/O performance. This release increases the buffer size to 2MiB which, in particular, allows taking advantage of transparent huge page support on Linux.

Merged pull requests:

  • Increase default buffer size (#34) (@Keno)