0.2.0 is OxygenFlow's first tagged release; until then the runners ran `main`. This file starts on 2026-10-01; earlier history is in `oxy log`.
4
4
5
+
## Unreleased
6
+
7
+
- **`flow` builds and runs on FreeBSD (#99):** FreeBSD 15.1 with pkg's Rust 1.98 builds `flow` with the WASM tier (wasmtime runs there); the `noatime` check is Linux's only, as on Haiku. A FreeBSD machine can be a WASM runner (`flow tiers`: wasm available; the microvm and syscall tiers say they are Linux's).
8
+
5
9
## 0.5.2 (2026-10-29)
6
10
7
11
- **Runner builds through the swarm (#84):** a runner in a swarm fetches an offered build as the image its BLAKE3 names, from its site's peers and the hub together, as it fetches images, and checks its size and BLAKE3 before installing it; over HTTP as before when it is in no swarm, the hub has not shared the build yet, or the swarm cannot get it. The hub shares a build the first time it offers it (OxygenHub 0.9.15), so a site's runners fetch it from each other and the hub serves it about once per site. The build stays in the runner's images for its peers.
…
126 unchanged lines
modifiedcrates/flow-init/src/prune.rs+4−4
…
95 unchanged lines
96
96
if unsafe { libc::statvfs(c.as_ptr(), &mut st) } != 0 {
97
97
return false;
98
98
}
99
-
// Asystem whose statvfs has no `noatime` flag (Haiku) cannot say:
100
-
// its reads are taken as recorded, and the access-time check decides.
101
-
#[cfg(not(target_os = "haiku"))]
99
+
// OnlyLinux's statvfs has a `noatime` flag: elsewhere (Haiku, FreeBSD)
100
+
// reads are taken as recorded, and the access-time check decides.