- A job's report says where its time went (issue #35). The finish report carries
phasesin milliseconds:image(fetching its image, when the runner lacked it),prepare(its workspace and disks),run(the sandbox from start to stop) andfinish(outputs, caches and receipt), so a slow job shows whether it waited on an image, a fetch or itself. - The swarm reads images in order (issue #97). A fetcher took equally rare chunks at random, so a peer read its whole image in random order, a seek per chunk on a spinning disk: plex-1 got 2.3 GiB from earth-1 at about 2 MB/s. Neighbouring chunks now come in runs, shuffled so runners starting together still spread, and the picker no longer rescans what it has: picking a 142,244-chunk image went from 19 s to 0.35 s.
- The swarm moves an image nobody pushed (issue #94). A runner that serves its peers tells the hub, at start and every ten minutes, which images it holds, and sends the manifest of each the hub keeps none of: the manifest alone, not the image. With a hub that keeps such manifests (oxygenhub#342), runners in the same site fetch the image from it. A fetch told the hub holds no chunks asks peers alone, and fails plainly when none can serve it. Design: docs/jetstream.md §8.1.1.
- A WASM job stopped while its module compiles stops (issue #93). The time limit or a cancel moved the engine's epoch once; a store made after that set its deadline past it, so the job ran on forever (seen as a test spinning 35 minutes under load). Once stopped, the epoch now moves every tick until the job ends.
- A runner claims only what its host can start (issue #92). An idle runner told the hub it had no memory limit, so it was offered sandboxes bigger than its machine, fetched their images, and declined them one by one (mars-1, 7 GB, and the 8 GiB jobs). A claim now asks for the budget's room capped at the host's free memory.
flow rootfs pushwaits for the hub to check a big image (oxygenhub#341). The hub reads the whole image before it accepts the manifest; the manifest request now waits up to an hour, not the 120 s every other request gets.- The Android image (issue #19).
images/android: OpenJDK 17, the Android SDK (command-line tools 23.0, platform 37.0, build-tools 36.0.0, NDK 30.0), Gradle 9.6.0, Rust with the Android targets and cargo-ndk, and the OxygenHub app's crates and Gradle dependencies, so the app builds and tests offline. Each download is checked against its published hash. flow runner benchsays when load is not measured (issue #83): a Windows runner printedload 0.00; it now saysload not measured here. Its kernel line readsWindows 10.0.26300(checked with 0.4.0 in the Windows VM).
Releases 1
OxygenFlow 0.5.0 v0.5.0 · ✔ signed by Andy McCall · andymccall ·
Trust and auditAssets
- SHA256SUMS 344 B · blake3
62b3fc026a1f· 8 downloads · built by run #210 dist · signed receipt by earth-1 (short-lived key) · provenance - flow-linux-aarch64 19.7 MiB · blake3
9585b16bf9e5· 9 downloads · built by run #210 dist · signed receipt by earth-1 (short-lived key) · provenance - flow-linux-riscv64 19.9 MiB · blake3
cd13c24ee227· 8 downloads · built by run #210 dist · signed receipt by earth-1 (short-lived key) · provenance - flow-linux-x86_64 24.9 MiB · blake3
369d6995fa34· 7 downloads · built by run #210 dist · signed receipt by earth-1 (short-lived key) · provenance - flow-windows-x86_64.exe 34.9 MiB · blake3
7963acc9dd34· 2 downloads · built by run #210 dist · signed receipt by earth-1 (short-lived key) · provenance - Source (v0.5.0.tar.zst)
- Source (v0.5.0.zip)