Bit7z v4.0.0
Changes from v4.0.0-rc:
- Use macro instead of function for HRESULT_FROM_WIN32 (by @michaelKle in #130).
- Fixed missing
#include <algorithm>
in formatdetect.cpp (by @gr3yknigh1 in #132). - Fixed code formatting, code style consistency, and comments.
- Fixed support to GCC 4.9.
- Improved unit tests.
- Added unit tests for BitItemsVector.
- Added tests for BitArchiveReader.
- Made the
fs
namespace internal to thebit7z
namespace (fix #141). - Increased the number of open files when creating multi-volume archives (partial fix for issue #150).
- Improved error messages.
- Removed createArchiveObject in Bit7zLibrary.
- Added a check if the password is ASCII-only when compressing to Zip archives (it can be disabled via the
BIT7Z_DISABLE_ZIP_ASCII_PWD_CHECK
CMake option). - Updated default version of 7-zip to v23.01.
- Fixed build with MSVC ARM toolchain.
- Removed third-party git submodules: now bit7z uses CPM.cmake for automatically handling third-party dependencies.
- By default, bit7z will use 7-zip v23.01, unless you specify a different version via the
BIT7Z_7ZIP_VERSION
option (e.g.,-DBIT7Z_7ZIP_VERSION=22.01
). - Alternatively, you can specify a custom path containing the 7-zip source code via the option
BIT7Z_CUSTOM_7ZIP_PATH
.
- By default, bit7z will use 7-zip v23.01, unless you specify a different version via the
- Fixed and improved the handling of UTF-8 paths.
- Improve format detection.
- Added option
BIT7Z_USE_SYSTEM_CODEPAGE
to make bit7z use the system codepage forstd::string
instead of UTF-8 (highly not recommended). - Added functions to check whether an archive is encrypted/header-encrypted (issue #164).
- Removed unnecessary conversions from
fs::path
totstring
and vice versa. - Added support for correctly storing symbolic links when creating archives (discussion #166).
- Added support for applying BIT7Z_STRING to macro defines (issue #167).
- Added optional sanitization of reserved Windows file names during file extraction (by @Luosiyuan in #168).
- Improved the README.
- Check for the file signature when detecting the format of files w/o an extension.
- Improved error messages when extracting an encrypted archive w/o a password.
- Introduced
BitFailureSource
error condition enum: it can be used for performing queries on bit7z'sstd::error_code
s, for the purpose of grouping, classification, or error translation.
Full Changelog: v4.0.0-rc...v4.0.0
Changes from v3.2.x:
Expand for more details!
- 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
.- std::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
- Added an initial unit test subproject (can be enabled via the
BIT7Z_BUILD_TESTS
option). - 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.
- Added a getter for the CRC value of a
BitArchiveItem
. - 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).
- Moved public API headers to the
include/bit7z/
folder. - 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.
- Re-licensed the project under the MPLv2 (issue #86).
Full Changelog: v3.2.0...v4.0.0
Binaries built using the default options with Clang10, GCC 9, MinGW 8, MSVC 2015, 2017, 2019, and 2022 👇