From cd9cd0f593bc8a2655e47601952360dd660c58d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 May 2026 09:50:26 +0000 Subject: [PATCH] chore: release v0.4.2 --- CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb0dca8..45db5b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.4.2](https://github.com/KarpelesLab/fstool/compare/v0.4.1...v0.4.2) - 2026-05-25 + +### Added + +- *(xfs)* refuse open_file_rw on REFLINK files — prevent clone corruption (Phase 3b stage 3) +- *(xfs)* clone_file via shared extents + REFCNTBT records (Phase 3b stage 2) +- *(xfs)* REFLINK feature opt-in + per-AG REFCNTBT root (Phase 3b stage 1) +- *(fs)* clone API — Filesystem::clone_file / clone_range + CloneCapability (Phase 3a) +- *(ntfs)* create_device for char/block via INTX_FILE; sort $I30 entries +- *(hfs+)* create_device — char / block / FIFO / socket nodes +- *(ntfs)* implement remove (file / empty-dir / symlink), the inverse of create +- *(ntfs)* make a reopened image mutable (lazy writer reconstruction) +- *(ntfs)* getattr (times + synthesised mode) and list_xattrs +- *(hfs+)* faithful getattr +- *(iso9660)* faithful getattr from Rock Ridge +- *(apfs)* faithful getattr +- *(archive)* shared archive core + zip/cpio/ar backends, 7 scaffolds + +### Fixed + +- *(fs)* owned-tempfile FileSource for deferred-write backends; SquashFS getattr + +### Other + +- fix 5 broken intra-doc links + BSD-ar cross-check on macOS +- *(dmg)* end-to-end against hdiutil on macOS (UDRW / UDZO / UDBZ / ULFO) +- *(fuzz)* NTFS fuzz target + Op::Clone with shares_extents freezing +- F2FS is build-once — correct the in-place-edits column +- cross-backend reopen-mutate sweep; make F2FS advertise build-once +- every repack source reader now surfaces faithful metadata +- move qcow2 / dmg out of the filesystem-support table +- *(repack)* unify pipeline — one walker + sink, no per-pair paths +- lib-level fuzz across 8 mutable backends +- *(ext)* cover multi-open_file_rw write extending file across drops + ### Changed - *(repack)* unified the repack pipeline: one generic source walker feeds diff --git a/Cargo.lock b/Cargo.lock index 2ddd6d7..0d35efa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -369,7 +369,7 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "fstool" -version = "0.4.1" +version = "0.4.2" dependencies = [ "aes", "bzip2-rs", diff --git a/Cargo.toml b/Cargo.toml index 7860c24..f0e9360 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fstool" -version = "0.4.1" +version = "0.4.2" edition = "2024" rust-version = "1.85" description = "Build disk images and filesystems (ext2/3/4, MBR, GPT) from a directory tree and TOML spec, in the spirit of genext2fs."