Releases: mhx/dwarfs
dwarfs-0.12.4
This release mainly fixes a bug that was introduced with v0.12.0 (06f8728 to be precise). When re-compressing a file system image where some blocks cannot be compressed using the selected algorithm because of a bad_compression_ratio_error
(i.e. when the compressed size is actually larger than the uncompressed size), the resulting block
object was left empty, which subsequently led to a segfault.
A few small bugs have also been fixed and couple of features were added to the dwarfsck
tool, mostly triggered by the discussion in #263.
Most other changes that made it into the release were related to how the static binaries are built. All the dependencies have been updated, in particular also for the Windows build. The Windows build was also switched from openssl
to libressl
. Overall, the size of the Windows universal binary was reduced by 30% and is now comparable in size to the Linux binaries.
Bugfixes
- Segfault on
bad_compression_ratio_error
. When recompressing a filesystem where some blocks cannot be compressed using the selected algorithm because of abad_compression_ratio_error
, the resultingblock
was left empty after the refactoring done in 06f8728. - Add history unless
--no-history
is given when rewriting a file system image. - Allow dumping
frozen_layout
w/ofrozen_analysis
indwarfsck
. - Logging timestamps should show local time.
- Workaround a weird MSVC bug.
- Remove useless cast causing compiler warning.
Features
- More complete breakdown of metadata in
dwarfsck
. - Add
schema_raw_dump
flag todwarfsck --detail
.
Build
- Switch static build to libressl on Windows.
- Update static build libraries.
- Update folly/fbthrift/fsst.
Other
- Introduce and use
safe_localtime()
to prevent issues withfmt
deprecatingfmt::localtime
. - Speed up a few slow tests on Windows.
Full Changelog: v0.12.3...v0.12.4
SHA-256 Checksums
1492c0796ab3479a80e4e191e651f20c005e634b73ec684edd48465830f0aab3 dwarfs-0.12.4-Linux-aarch64.tar.xz
bff9da50918cf9272dbb9322733a629ccd84efc723e355a86eafcd075081f968 dwarfs-0.12.4-Linux-x86_64.tar.xz
352d13a3c7d9416e0a7d0d959306a25908b58d1ff47fb97e30a7c8490fcff259 dwarfs-0.12.4.tar.xz
5574d6aeb970c4cbabd50526994159c0551b2dc3e940edc774ac0952e1528c93 dwarfs-0.12.4-Windows-AMD64.7z
72f688800faf74acfdc75b6d77a456930db7088ee7c7e115c4b95414ab751c93 dwarfs-fuse-extract-0.12.4-Linux-aarch64
ea182efeb3ac55f8f79ee80009854c2ac8410b37d427da90e42b96eec73c470f dwarfs-fuse-extract-0.12.4-Linux-x86_64
06c35c1dc99bc9c19f73ceda238866f9b4a631c08ab4ad19bbf8ea5c0a3ff9f0 dwarfs-fuse-extract-mimalloc-0.12.4-Linux-aarch64
afa48dfda2692e5b3cba6c523ab66696140d48dc8c4dfd57b114c73632e45326 dwarfs-fuse-extract-mimalloc-0.12.4-Linux-x86_64
7efdbd93954f1f88898b690466dca4b2ae3d20e799247c4ee4459acb35824389 dwarfs-universal-0.12.4-Linux-aarch64
48fc469bca251b932904b33d6161fc9a964cdefdb9d4d128828b4766b9c63eaa dwarfs-universal-0.12.4-Linux-x86_64
094eaaf821df47daaa11899927f269f57f71843b39ecd53bae70692447cb3e65 dwarfs-universal-0.12.4-Windows-AMD64.exe
dwarfs-0.12.3
This release provides a fix for cases where automatic image offset detection could fail to work correctly as well as further size optimizations of the release binaries. The dwarfs-universal
binary now uses LibreSSL's libcrypto
, whereas the binaries from the release tarball use OpenSSL's libcrypto
. This is a trade-off favoring size for the universal binary and speed for the "regular" binaries. Note, however, that this will be imperceptible unless you use dwarfsck
with either --check-integrity
or --checksum
.
v0.11.3 | v0.12.0 | v0.12.1 | v0.12.2 | v0.12.3 | |
---|---|---|---|---|---|
Linux x86_64 universal binary | 5,319,916 | 2,833,280 | 2,903,624 | 2,968,252 | 2,215,464 |
Linux aarch64 universal binary | 4,637,312 | 2,725,864 | 2,588,924 | 2,636,912 | 2,180,928 |
Linux x86_64 fuse-extract binary (jemalloc) | - | 1,183,752 | - | 906,016 | 845,984 |
Linux aarch64 fuse-extract binary (jemalloc) | - | 1,188,760 | - | 913,260 | 885,416 |
Linux x86_64 fuse-extract binary (mimalloc) | - | - | 1,075,536 | 835,500 | 774,804 |
Linux aarch64 fuse-extract binary (mimalloc) | - | - | 1,059,588 | 839,740 | 811,156 |
Linux x86_64 binary tarball | 7,736,712 | 3,888,104 | 3,698,356 | 3,703,712 | 3,600,544 |
Linux aarch64 binary tarball | 6,791,424 | 3,497,140 | 3,271,584 | 3,296,380 | 3,258,856 |
Bugfixes
- Automatic image offset detection (for images using a custom header) did not work correctly if the header contained a string that would be identified as the start of a v1 section header (these were only used before dwarfs-0.3.0). If there was either
"DWARFS\x02\x00"
or"DWARFS\x02\x01"
in the header, offset detection would fail. The check has been modified to peek further into the data and ensure this really is a v1 section header, and also checking if the next section header position can be derived from the length field. It is still possible to construct a file system image where offset detection will ultimately fail, but it is much less likely with the change.
Build
- The build process for the release binaries has been further tweaked to reduce binary size. The
dwarfs-fuse-extract
binary now again supports extracting files by pattern; I didn't realize that this was actually a widely used feature before dropping it in the last release.dwarfs-universal
is now linked against LibreSSL'slibcrypto
instead of OpenSSL's. This significantly reduces the size at the expense slightly slower cryptographic hash functions. However, this will likely only be perceivable when using--tool=dwarfsck
with either--check-integrity
or--checksum
. The binaries from the release tarballs are still linked againstlibcrypto
from OpenSSL.
Full Changelog: v0.12.2...v0.12.3
SHA-256 Checksums
7e2c1d6f4bf8f19cedc8f050f405906e269d96197e238226f334c7ae2fb1f489 dwarfs-0.12.3-Linux-aarch64.tar.xz
9a2590deb3069d7e677604304d94226fa10b7385ccee46ba8c66f4e6c902168c dwarfs-0.12.3-Linux-x86_64.tar.xz
bd2d54178c59e229f2280eea747479a569e6f6d38340e90360220d00988f5589 dwarfs-0.12.3.tar.xz
acbfbf5a48a8fa53dd6a39d7450c8d6849ef99d305563461596ac5c52767387a dwarfs-0.12.3-Windows-AMD64.7z
16a450e6996ab59b89f69b0e30dab508d1e88c526586df5db5b7a43ede252398 dwarfs-fuse-extract-0.12.3-Linux-aarch64
e658a0513bc9168ff6f366b2dc19f6360408663fc2f0015653912075526c05a2 dwarfs-fuse-extract-0.12.3-Linux-x86_64
755599e8b52e36a87d6b90e860f38c7cf3c71bcebd8f63e11834cca0fbed9708 dwarfs-fuse-extract-mimalloc-0.12.3-Linux-aarch64
372c3090fd966e881978aaa7ccfcbb1476cf16a3cc3ddbaaddeac14cf141cb5d dwarfs-fuse-extract-mimalloc-0.12.3-Linux-x86_64
9c66639a66a122d964ee297b93a638c61f25c917e9aee49339fde17320757f2a dwarfs-universal-0.12.3-Linux-aarch64
c5e83388f41cddb59b3c490fc9fad8fbd73b134f8da5b8bba77297ab593d0efb dwarfs-universal-0.12.3-Linux-x86_64
9dbc03ce6dfc9df25e8c9e77e5ee15f624ef244aaa9b4e235fb121761c698789 dwarfs-universal-0.12.3-Windows-AMD64.exe
dwarfs-0.12.2
This release provides a fix for a performance regression, switches the default memory allocator back to jemalloc
, and further reduces the size of the dwarfs-fuse-extract
binary. The latter is available as both a jemalloc
and a mimalloc
version. jemalloc
offers a lot more configuration options that can be crucial in optimizing the memory profile of e.g. the FUSE driver. If you don't need that flexibility, you can save a few bits by using the -mimalloc
version.
v0.11.3 | v0.12.0 | v0.12.1 | v0.12.2 | |
---|---|---|---|---|
Linux x86_64 universal binary | 5,319,916 | 2,833,280 | 2,903,624 | 2,968,252 |
Linux aarch64 universal binary | 4,637,312 | 2,725,864 | 2,588,924 | 2,636,912 |
Linux x86_64 fuse-extract binary (jemalloc) | - | 1,183,752 | - | 906,016 |
Linux aarch64 fuse-extract binary (jemalloc) | - | 1,188,760 | - | 913,260 |
Linux x86_64 fuse-extract binary (mimalloc) | - | - | 1,075,536 | 835,500 |
Linux aarch64 fuse-extract binary (mimalloc) | - | - | 1,059,588 | 839,740 |
Linux x86_64 binary tarball | 7,736,712 | 3,888,104 | 3,698,356 | 3,703,712 |
Linux aarch64 binary tarball | 6,791,424 | 3,497,140 | 3,271,584 | 3,296,380 |
Bugfixes
- The
dwarfs-0.12.0
release introduced a performance regression where FLAC compression took more than twice as long as in the previous releases. This has been fixed. FLAC decompression was unaffected.
Build
- A few small refactoring changes to further reduce the size of the
fuse-extract
binary. In particular, the performance monitor and the history feature are now fully removed. Also, the functionality to extract in different archive formats as well as to extract only files matching a pattern have been removed, so the image can only be fully extracted to disk.
Full Changelog: v0.12.1...v0.12.2
SHA-256 Checksums
7d58b4125171befb5457a6318cda99607e32c2226db74de5f7449dee0e10764f dwarfs-0.12.2-Linux-aarch64.tar.xz
61d239c0583d88443ca3e0080f1fe8bc97979a3ad67ed15ca3516e27ea7e7f53 dwarfs-0.12.2-Linux-x86_64.tar.xz
9b256d1f2bc17917cd63a1bee3bd5f505076b4d880fcf9daa18a6ca5bca35aeb dwarfs-0.12.2.tar.xz
1ffbe8bbf44c5168aba5d0132705ad46837e4925ff57798333efcc6312bd7441 dwarfs-0.12.2-Windows-AMD64.7z
2aea873299cecc68dc0d8028d55cb00dc5c3289d12896e70e2038ea09d780c4e dwarfs-fuse-extract-0.12.2-Linux-aarch64
88559806c8f2a98108e9ecf24926a317ea0afe655ef45f76c476307c4e71d971 dwarfs-fuse-extract-0.12.2-Linux-x86_64
99202109637d4d49d3b3945b35487deada758358b4f185869975c7c4be9870fa dwarfs-fuse-extract-mimalloc-0.12.2-Linux-aarch64
8af6f46b5c39fa7fa9294b652bd023302599f2723f33571b3e2bf2376f420770 dwarfs-fuse-extract-mimalloc-0.12.2-Linux-x86_64
79a8e5d729650d8f26e1759228a10c2ea49ae88c1a491741f9196ce2937b4e2e dwarfs-universal-0.12.2-Linux-aarch64
29d3195831c8ff3aca46b2a731eee7899d3735a71b870e9510adeaeb34dd135c dwarfs-universal-0.12.2-Linux-x86_64
1232104b7c44dda3da46fdc6f7667e542e2e916ac926e2395965bcc035ae8046 dwarfs-universal-0.12.2-Windows-AMD64.exe
dwarfs-0.12.1
A quick update to v0.12.0 that addresses a few issues and improves the performance of the release binaries while mostly making them even smaller. The universal x86_64 binary is slightly bigger, but that's a different story [1].
v0.11.3 | v0.12.0 | v0.12.1 | |
---|---|---|---|
Linux x86_64 universal binary | 5,319,916 | 2,833,280 | 2,903,624 |
Linux aarch64 universal binary | 4,637,312 | 2,725,864 | 2,588,924 |
Linux x86_64 fuse-extract binary | - | 1,183,752 | 1,075,536 |
Linux aarch64 fuse-extract binary | - | 1,188,760 | 1,059,588 |
Linux x86_64 binary tarball | 7,736,712 | 3,888,104 | 3,698,356 |
Linux aarch64 binary tarball | 6,791,424 | 3,497,140 | 3,271,584 |
Bugfixes
- Attempt to fix a linking issue in the Homebrew build.
Features
-
Added
--memory-limit=auto
tomkdwarfs
to use a more reasonably (hopefully) default for the block queue. The old default of 1 GiB was quite arbitrary and definitely not suitable for low-end systems. The newauto
default will determine the limit based on the number of workers (which in turn is based on the number of CPUs), the block size, and the amount of physical memory of the system. -
Replaced
vector_byte_buffer
withmalloc_byte_buffer
, which is internally based around a simple buffer that doesn't incur the cost of initializing each element likestd::vector
. Especially for large blocks which are known to be overwritten immediately, this can save a few CPU cycles. -
The
x86_64
release binaries now use an optimizedmemcpy
implementation (if supported by the CPU) instead of the rather slow muslmemcpy
implementation. This makesmkdwarfs
a few percent faster anddwarfsextract
up to 20% faster.
Build
-
Switched the release binaries to use
mimalloc
instead ofjemalloc
. The primary reason for this change is a reduction in binary size. -
Updated the
xz
library to the latest 5.8.1 release.
Full Changelog: v0.12.0...v0.12.1
SHA-256 Checksums
f61d49436ad6b02e7e496f746ce09d69a3f050592286b5ff3d6e3edba765b82a dwarfs-0.12.1-Linux-aarch64.tar.xz
6685622e6bf1edea138023dfb5a84ec241c6a57619ec5d7ee86344057d89296b dwarfs-0.12.1-Linux-x86_64.tar.xz
5523a5c3aea244cbfbccfe64f1df6053b3901e6af8916fac1530faf0f7a5f07f dwarfs-0.12.1.tar.xz
d51c2e5ed021a7322928aeb8f09cc3c392362c8a1ea6217e2ba177f241f8a809 dwarfs-0.12.1-Windows-AMD64.7z
8850a0002d7008791c2629fd3a5bc718c50606dfc391bf5b1259d9f6d79c8401 dwarfs-fuse-extract-0.12.1-Linux-aarch64
d01dd82068e0d2020fd35ba5a2ddf416aeba32a9f6f7ac4544a173eefc6c743f dwarfs-fuse-extract-0.12.1-Linux-x86_64
3dfc3d8d2152f4d9d29c543d0a30b2ba1bc0bba470742e08924ad75dc8c23967 dwarfs-universal-0.12.1-Linux-aarch64
518faa4f5a476dcc4ec75d8ed4ac31d076990bb515cd32a752a8165b3ad04885 dwarfs-universal-0.12.1-Linux-x86_64
1ad50c0b6127e56dc026de7d2f7a3df28fa3983bdd628584a652d05f97e28b88 dwarfs-universal-0.12.1-Windows-AMD64.exe
[1] I've noticed that the universal binary, and sometimes the other binaries as well, fluctuate dramatically in size after being UPX compressed. In the last CI build before tagging the new DwarFS release, the UPX-compressed universal binary had a size of 2,713,752 bytes. The only change after tagging the release was the version info (although, with LTO, you never know what the compiler makes of that). Interestingly, when unpacked, both binaries have exactly the same size. But the packed size differs by ~190 KiB.
dwarfs-0.12.0
The main features of this release are new licensing conditions and significantly smaller binaries.
New Licensing Conditions
Instead of being all GPL-3.0 like all the previous releases, this release changes the license of a large fraction of the DwarFS code to MIT. All tools and libraries that only read DwarFS images are now MIT-licensed. Everything else (e.g. mkdwarfs
) is still GPL-3.0 for the time being.
Significantly reduced binary size
By moving the build pipeline to Alpine Linux and through some major refactoring, the size of the release binaries has been reduced significantly.
v0.11.3 | v0.12.0 | |
---|---|---|
Linux x86_64 universal binary | 5,319,916 | 2,833,280 |
Linux aarch64 universal binary | 4,637,312 | 2,725,864 |
Linux x86_64 binary tarball | 7,736,712 | 3,888,104 |
Linux aarch64 binary tarball | 6,791,424 | 3,497,140 |
There's now also an additional binary called dwarfs-fuse-extract
that combines the functionality of the FUSE driver dwarfs
and dwarfsextract
in a single, extremely small binary:
v0.12.0 | |
---|---|
Linux x86_64 fuse-extract binary | 1,183,752 |
Linux aarch64 fuse-extract binary | 1,188,760 |
The main use case for this binary is single-file application image runtimes (e.g. uruntime). This binary doesn't have built-in manual pages or support for the performance monitor. It also only supports zstd
and lzma
compression.
Bugfixes
-
Build release binaries against an up-to-date
libfuse
. Fixes github #252. -
Changes for compatibility with Boost.Process v2.
Features
-
Re-licensed all libraries required for reading DwarFS images under the MIT license. The source of all tools that just read DwarFS images (i.e. everything except for
mkdwarfs
) are also under the MIT license now. Everything else is still GPL-3.0. Addresses github #255. -
Significantly reduced binary size in the static release builds. This is the result of refactoring code that unconditionally pulled in code-heavy dependencies such as
libcrypto
, as well as optimizing the build pipeline (e.g. building dependencies with only the necessary set of features) and turning on link time optimization. -
A new kind of "universal" binary
dwarfs-fuse-extract
is part of the release now. This combines the FUSE driver (dwarfs
) anddwarfsextract
into a single binary, but does not include themkdwarfs
anddwarfsck
tools that are also part of the regular universal binary.dwarfs-fuse-extract
is much smaller than the regular universal binary and especially suitable to AppImage-like applications. -
New
hotness
categorizer inmkdwarfs
that allows a list of "hot" files to be stored in distinct file system blocks. -
New
explicit
ordering mode inmkdwarfs
that allows files to be ordered accoring to the order in a given list file. -
dwarfs
now shows the version of the FUSE library used. -
New
dwarfs
optionspreload_all
andpreload_category
to populate the block cache immediately after mounting. -
New
dwarfs
optionanalysis_file
that can be used for profiling and as input tomkdwarfs
newhotness
categorizer andexplicit
ordering mode. -
New
dwarfs
optionblock_allocator
that allows the user to switch from amalloc
-based block allocator to anmmap
-based one. This can help with returning memory back to the system if the blocks are evicted from the cache.
Full Changelog: v0.11.3...v0.12.0
SHA-256 Checksums
15867a3e1b5a310ea27700806ce7d504c912de8741dddbb40430eee419c4532f dwarfs-0.12.0-Linux-aarch64.tar.xz
4fd1e23a97d871d0536b818c11a58c58859627e347d10c1e211522c8dd56b328 dwarfs-0.12.0-Linux-x86_64.tar.xz
91d5a22e5cf125a9871bcbdb4875bdd661557757b9f50e88553da4b47f8351d2 dwarfs-0.12.0.tar.xz
e9a4d513085bb91ab26f86277cfdfbf7930adf4bcb3c44be9f67f205d1db29fb dwarfs-0.12.0-Windows-AMD64.7z
f7e7909b779a96dccced8e6749729ccf73ac5782ed5721cc27199498b84a27c1 dwarfs-fuse-extract-0.12.0-Linux-aarch64
264e6cbac5ade98275241082770e7aefb6e931612c543deb87322be03fc65bb8 dwarfs-fuse-extract-0.12.0-Linux-x86_64
41981a4f7a068f6c3bc32dad5307aa4466d0d74bf13083a495151d0ece34b17c dwarfs-universal-0.12.0-Linux-aarch64
1425e102fd3b8251629025fc3b8aab0f74b7079466261f6fcef6c0e0531249ac dwarfs-universal-0.12.0-Linux-x86_64
fe5904d64f1bd08f8f2f7dd271587b415bef1237562da4a77ee30982b48e24c4 dwarfs-universal-0.12.0-Windows-AMD64.exe
dwarfs-0.11.3
Bugfixes
- Handle absolute paths in
--input-list
. Fixes github #259. - Don't prefetch blocks that are already in the active list within the block cache.
- Ensure that statistics for block tidying are correctly updated in the block cache.
- A few build fixes, mainly to simplify building on Alpine.
New Contributors
Full Changelog: v0.11.2...v0.11.3
SHA-256 Checksums
de7f6609a4ddd6f2feff4cb4e43c4481515c5da178bbe12db24de9e7fec48bac dwarfs-0.11.3-Linux-aarch64-clang-reldbg-stacktrace.tar.xz
7c0835b89871e48025b2e30577fb1b3c39927f9b86940dd3c5d7c41871e12533 dwarfs-0.11.3-Linux-aarch64-clang.tar.xz
2e771b53ebee66278b3a2e6e18fd04e20abc0f6defccb5a347dbfc2b7436b729 dwarfs-0.11.3-Linux-x86_64-clang-reldbg-stacktrace.tar.xz
adc3fc58d36848a312e846f0e737056b7e406894e24fa20d80fcc476ca7f401f dwarfs-0.11.3-Linux-x86_64-clang.tar.xz
5ccfc293d74e0509a848d10416b9682cf7318c8fa9291ba9e92e967b9a6bb994 dwarfs-0.11.3.tar.xz
33b3488bc1097b1b2b54194eaa5fb169dfded9a6046de6c4fee693d9a97ece32 dwarfs-0.11.3-Windows-AMD64.7z
e14c0caa38a8d10273a84e57f532e513b2cbc50bb8df707b57c01d575f040a43 dwarfs-universal-0.11.3-Linux-aarch64-clang
7d4857ee18ffae705a41f164a0a810f173bf8d69bc8bef8dcbd1018fa8287f6e dwarfs-universal-0.11.3-Linux-aarch64-clang-reldbg-stacktrace
64b349aec059b9d460211af6c517f6edd89e79c5e9581381229af745ebf3cc87 dwarfs-universal-0.11.3-Linux-x86_64-clang
07a9ef68256e76e7bda552b24955a3db12c3b34312d7d664e47639995ccdabf1 dwarfs-universal-0.11.3-Linux-x86_64-clang-reldbg-stacktrace
772f00d5d02fdebca4cbd74f4b1b37ee7b57fb3004a078c053b4f58e97a794ed dwarfs-universal-0.11.3-Windows-AMD64.exe
dwarfs-0.11.2
Bugfixes
- macOS Ventura's version of clang appears to be missing an implementation of
std::hash<std::filesystem::path
, making it hard to define anunordered_map<filesystem::path>
. Work around by simply using anunordered_map<string>
instead. - Installing the binaries using cmake did not honor the
CMAKE_INSTALL_BINDIR
orCMAKE_INSTALL_SBINDIR
variables. Fixes github #253.
Full Changelog: v0.11.1...v0.11.2
SHA-256 Checksums
61fce8eaa6bbdf10917a5a12331e192748a54ab1aa175ed6f55cb26825ab3177 dwarfs-0.11.2-Linux-aarch64-clang-reldbg-stacktrace.tar.xz
06fc4ed91ee5c348dbfc70771fe3e3ea6834277e4a58f1f99e0bc98cb16ed3d4 dwarfs-0.11.2-Linux-aarch64-clang.tar.xz
15905007cff432bb9be0bdabed93473764c1706796e0da6f3af083f0a142db6d dwarfs-0.11.2-Linux-x86_64-clang-reldbg-stacktrace.tar.xz
3c82708e00af9d1622e78047efd216e4e29213a60aff3afa8326bade8353ea38 dwarfs-0.11.2-Linux-x86_64-clang.tar.xz
1b38faf399a6d01cd0e5f919b176e1cab76e4a8507088d060a91b92c174d912b dwarfs-0.11.2.tar.xz
8a028693ce0a7ab083b25dc491b100f41fbf98f28413a38f6773fe1cf27574fb dwarfs-0.11.2-Windows-AMD64.7z
600134267dd0ad51dd9d8bd1b58fa614b0a0da9a7a3d57f5fce4dbda9bb80460 dwarfs-universal-0.11.2-Linux-aarch64-clang
a9f5f79afeff4eba5cc23893de46e4c8eaa3b51b8f5938ed7f9e6cb92560fa4f dwarfs-universal-0.11.2-Linux-aarch64-clang-reldbg-stacktrace
1bee828de84c1a3a1c2134bc866f28bdf93a62927cb7e8c416813f389f7745ad dwarfs-universal-0.11.2-Linux-x86_64-clang
ddbd62d3bf0bf420a1720af6c03bea21ce6a77a73cedc46f28c8d79e4ac26827 dwarfs-universal-0.11.2-Linux-x86_64-clang-reldbg-stacktrace
d95dab93a7e9d8349d4a4393213a401d9ded79040b1c48e661df7dfe118b72a7 dwarfs-universal-0.11.2-Windows-AMD64.exe
dwarfs-0.11.1
Bugfixes
- macOS Ventura's version of clang appears to be missing the
<source_location>
header, despite Apple claiming otherwise. Fix this by shipping a wrapper and providing a fallback implementation.
Full Changelog: v0.11.0...v0.11.1
SHA-256 Checksums
3e1b6331cf2f589d7058700aa2c5dc41f1825f3954f3828eb709034ba57a7c97 dwarfs-0.11.1-Linux-aarch64-clang-reldbg-stacktrace.tar.xz
23b1e0b18a7c3ffeb6c5fcc97ab032a7c1c651454d0fa5cb9741918d97a14ab3 dwarfs-0.11.1-Linux-aarch64-clang.tar.xz
4ec6614e87064ac96dfdb9b7957620bd889f5f1e95416409369d00606cfff0a1 dwarfs-0.11.1-Linux-x86_64-clang-reldbg-stacktrace.tar.xz
1eebf6e66eb5d6dc7cfb9c9b3c7c6e67084acc5ced7a018c15a511e929598f99 dwarfs-0.11.1-Linux-x86_64-clang.tar.xz
7a0cccb1ec3c2a18e9a014893c1d3e1f8f2c44ade6936c9f6d3bab5ec14b2052 dwarfs-0.11.1.tar.xz
c43fd9f2089b94ddd2819c7853dd6d8c34951e2d42cbfdc2e4470cde9c3e18fb dwarfs-0.11.1-Windows-AMD64.7z
e9bf1f8bcccf363be25396d2f60d9f4e7765eba5bd647f071aa4d0ba5cb3785b dwarfs-universal-0.11.1-Linux-aarch64-clang
22966f1dba98697db0cad127d1d8c50ef5952b5c9816cc2564b9410a37cdbaa3 dwarfs-universal-0.11.1-Linux-aarch64-clang-reldbg-stacktrace
0a025dc0f854ad9f3a5f9ca89ac43ada5305de14fe4b2e03088ce9ee5a23dbf4 dwarfs-universal-0.11.1-Linux-x86_64-clang
a38de846f48c7979c204699af6a1fda0d8d634caac68223b2b46fcb1c52c0e56 dwarfs-universal-0.11.1-Linux-x86_64-clang-reldbg-stacktrace
b8299e5f2102283c52c1cbd8ad14a0c3b71244937327e895e0aee809d92e4474 dwarfs-universal-0.11.1-Windows-AMD64.exe
dwarfs-0.11.0
Bugfixes
- Remove the
access
implementation from the FUSE driver. There's no point here trying to be more clever than FUSE's default. This makes sure DwarFS will behave more like other FUSE file systems. See github discussion #244 for details. - Limit the number of chunks returned in
inodeinfo
xattr. Highly fragmented files would have megabytes ininodeinfo
, which not only breaks the xattr interface, but can also dramatically slow down tools likeeza
who like to read xattrs for no apparent reason. - Avoid nested indentation in manpages to work around
ronn-ng
bug. Fixes github #249. - Don't link library against
jemalloc
. This fixes both issues withpydwarfs
and issues building withjemalloc
support on macOS. Only the binaries are now linked againstjemalloc
, which should be sufficient.
Features
- Support case-insensitive lookups. Fixes github #232.
- Allow setting image size in FUSE driver. Fixes github #239.
- Support extracting a subset of files with
dwarfsextract
using the new--pattern
option. The same glob patterns can be used as for the filter rules inmkdwarfs
. Fixes github #243. - Allow overriding UID / GID for the whole file system when using the FUSE driver on non-Windows platforms. See github discussion #244.
- Expose more LZMA options (
mode
,mf
,nice
,depth
). - Improve filter patterns, which now support ranges and complementation.
- Improve speed of filesystem
walk
/walk_data_order
calls by 80% / 40%. The impact of this will largely depend on what the code is being run for each inode, but, for example, the speed of listing more than 14 million files withdwarfsck
will take about 16 seconds compared to 17 seconds with the previous release. - Added an inode size cache to the metadata to speed up file size computation for large, highly fragmented files. The configuration is currently fixed using a conservative default. Only files with at least 128 chunks will be added to the cache, so in a lot of cases this cache may be completely empty and not contribute to the size of the file system image at all.
- Use bit-packing for hardlink, shared files, and chunk tables. This will consume less memory when loading a DwarFS image.
- Show total hardlink size in
dwarfsck
output. - Library: return a
dir_entry_view
fromreaddir
andfind
. This is more consistent, but was previously not easily possible due to the lack of a "self" dir entry in the metadata. The "self" entry has been added and will only impact the size of the metadata ifdirectories
metadata is not packed. - Library: prefer
std::string_view
overchar const*
. - Library: add directory iterator to
directory_view
. - Library: support for
maxiov
parameter inreadv
call.
Other
- Lots of internal refactoring to improve overall code quality.
Full Changelog: v0.10.2...v0.11.0
SHA-256 Checksums
2040a951697ddb78a4b6ee887e06be4295f9d2e3708a311ac72ad9ad7bd28aa3 dwarfs-0.11.0-Linux-aarch64-clang-reldbg-stacktrace.tar.xz
0db0d6bc823d26f86d47f1edf8b4ddbcf85fab24e118be7de9ee091234b5623e dwarfs-0.11.0-Linux-aarch64-clang.tar.xz
a7214b10902653c582aa4c21e05e2476518ed1d15e4640cc3eb2bbe53a297120 dwarfs-0.11.0-Linux-x86_64-clang-reldbg-stacktrace.tar.xz
35e851bce5ba6a17b6b53081d1305ebcee5698d8bc770b8b1a875d2986fd6d7c dwarfs-0.11.0-Linux-x86_64-clang.tar.xz
852c96133444493eff6f03324bc2700e31859d75410a937f0714eae9f75d2dd4 dwarfs-0.11.0.tar.xz
15591223010400488c5066a864bcee3ad71c045e2aa4bf60b7c05e9d45909b9f dwarfs-0.11.0-Windows-AMD64.7z
da197d19b3eadfea5180034765d70c050ae9b85ade58dd0aa91b65283a079236 dwarfs-universal-0.11.0-Linux-aarch64-clang
d58ad14583345d4e7efb4ddb0278ec39c836646a39868422ca1358fa22a990b7 dwarfs-universal-0.11.0-Linux-aarch64-clang-reldbg-stacktrace
72fe171dd9d9abd0bba46e52a983934affbcc9a7349d07854eda91d788ea686b dwarfs-universal-0.11.0-Linux-x86_64-clang
1c5b19c21aca4dc6df8cff3e06358c96fb4e3bb1e969ed3ceef0eb381d84f98b dwarfs-universal-0.11.0-Linux-x86_64-clang-reldbg-stacktrace
f2451ed0832c13157f869a3d7ba3596fcb4bb0c5c55741fc054ce6b1bdc977c8 dwarfs-universal-0.11.0-Windows-AMD64.exe
dwarfs-0.10.2
Bugfixes
- Gracefully handle localized error message on Windows. These error messages can contain characters from a Windows (non-UTF-8) code page, which could cause a fatal error in
fmt::print
in the logging code. Call sites that log such error messages now try to convert these from the code page to UTF-8 or, if that fails, simply replace all characters that are invalid from a UTF-8 point-of-view. Partial fix for #241. - Handle invalid wide chars in file names on Windows. For some reason, Windows allows invalid UTF-16 characters in file names. Try to handle these gracefully when converting to UTF-8. Partial fix for #241.
- Workaround for new boost versions which have a
process
component. - Workaround for a deprecated boost header.
- Support for upcoming Boost 1.87.0.
io_service
was deprecated and replaced byio_context
in 1.66.0. The upcoming Boost 1.87.0 will remove the deprecated API. (Thanks to Michael Cho for the fix.) - Disable extended output algorithms (
shake(128|256)
). - Install libraries to
CMAKE_INSTALL_LIBDIR
. Fixes #240. - mode/uid/gid checks were expecting 16-bit types.
- stricter metadata checks and improved error messages.
- Various fixes for
filesystem_extractor
to prevent memory leaks, correctly handle errors during extraction, and prevent creation of invalid archive outputs due to padding. - Various minor fixes: non-virtual dtors, missing includes,
std::move
vs.std::forward
, unused code removal.
Other
- More test cases for stricter metadata checks. Also enable the strict checks in in unit tests by default.
- Fix typos in
README.md
. (Thanks to Christian Clauss for the fix.) - Fix typos in man pages.
New Contributors
Full Changelog: v0.10.1...v0.10.2
SHA-256 Checksums
2f4d275d006228acb2280c3bf5327f02098c2ba110d81fe3854a80f5fd848058 dwarfs-0.10.2-Linux-aarch64-clang-reldbg-stacktrace.tar.xz
75878252ef0bfc490e5bd6ad5870bc5a02531650ceacf1258807e09606069561 dwarfs-0.10.2-Linux-aarch64-clang.tar.xz
74b52460ebd2d8e752ad7fbe976c683be542a8a581fdf25ac59ba1dea5bc5d0c dwarfs-0.10.2-Linux-x86_64-clang-reldbg-stacktrace.tar.xz
a018bfe2531763a273a2d78bc507b1c89fe58a44f7955c980c854a55f9adbaea dwarfs-0.10.2-Linux-x86_64-clang.tar.xz
36767290a39f92782e41daaa3eb45e39550ad1a4294a6d8365bc0f456f75f00c dwarfs-0.10.2.tar.xz
c15280d920b67b51b42117612bd8a959eb5ca9ed0202fd765e19743aad61a728 dwarfs-0.10.2-Windows-AMD64.7z
36f72f1ff049a1d955e68547540b932539beab44b0cba23efbdb7a1b0bfd32d4 dwarfs-universal-0.10.2-Linux-aarch64-clang
4d55e783e352a5aafc321f7ac36964b0493601320d3d93d021634e78e743505d dwarfs-universal-0.10.2-Linux-aarch64-clang-reldbg-stacktrace
b565399a0a671d06be3e078376e02b388ee14133680b8d19483fc93c294b12d2 dwarfs-universal-0.10.2-Linux-x86_64-clang
cb374fc2d64bbf3bd4dd4714f1be37e3d6fc6ecffc7afd93714b6897e9d3751a dwarfs-universal-0.10.2-Linux-x86_64-clang-reldbg-stacktrace
eb69b1bf4703d28bd3d5f477dca1ab3460dda4250c7ce1899eb4192c2c1bef69 dwarfs-universal-0.10.2-Windows-AMD64.exe