Skip to content

Commit ea90bd9

Browse files
committed
chore: update change log
1 parent b72d481 commit ea90bd9

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

CHANGES.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,65 @@
11
# Change Log
22

3+
## Version 0.15.2 - 2026-03-31
4+
5+
- (fix) The image size was not correctly passed to an instance of the
6+
file system parser, which resulted in errors when trying to load an image
7+
embedded in a larger (e.g., multi-layer) file. Thanks to Ruan Formigoni
8+
for the pull request that fixed this issue.
9+
10+
- (fix) The performance monitor timer for `op_lseek` in the FUSE driver was
11+
not set up correctly, which could lead to segmentation faults or bus errors
12+
due to an uninitialized index into a `std::deque`. This has been fixed, and
13+
an additional check has been added to make sure these kinds of errors are
14+
caught in the future.
15+
16+
- (fix) A few test failures have popped up in openSUSE Tumbleweed native
17+
32-bit builds. One was caused by glibc requiring `_FILE_OFFSET_BITS=64` for
18+
64-bit file operations. This caused some sparse file tests that created
19+
files larger than 4 GiB to fail. This was never needed in musl-libc builds,
20+
so the problem was not caught before. The other failures were mostly
21+
cosmetic and only showed up in GCC builds. The affected tests were checking
22+
the formatting code for times and ratios, which relied heavily on
23+
floating-point arithmetic and was not deterministic across platforms and
24+
compilers. The code has been completely rewritten to use integer arithmetic
25+
and avoid any platform-specific behavior. The final issue was a bug in the
26+
test code that, interestingly, also surfaced only with GCC. Addresses
27+
GitHub issue #354.
28+
29+
- (fix) The FUSE drivers (`dwarfs`, `dwarfs2`) have gone through several
30+
stages of refactoring to fix a large number of very subtle issues. For
31+
example, it is now guaranteed that you will see an error for a misspelled
32+
option rather than an error caused by the absence of the option you were
33+
trying to use. For example, if you used `-o image_size=1234` instead of
34+
the correct `-o imagesize=1234`, you would likely get an error saying that
35+
the file system could not be loaded rather than an error about the unknown
36+
option. Before the refactoring, the code was a horrible mess of
37+
preprocessor conditionals, and basically every flavor of the FUSE driver
38+
(high-level, low-level, Windows, FUSE v2, or FUSE v3) had a different code
39+
path during startup, exposing a different set of quirks. The code is now
40+
*much* more readable, a lot more consistent, and even better tested than
41+
before.
42+
43+
- (fix) The manual pages shown with `--man` for all tools unintentionally
44+
contained the license header that had been added in XML comments at the top
45+
of the source files. The renderer has been fixed to ignore those comments.
46+
47+
- (build) After benchmarking the latest `mimalloc` memory allocator, it turns
48+
out that performance is mostly on par with `jemalloc`. It is still much
49+
less configurable than `jemalloc`, but it is definitely usable if you do
50+
not need that configurability.
51+
52+
- (build) The `small` universal release binaries are now built with
53+
`mimalloc` instead of `jemalloc`, reducing their size by about 10%.
54+
55+
- (build) Old Clang compiler versions, such as those on Ubuntu 22.04, are
56+
no longer supported because they cannot use libstdc++'s `std::expected`
57+
implementation. DwarFS can still be built on Ubuntu 22.04 with GCC.
58+
59+
- (test) After profiling test execution, a few tests stood out as being
60+
particularly slow. These have been modified to run faster while still
61+
covering most of the same code paths.
62+
363
## Version 0.15.1 - 2026-03-21
464

565
- (fix) `mkdwarfs` did not correctly handle inputs where hardlinks had the

0 commit comments

Comments
 (0)