Skip to content

fs-safe 0.26.1

Choose a tag to compare

@github-actions github-actions released this 11 Oct 18:42
· 92 commits to main since this release
v0.26.1
5510bc8

Highlights

  • Windows identity checks: reject rounded file IDs; callers supplying identity stats must use bigint values. (#949)
  • Listings and copies: measured listings are 38–54% faster on Linux and Windows; direct synchronous file copies are 11–31% faster, with Windows batches up to 48% faster. (#934, #932)
  • Windows private creation: the portable helper is about 5× faster, and private creation works beyond MAX_PATH. (#930, #924)
  • Native overhead: reduce dispatch and repeated admission for direct-child mkdir, removal, moves, existing-file opens, buffered publication, and async temp creation; measured eligible cases reach or improve on fallback performance while retaining native checks. (#927, #928, #929, #948, #953)

Fixes

  • Windows file identity: stop accepting rounded Number file IDs as matches. Callers supplying identity stats must now pass bigint stats; unsafe Number identities fail with path-mismatch. (#949)
  • Windows long paths: support private directory and file creation beyond MAX_PATH, including internal staging and pathname verification, while preserving ACL, alias, identity, and cleanup checks. (#924)

Performance

  • Listings and traversal: avoid per-entry filename buffers for losslessly decoded names, making measured Linux and Windows listings 38–54% faster; halve per-entry promise allocation in complete sorted Root.walk() scans, improving measured 50,000-entry Linux walks by 3–4%. (#934, #937)
  • File copies and moves: reuse canonical admission in copyRootFileSync, improving measured direct copies by 11–31% on Linux and Windows and batches by up to 47–48% on Windows; reduce ordinary Root.copyIn() and same-parent move promise allocation without claiming a reproduced latency gain. (#932, #941, #936)
  • Reads and hashing: trim file-admission and bounded-read metadata work for 2–9% faster measured Linux reads; reuse privately owned Windows handles for 42% faster native async SHA-256 on small pathname inputs, retaining borrowed-handle positions. (#931, #938)
  • Locks and directories: reduce uncontended sidecar-lock acquisition overhead by up to 34% with native; remove ordinary mkdir dispatch hops for 37% faster native direct-child creation, 17–22% faster existing-directory admission, and 81% faster native ensureRoot in the combined Linux benchmark. (#939, #944, #927)
  • Temporary workspaces and removal: make measured empty-workspace cleanup 13–32% faster on Linux, create async workspaces through retained parents, and reduce recursive-removal stat allocation for 2–6% faster measured Linux recursive removal; retain identity-bound cleanup. (#942, #953, #933)
  • Private and exclusive creation: run portable Windows security checks in a prebuilt helper for about 5× faster private creation; streamline exclusive-creation metadata and skip redundant Windows write-mode changes without removing flushes or permission checks. (#930, #935, #940)
  • Native operations: reuse retained roots for removal and moves, defer parent creation until an opened file is missing, and streamline buffered creation and replacement-write publication; preserve descriptor-relative mutation and exact identity checks. Native non-durable publication reaches fallback parity in the measured cases; durable creation remains slower. (#928, #929, #948)

Docs and Tooling

  • Raw Node baseline: add pnpm benchmark:node with alternating raw/safe/control samples and documented operation semantics; raw Node is a performance reference, not a security-equivalent implementation. (#925)
  • Native API reference: enumerate APIs that require native bindings and their fallback availability. (#926)

Published packages

Package Registry tarball Verified integrity Provenance
@openclaw/fs-safe-win32-arm64-msvc@0.26.1 tgz sha512-GeLgeNeN/qE5AipT40B5hYr33/DLPhjRIRLb72TJTt8BqmqA3HLaUIb4H2MkkmMmBjLha3xTFKADbmYCQOgz5w== verified attestation
@openclaw/fs-safe-linux-x64-gnu@0.26.1 tgz sha512-grWDiusbMG4LUTDYv1ibg5YBWLGyApDZBu19uL/H/aK/HfWGXiI4FLkHvhMGL/6ldIo6E3nIl9sa7e7bDCcAtQ== verified attestation
@openclaw/fs-safe-linux-x64-musl@0.26.1 tgz sha512-wmNnUp+l1UYbAuQAFAY0T4a5fAqc7OIeXtxkw3PdQzi9V5ZrpstTTzJCF2z6jN3uKwIRckR1cpQC+yoNyO3iJQ== verified attestation
@openclaw/fs-safe-linux-arm64-gnu@0.26.1 tgz sha512-e5q6hjIxSECqSnZt/LW9xDh1FSVoNlDoGojuvrdiK9g8SNwqeBW6gxwgh0FuMEXzuWFZlIzr1IArcpxa/ereHQ== verified attestation
@openclaw/fs-safe-linux-arm64-musl@0.26.1 tgz sha512-Jv5IHmjm28quzK5wkoIBqND/u+lM9IkGbgF3ZSiT8VBCaMIJmYspHGmzXAKKnwqnXtNPNKS+n1q/9VdYnApIcQ== verified attestation
@openclaw/fs-safe-darwin-x64@0.26.1 tgz sha512-3oi5t5C5x0904zA4e3NgKw2yPsmKMqp7yguxikCMTprje7KpRPrLvByl0VZ7h+EixH+84o7Z0Ab/5aScAdnZGQ== verified attestation
@openclaw/fs-safe-darwin-arm64@0.26.1 tgz sha512-Ja6KVqTAka8/woUP7jmR/CvEGCfhNXn/NwyaeYZGGlOniOFAVeMO1KXk4nqx0i0Q5Tg+eR9vZWKRQJXuzZi1sQ== verified attestation
@openclaw/fs-safe-win32-x64-msvc@0.26.1 tgz sha512-LT5vbSnnrxz+Y63jHKW7+gEDeek9HeJK/NwKU6gq/+90bq1ymxzZbJ3t2kDr293QpDdjLD4uImW9xErKYeVIEA== verified attestation
@openclaw/fs-safe-freebsd-x64@0.26.1 tgz sha512-wM7szI/MCh7Q9Oqbzh6o0foAEPd3XgvK5NhTSbczphdeld4gVOQzz3c5I60n0Hk+e/kw02LrYBuq9pj+0GPl+g== verified attestation
@openclaw/fs-safe-freebsd-arm64@0.26.1 tgz sha512-kIzEU4/bdv0SPgOMgzgXMBMWji2qVUJcEmlOCJp8RMD1lVV+y0yV85BWQasbyGUha+oj7nUkIgp+4Zmox1cWjA== verified attestation
@openclaw/fs-safe@0.26.1 tgz sha512-TIHuaP7TzRaG57Wn3o9JUKwUP8kVVl4htF4gV6lcuE+cs71Ru9OmCEoxT73Fq+sEqoSWoDAX3XutRXhv7Sr2Dw== verified attestation

Release proof: GitHub Actions run.