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