Skip to content

Bit7z v4.0.0 RC

Pre-release
Pre-release
Compare
Choose a tag to compare
@rikyoz rikyoz released this 21 Jan 12:31
· 0 commits to 815b7434d0aab6b62d16e786e1e33a96e7c0bb49 since this release
f2d7b91

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 and guids.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 setting OverwriteMode::Overwrite.
  • Added a getter for the CRC value of a BitArchiveItem.
  • Added UpdateMode::Update and deprecated UpdateMode::Overwrite.
  • Deprecated BitAbstractArchiveCreator::setUpdateMode(bool).
  • Allow extracting multi-volume archives without writing the full archive (issue #107).
  • Fixed CVolumeOutStream calling the wrong parent class SetSize 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 to BitException.
  • 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 to BitArchiveReader.
  • Added support to extracting/testing the input archive of BitArchiveReader.
  • Made BitArchiveReader/BitInputArchive behave like an std 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 a BitException.
    • 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 to BitFileExtractor.
    • Now, BitExtractor is just a template class for all the extraction classes.
  • Renamed the BitCompressor class to BitFileCompressor.
    • Now, BitCompressor is just a template class for all the compression classes.
  • Changed the default string type to std::string instead of std::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.
  • 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 👇