Releases: mholt/archiver
v4.0.0-alpha.9
Alpha 9 introduces some new features, and also important fixes and optimizations, especially related to FileSystems and tar archives.
archives
. See #427.
- Using
fs.WalkDir()
is now much faster when walking large tar archives. - A
FileSystem
can be created from a stream instead of just a file name (but the stream must be a Reader, ReaderAt, and Seeker). - Added lzip compression.
- Renamed
CompressedArchive
toArchive
since compression is optional. - Split
Archival
intoArchival
andExtraction
, since not all archive formats can archive (some, like rar and 7z, can only extract). - Removed the filename filter argument from
Extract()
since it was mostly pointless and even confusing. - Brotli-compressed files can now be identified by their stream, maybe... sometimes (it's worth a shot; brotli has no notable magic number or header so we just try our best).
- Removed
ErrStopWalk
in favor offs.SkipAll
which is apparently the same thing - Renamed
ErrNoMatch
toNoMatch
since it is a sentinel (error) value and not an actual error.
What's Changed
- Bugfix: Tar files created in their target directory shouldn't recurse infinitely by @drewstinnett in #384
- zlib format incorrectly matches on ASCII files starting with the letter x by @dpgarrick in #386
- Option to use number for user and/or group names by @breezerider in #385
- Fix create archive to a continuous writing source file failed by @halfcrazy in #388
- 7z: Fix iteration bug by @SheltonZhu in #394
- Add lzip support by @sorairolake in #401
- Expose gzip.Reader.Multistream by @rgmz in #407
- zip: Fix compression method not set without SelectiveCompression enabled (closes #418) by @hevav in #419
- chore(go.mod): Switch to upstream lzip package by @sorairolake in #422
- Upgrade rardecode to v2.0.0-beta.3 by @rgmz in #423
- Refactor FS types; improve performance by @mholt in #426
New Contributors
- @drewstinnett made their first contribution in #384
- @dpgarrick made their first contribution in #386
- @breezerider made their first contribution in #385
- @SheltonZhu made their first contribution in #394
- @sorairolake made their first contribution in #401
- @rgmz made their first contribution in #407
- @hevav made their first contribution in #419
Full Changelog: v4.0.0-alpha.8...v4.0.0-alpha.9
v4.0.0-alpha.8
This release adds support for reading 7zip archives and contains several significant fixes. Thank you to all who contributed!
What's Changed
- Retain underlying reader if it's an io.Seeker by @jhwz in #327
- Enhance FilesFromDisk (close #331) by @mholt in #332
- fs: Improve Open and Stat on ArchiveFS for streams by @mholt in #335
- Fix nested directory listing for archives without explicit directory names. by @jeremyje in #339
- Document caveats with compressed fs.FS by @WeidiDeng in #344
- return zip.Reader in FileSystem if file is a zip file by @WeidiDeng in #349
- ignore empty root dir name when compressing file by @WeidiDeng in #355
- rewrite file matching for fs Open, ReadDir and Stat by @WeidiDeng in #354
- add Archive method to SevenZip by @nikolaymatrosov in #364
- zip: fix File.Open not working if called after zip.Extract completes by @ncw in #367
- Allow Identify to take a nil io.Reader by @ncw in #370
- Rework ArchiveAsync interface to make it return any archiving errors by @ncw in #369
- Bump golang.org/x/text from 0.3.7 to 0.3.8 by @dependabot in #372
New Contributors
- @jeremyje made their first contribution in #339
- @WeidiDeng made their first contribution in #344
- @nikolaymatrosov made their first contribution in #364
- @ncw made their first contribution in #367
- @dependabot made their first contribution in #372
Full Changelog: v4.0.0-alpha.6...v4.0.0-alpha.8
v4.0.0-alpha.6
This release focuses some attention on Identify()
, which has a slightly modified signature; please adjust programs accordingly. It can now accept any io.Reader
and no longer requires Seek()
; however, it returns three values including a new Reader that can re-read the buffered bytes consumed during identification. Callers should use that returned Reader after calling Identify()
.
What's Changed
- Fix for Identify() failing on empty and small files: by @congop in #319
- Change Identify API to accept only an io.Reader by @jhwz in #322
New Contributors
Full Changelog: v4.0.0-alpha.5...v4.0.0-alpha.6
v4.0.0-alpha.5
A couple minor enhancements (including ArchiveAsync()
). Thanks for your participation and contributions!
Full Changelog: v4.0.0-alpha.4...v4.0.0-alpha.5
v4.0.0-alpha.4
A few more bug fixes and enhancements. Thanks for your participation and contributions.
Full Changelog: v4.0.0-alpha.3...v4.0.0-alpha.4
v4.0.0-alpha.3
Bug fixes and minor-moderate enhancements. Things are looking even better now! Thanks for your participation and contributions.
Full Changelog: https://github.com/mholt/archiver/compare/v4.0.0-alpha.2..v4.0.0-alpha.3
v4.0.0-alpha.2
A few enhancements and bug fixes.
v4.0.0-alpha.1
v4 is a complete rewrite with a simpler, stream-oriented API. The arc
command has yet to be implemented for v4 (please use v3 for now, if you need that).
PR #302 documents the many issues fixed/closed by this new version.
Some of the major new features:
- Stream-oriented APIs (no writing to disk!)
- Simpler APIs (less code and docs!)
- File system abstraction (treat archives like directories!)
- Format identification (by filename or header!)
Many other improvements and simplifications have been made.
The v4 godoc is live. See the README for a tour and code examples. Please try it out and leave your feedback!