8000 Release dwarfs-0.12.0 · mhx/dwarfs · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

dwarfs-0.12.0

801A
Compare
Choose a tag to compare
@mhx mhx released this 08 Apr 18:34
· 135 commits to main since this release

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) and dwarfsextract into a single binary, but does not include the mkdwarfs and dwarfsck 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 in mkdwarfs that allows a list of "hot" files to be stored in distinct file system blocks.

  • New explicit ordering mode in mkdwarfs 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 options preload_all and preload_category to populate the block cache immediately after mounting.

  • New dwarfs option analysis_file that can be used for profiling and as input to mkdwarfs new hotness categorizer and explicit ordering mode.

  • New dwarfs option block_allocator that allows the user to switch from a malloc-based block allocator to an mmap-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
0