v0.14.11
Finishes the Windows port 0.14.10 opened. Local-store durability now behaves the same on NTFS as it does on APFS and ext4, the background sync task no longer flashes a console window or hides its own failures, and pond installs from Scoop today.
Upgrading on Windows: run pond schedule start once. An existing scheduled task keeps its old .cmd + .vbs action chain until it is re-registered - nothing breaks if you skip this, but the console flash and the swallowed exit code stay.
🎉 New Features
- windows: flush published writes on local stores (2ac28df)
- The local-store durability wrapper was attached behind a
cfg(unix)gate, so a Windows local store had none of it. NTFS journals metadata but not file data, and a local store commits by hard-link-and-rename, so a hard host stop could persist a manifest's name while dropping its bytes. The wrapper is now attached per backend (local vs remote) rather than per platform, and a unit test pins it there - a re-addedcfg(unix)would silently un-enforce the rule, which is how the gap survived this long. sync_file_and_parentskips only the directory half on Windows:FlushFileBufferson a directory handle fails, and object_store, RocksDB, and SQLite all skip it for the same reason. The published file's bytes still go throughFile::sync_all. Ordering is unchanged, and the residual window no directory fsync can close on Windows stays covered bylocal-store-self-heal.- Measured free: under 1 ms per commit at every batch size, 0.8 ms (3.4%) at the largest, A/B'd on a real Windows box against the same build without the wrapper (
docs/benchmarks/results.md).
- The local-store durability wrapper was attached behind a
- windows: Exec pondw.exe from the scheduled task (55043fe)
- The Task Scheduler action was a
.cmdlaunching a.vbsto hide the console window, and the chain swallowed the sync's exit code - a failing sync reported success in Task Scheduler. It is now a singlepondw.exe, a windowless launcher that propagates the real exit code. - Adds a global
--state-dir, the argument form ofXDG_STATE_HOME, because an Exec action carries no environment block. Gated behind awindows-launcherfeature so unixcargo binstallis unaffected.
- The Task Scheduler action was a
- windows: publish to winget and Scoop (5c07c55)
- Scoop is live:
scoop bucket add tenequm https://github.com/tenequm/scoop-bucketthenscoop install pond. The winget manifest is generated and submitted by CI, butwinget installdoes not resolve until microsoft/winget-pkgs accepts the first submission - use Scoop until then. PowerShell completions and the Windows install docs ship here too.
- Scoop is live:
📚 Documentation
🧹 Chores
- windows: cache the Windows suite through moon and fix kache prefetch (0ed4a0c)
windows-verifyswung between 17m54s and 51m02s on an unchanged dependency tree, withlanceand the datafusion set flipping between hit and miss run to run. kache's 2 GiB prefetch cap sits far below a ~790-crate graph wherelancealone is 287 MB, so what it dropped was biased toward the largest artifacts; the cap and deadline are now unlimited. The cache store also moves off the network-attachedC:ontoD:, the fast local volume that already holdstarget/.
Full Changelog: v0.14.10...v0.14.11