Skip to content

chore: release v0.4.2#11

Merged
MagicalTux merged 1 commit into
masterfrom
release-plz-2026-05-22T20-33-52Z
May 25, 2026
Merged

chore: release v0.4.2#11
MagicalTux merged 1 commit into
masterfrom
release-plz-2026-05-22T20-33-52Z

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented May 22, 2026

🤖 New release

  • fstool: 0.4.1 -> 0.4.2 (✓ API compatible changes)
Changelog

0.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
    one of two sinks (a streaming-tar sink or a block-device Filesystem
    sink). The per-(source,dest)-type copiers are gone — any readable
    source now repacks into any writable destination through a single
    trait-driven path. The only branch is streaming (tar / .tar.<codec>)
    vs non-streaming output. Previously-rejected combinations now work
    (e.g. repack app.zip out.tar, repack image.xfs out.tar).
  • (fs) Filesystem gains create_file_streaming (zero-copy body
    streaming, no per-file tempfile; ext/fat32/exfat override it) and a
    batch set_xattrs. Faithful getattr (real mode/uid/gid/times, and
    xattrs/device numbers where stored) now on tar, f2fs, and XFS sources
    in addition to ext — so repacking from them preserves metadata.

Added

  • (archive) shared archive core (src/fs/archive/) — an indexed-entry
    model plus a generic read-only Filesystem implementation that archive
    formats plug into by supplying a scanner (and, if writable, a builder).
  • (archive) zip — full read (central-directory scan, robust EOCD
    search, ZIP64, Unix mode/symlinks, Shift-JIS/EUC-JP/UTF-8 filename
    detection) and write (Stored + Deflate, CRC-32, ZIP64 when needed).
    Reads archives produced by other tools; output validates with unzip.
  • (archive) cpio — read newc/odc + write newc; round-trips through
    system cpio.
  • (archive) ar — read GNU + BSD long names, write GNU; round-trips
    through system ar. Flat archive (rejects nested paths).
  • (archive) detection-only scaffolds for 7z, rar, arc, lha, lzx, cab,
    sit
    — recognised by info, with a clean Unsupported on read until
    pure-Rust decoders are wired (per format, behind a future Cargo feature).
  • (cli) create -t {zip,cpio,ar}, repack --fs-type {zip,cpio,ar},
    build with type = "zip"|"cpio"|"ar", and mount for all archive
    formats; archive output is truncated to its exact length.


This PR was generated with release-plz.

@github-actions github-actions Bot force-pushed the release-plz-2026-05-22T20-33-52Z branch 20 times, most recently from 330520d to 744ac27 Compare May 25, 2026 09:43
@github-actions github-actions Bot force-pushed the release-plz-2026-05-22T20-33-52Z branch from 744ac27 to cd9cd0f Compare May 25, 2026 09:50
@MagicalTux MagicalTux merged commit c8125e3 into master May 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant