Changelog¶ ↑
1.1.0 / 2025-09-07¶ ↑
-
Enhancements:
-
Support large file size encoded in base-256 encoding which is a GNU tar extension #121.
-
Support large file size encoded in PAX extension header. #121.
-
Bug fix:
-
Resolved #62. The initial solution was developed with the assistance of Claude Sonnet 4 via Kiro, but nearly every line of the solution and tests were rewritten as part of a comprehensive review of all tests.
-
Breaking Change:
-
Removed
Minitar::PosixHeader.new_from_streamwhich should have been removed with 1.0.0 and has been deprecated for a decade or so. -
Governance:
Changes described below are effective 2024-12-31.
-
Update gem management details to use markdown files for everything, enabled in part by flavorjones/hoe-markdown. Several files were renamed to be more consistent with standard practices.
-
Updated security notes with an age public key rather than pointing to Keybase.io and a PGP public key which I no longer use. The use of the Tidelift security contact is recommended over direct disclosure.
Changes described below are effective 2025-08-04.
-
Contributions to minitar now require a DCO certification.
1.0.2 / 2024-08-23¶ ↑
1.0.1 / 2024-08-08¶ ↑
-
Bug fix:
-
Resolve a constant lookup issue. The accepted fix has been provided by Aram Price in #58.
1.0.0 / 2024-08-07¶ ↑
-
Breaking Changes:
-
Minimum Ruby version is 3.1.
-
The
Archive::Tar::Minitarnamespace has been completely removed andMinitaris a class instead of a module. -
Enhancements:
-
Added
Minitar.pack_as_file, originally proposed by John Prince back in 2011 #7.
0.12.1 / 2024-08-21¶ ↑
-
Reverted adbbb9b596 to restore compatibility with Ruby < 2.0. Resolves #63 reported by Robert Schulze.
0.12 / 2024-08-06¶ ↑
-
Properly handle very long GNU filenames, resolving #46.
-
Handle very long GNU filenames that are 512 or more bytes, resolving #45. Originally implemented in #47 by Vijay, but accidentally closed.
0.11 / 2022-12-31¶ ↑
-
symlink support is complete. Merged as PR #42, rebased and built on top of PR #12 by fetep.
-
kymmt90 fixed a documentation error on
Minitar.packin PR #43. -
This version is a soft-deprecation of all versions before Ruby 2.7, as they will no longer be tested in CI.
0.10 / 2022-03-26¶ ↑
-
nevesenin fixed an issue with long filename handling. Merged as PR #40.
0.9 / 2019-09-04¶ ↑
-
jtappa added the ability to skip fsync with a new option to
Minitar.unpackandMinitar::Input#extract_entry. Provide:fsync => falseas the last parameter to enable. Merged from a modified version of PR #37.
0.8 / 2019-01-05¶ ↑
-
@inkstak resolved an issue introduced in the fix for #31 by allowing spaces to be considered valid characters in strict octal handling. Octal conversion ignores leading spaces. Merged from a slightly modified version of PR #35.
-
@dearblue contributed PR #32 providing an explicit call to bytesize for strings that include multibyte characters. The PR has been modified to be compatible with older versions of Ruby and extend tests.
-
Akinori MUSHA (knu) contributed PR #36 that treats certain badly encoded regular files (with names ending in
/) as if they were directories on decode.
0.7 / 2018-02-19¶ ↑
-
Fixed issue #28 with a modified version of PR #29 covering the security policy and position for
Minitar. Thanks so much to @ooooooo-q for the report and an initial patch. Additional information was added as #30. -
@dearblue contributed PR #33 providing a fix for
Minitar::Readerwhen the IO-like object does not have a pos method. -
Kevin McDermott contributed PR #34 so that an InvalidTarStream is raised if the tar header is not valid, preventing incorrect streaming of files from a non-tarfile. This is a minor breaking change, so the version has been bumped accordingly.
-
Kazuyoshi Kato contributed PR #26 providing support for the GNU tar long filename extension.
-
Addressed a potential DOS with negative size fields in tar headers (#31). This has been handled in two ways: the size field in a tar header is interpreted as a strict octal value and the
Minitarreader will raise an InvalidTarStream if the size ends up being negative anyway.
0.6.1 / 2017-02-07¶ ↑
-
Fixed issue #24 where streams were being improperly closed immediately on open unless there was a block provided.
-
Hopefully fixes issue #23 by releasing archive-tar-minitar after minitar-cli is available.
0.6 / 2017-02-07¶ ↑
-
Breaking Changes:
-
Extracted
bin/minitarinto a new gem,minitar-cli. No, I am not going to bump the major version for this. As far as I can tell, few people use the command-line utility anyway. (Installingarchive-tar-minitarwill install bothminitarandminitar-cli, at least until version 1.0.) -
Minitarextraction before 0.6 traverses directories if the tarball includes a relative directory reference, as reported in #16 by @ecneladis. This has been disallowed entirely and will throw aSecureRelativePathErrorwhen found. Additionally, if the final destination of an entry is an already-existing symbolic link, the existing symbolic link will be removed and the file will be written correctly (on platforms that support symbolic links). -
Enhancements:
-
Licence change. After speaking with Mauricio Fernández, we have changed the licensing of this library to Ruby and Simplified BSD and have dropped the GNU GPL license. This takes effect from the 0.6 release.
-
Printing a deprecation warning for including Archive::Tar to put
Minitarin the top-level namespace. -
Printing a deprecation warning for including
Archive::Tar::Minitarinto a class (Minitarwill be a class for version 1.0). -
Moved
Archive::Tar::PosixHeadertoArchive::Tar::Minitar::PosixHeaderwith a deprecation warning. Do not depend onArchive::Tar::Minitar::PosixHeader, as it will be moving to::Minitar::PosixHeaderin a future release. -
Added an alias,
::Minitar, forArchive::Tar::Minitar, opted in withrequire 'minitar'. In future releases, this alias will be enabled by default, and theArchive::Tarnamespace will be removed entirely for version 1.0. -
Modified the handling of
mtimeinPosixHeaderto do an integer conversion (to_i) so that a Time object can be used instead of the integer value of the time object. -
Writer::RestrictedStreamwas renamed toWriter::WriteOnlyStreamfor clarity. No alias or deprecation warning was provided for this as it is an internal implementation detail. -
Writer::BoundedStreamwas renamed toWriter::BoundedWriteStreamfor clarity. A deprecation warning is provided on first use because a BoundedWriteStream may raise aBoundedWriteStream::FileOverflowexception. -
Writer::BoundedWriteStream::FileOverflowhas been renamed toWriter::WriteBoundaryOverflowand inherits fromStandardErrorinstead ofRuntimeError. Note that for Ruby 2.0 or higher, an error will be raised when specifyingWriter::BoundedWriteStream::FileOverflowbecauseWriter::BoundedWriteStreamhas been declared a private constant. -
Modified
Writer#add_file_simpleto accept the data for a file inopts[:data]. Whenopts[:data]is provided, a stream block must not be provided. Improved the documentation for this method. -
Modified
Writer#add_fileto acceptopts[:data]and transparently callWriter#add_file_simplein this case. -
Methods that require blocks are no longer required, so the
Archive::Tar::Minitar::BlockRequiredexception has been removed with a warning (this may not work on Ruby 1.8). -
Dramatically reduced the number of strings created when creating a POSIX tarball header.
-
Added a helper,
Input.each_entrythat iterates over each entry in an opened entry object. -
Bugs:
-
Fix #2 to handle IO streams that are not seekable, such as pipes,
STDIN, orSTDOUT. -
Fix #3 to make the test timezone resilient.
-
Fix #4 for supporting the reading of tar files with filenames in the GNU long filename extension format. Ported from @atoulme’s fork, originally provided by Curtis Sampson.
-
Fix #6 by making it raise the correct error for a long filename with no path components.
-
Fix #13 provided by @fetep fixes an off-by-one error on filename splitting.
-
Fix #14 provided by @kzys should fix Windows detection issues.
-
Fix #16 as specified above.
-
Fix an issue where
Minitar.packwould not include Unix hidden files when creating a tarball. -
Development:
-
Modernized minitar tooling around Hoe.
-
Added travis and coveralls.
0.5.2 / 2008-02-26¶ ↑
-
Bugs:
-
Fixed a Ruby 1.9 compatibility error.
0.5.1 / 2004-09-27¶ ↑
-
Bugs:
-
Fixed a variable name error.
0.5.0¶ ↑
-
Initial release. Does files and directories. Command does create, extract, and list.