Bit7z v4.0.0 RC
Pre-release
Pre-release
Changes from v4.0.0-beta:
- Fixed
BitAbstractArchiveCreator
not respecting the retaining directories option. - Incremented the minimum CMake version needed to v3.11.
- Added an initial unit test subproject (can be enabled via the
BIT7Z_BUILD_TESTS
option).- I will make it more complete over time.
- Fixed
BitOutputArchive::addItems
not respecting the file indexing options. - Fixed issue #112.
- Fixed typo in
guids.cpp
andguids.hpp
(issue #113). - Fixed linking when using some versions of MinGW.
- Fixed public API support to C++11.
- Fixed compilation on Windows with native strings enabled.
- Fixed some edge cases in the wildcard matching function.
- Added a basic
OverwriteMode
enum that allows configuring how to deal with when an output file or buffer already exists (issue #116). It works for both compressors and extractors.None
: The archive handler will throw an exception.Overwrite
: The handler will overwrite the old file or buffer with the new one.Skip
: The handler will skip writing to the output file or buffer.
- Removed the beta's
UpdateMode::OverwriteArchive
enumerator: the same result can be achieved by settingOverwriteMode::Overwrite
. - Added a getter for the CRC value of a
BitArchiveItem
. - Added
UpdateMode::Update
and deprecatedUpdateMode::Overwrite
. - Deprecated
BitAbstractArchiveCreator::setUpdateMode(bool)
. - Allow extracting multi-volume archives without writing the full archive (issue #107).
- Fixed
CVolumeOutStream
calling the wrong parent classSetSize
method. - Added option for generating Position Independent Code (issue #117).
- Allow setting archive format properties as described in the 7-zip docs (close issues #91 and #103).
- Added
posixCode()
method toBitException
. - Added option to link to libc++ on Clang.
- Moved public API headers to the
include/bit7z/
folder. - Fixed building on 32-bit architectures.
- Added an option to automatically prepend paths with the long path prefix (issue #45)
- Added an option to build the Doxygen documentation.
- Clean up code and fix code formatting.
Full Changelog: a75e335...ac49527
Changes from v3.2.x:
- Added support to Linux and macOS (issue #19).
- Added support to the MinGW compiler.
- Dropped support to old MSVC 2012 and 2013.
- The project requires at least a C++14 compiler to build; the public API is still C++11-compatible.
- Removed QMake and MSBuild project files: now bit7z uses only CMake as its build system.
- Removed format restriction to memory compression.
- Renamed
BitArchiveInfo
toBitArchiveReader
. - Added support to extracting/testing the input archive of
BitArchiveReader
. - Made
BitArchiveReader
/BitInputArchive
behave like anstd
container (e.g., added iterators). - Added support for canceling ongoing operation in progress callback (issue #37).
- Added support to set the number of threads used when compressing (issue #38).
- Added support for extracting without retaining the directory structure (issue #34).
- Added the possibility to choose the word size to use when compressing.
- Added the
BitArchiveWriter
class that allows creating a single new archive or updating an old one with new items. - Added the
BitArchiveEditor
class that allows editing existing archives.- Added support for renaming/deleting items inside an archive (issue #43).
- Added different archive update modes:
None
: Trying to update and archive will throw aBitException
.Append
: New items will be appended to the archive (i.e., the old update behavior).Overwrite
: New items whose path already exists in the archive will be overwritten, and others will be appended.
- Changed file callback to make it report the full path of the file (issue #46).
- Added the possibility to extract a specific file to buffer (issue #32).
- Fixed and improve the public API.
- Renamed the
BitExtractor
class toBitFileExtractor
.- Now,
BitExtractor
is just a template class for all the extraction classes.
- Now,
- Renamed the
BitCompressor
class toBitFileCompressor
.- Now,
BitCompressor
is just a template class for all the compression classes.
- Now,
- Changed the default string type to
std::string
instead ofstd::wstring
.- Input strings are considered UTF-8 encoded: the project will follow the UTF-8 Everywhere Manifesto.
- This allows using the library in cross-platform projects more quickly.
- You can still achieve the old behavior by using bit7z with the
-DBIT7Z_USE_NATIVE_STRING
CMake option. In this case:- On Windows, the default string type will be
std::wstring
(as in bit7z v3); - On Linux and macOS, it will remain
std::string
.
- On Windows, the default string type will be
- Re-licensed the project under the MPLv2 (issue #86).
Full Changelog: v3.2.0...v4.0.0-rc
Binaries built using Clang10, GCC 9, MinGW 8, MSVC 2015, 2017, 2019, and 2022 👇