Download Latest Version v0.5.3 source code.zip (1.6 MB)
Email in envelope

Get an email when there's a new version of forkd

Home / v0.5.2
Name Modified Size InfoDownloads / Week
Parent folder
forkd-v0.5.2-x86_64-linux.tar.gz 2026-06-08 7.1 MB
SHA256SUMS 2026-06-08 99 Bytes
README.md 2026-06-08 3.5 kB
v0.5.2 source code.tar.gz 2026-06-08 1.3 MB
v0.5.2 source code.zip 2026-06-08 1.4 MB
Totals: 5 Items   9.8 MB 0

v0.5.2 is a small feature + security-fix release headlined by forkd's first external contribution.

🎉 First external PR — @theflashwin

#230 plumbs hugepage-backed memfd snapshots end-to-end — Rust MemoryBackend::MemfdShared { use_hugepages: bool }, REST + CLI + Python SDK + TypeScript SDK all carry the flag, a forkd doctor hugepage-pool check, an ENOMEM → normal-page fallback with warning, and a fresh A/B bench harness (bench/live-fork-pause-window/bench-hugepages.py) that interleaves baseline/hugepages iterations for fair numbers.

Unusually complete for a first PR. Welcome aboard, @theflashwin.

What it does

Sandboxes spawned with --live-fork can now back their guest RAM with 2 MiB hugepages (MFD_HUGETLB | MFD_HUGE_2MB) instead of 4 KiB pages, reducing TLB pressure on spawn-many and live-BRANCH bulk-copy. Opt in per spawn:

:::bash
# CLI
forkd fork --tag my-snapshot --live-fork --hugepages -n 10

# REST
POST /v1/sandboxes  { "snapshot_tag": "my-snapshot", "live_fork": true, "hugepages": true, "n": 10 }

# Python SDK
sandbox = Sandbox.spawn(tag="my-snapshot", live_fork=True, hugepages=True)

# TypeScript SDK
const sb = await client.sandboxes.create({ snapshotTag: "my-snapshot", liveFork: true, hugepages: true });

Pre-flight check: forkd doctor now reports HugePages_Total / HugePages_Free. Reserve pages with echo 512 | sudo tee /proc/sys/vm/nr_hugepages before use.

N=4 spawn numbers from @theflashwin's hardware are in the PR README. N=100 numbers are deferred to #234 — fresh dev-host setup needed.

🔒 axum-server 0.7 → 0.8 — closes [#192]

Drops the unmaintained rustls-pemfile dependency flagged by RUSTSEC-2025-0134. The daemon's TLS path now goes through rustls-pki-types directly. Internal-only change; HTTPS bind / cert loading are byte-compatible.

cargo audit on forkd v0.5.2 is now clean (0 advisories). (#232)

📚 Non-AI recipes

recipes/README.md now leads with a "by problem you're solving" table that surfaces CI test parallelization, database fixture forking, and browser farming alongside the AI-agent use case, instead of pitching forkd as AI-only.

New recipe recipes/ci-parallel-pytest ships a complete Python pytest fan-out demo (5 test files, ~30 tests across numpy / pandas / sklearn / regex / stdlib) backed by a forkd snapshot so each worker starts with import numpy etc. already paid for in the parent. Dev-box numbers: ~20 ms per worker batch-spawned vs ~2–3 s per cold container. (#231)

Install / upgrade

:::bash
# Linux x86_64 binary (forkd + forkd-controller + forkd-uffd-handler)
curl -L https://github.com/deeplethe/forkd/releases/download/v0.5.2/forkd-v0.5.2-x86_64-linux.tar.gz | tar xz

# Python SDK
pip install -U forkd==0.5.2

# TypeScript / Node SDK
npm install @deeplethe/forkd@0.5.2

No breaking changes — --hugepages requires --live-fork; everything else is additive. Existing spawn / branch flows work unchanged.

Thanks

  • @theflashwin — first external contribution; hugepage memfd path
  • Everyone who filed RUSTSEC-2025-0134 follow-ups (#192)

Full Changelog: https://github.com/deeplethe/forkd/compare/v0.5.1...v0.5.2

Source: README.md, updated 2026-06-08