From 7be7fc4ea9f5056189af687cc65560c980faf182 Mon Sep 17 00:00:00 2001 From: Wayland Yang Date: Mon, 8 Jun 2026 09:51:18 +0800 Subject: [PATCH] =?UTF-8?q?release:=20v0.5.2=20=E2=80=94=20hugepage=20memf?= =?UTF-8?q?d=20+=20axum-server=200.8=20+=20non-AI=20recipes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Workspace 0.5.1 → 0.5.2. CHANGELOG's "Unreleased" gains the dated v0.5.2 header consolidating the three PRs since v0.5.1: - #230 (hugepage-backed memfd, contributed by @theflashwin — first PR) - #232 (axum-server 0.7→0.8, drops unmaintained rustls-pemfile, closes #192) - #231 (recipes/README reorg + new ci-parallel-pytest recipe) Patch release — no API breaks; all new surface is opt-in (`--hugepages` requires `--live-fork`; recipes are doc-only). Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.md | 45 +++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 +- sdk/python/pyproject.toml | 2 +- sdk/typescript/package.json | 2 +- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aca7a81..10bca7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,51 @@ Versioning](https://semver.org/spec/v2.0.0.html) once it reaches ## Unreleased +## v0.5.2 — 2026-06-08 + +### Hugepage-backed memfd snapshots — closes #224 + +Spawned sandboxes 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 via +`--hugepages` (CLI), `hugepages: true` (REST / SDK). The flag requires +`--live-fork` — only the v0.4 memfd path benefits; file-backed restore +is unaffected. + +Plumbed end-to-end by external contributor **@theflashwin** in +[#230](https://github.com/deeplethe/forkd/pull/230) — their first PR to +the project, and unusually complete: Rust `MemoryBackend::MemfdShared` +extended to `{ use_hugepages: bool }`, REST + CLI + Python SDK + TS SDK +all carry the flag, a `forkd doctor` check (`HugePages_Free`) surfaces +pool exhaustion before spawn, ENOMEM falls back to normal pages with a +warning, and `bench/live-fork-pause-window/bench-hugepages.py` +interleaves baseline / hugepages iterations for fair A/B numbers. + +The bench harness ships with the PR but **N=100 spawn numbers are still +pending** on a clean host — tracking in #233. PR README has @theflashwin's +N=4 measurements from his hardware. + +### `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 on the daemon are byte-compatible. ([#232](https://github.com/deeplethe/forkd/pull/232)) + +### Non-AI recipes — broadens perceived scope + +`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 presenting +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 hot — `import numpy` etc. is already paid for in the parent. +Bench numbers from the dev box: **~20 ms per worker batch-spawned** +vs ~2-3 s per cold container. ([#231](https://github.com/deeplethe/forkd/pull/231)) + ## v0.5.1 — 2026-06-05 ### Guest kernel rebuild — closes #218 + #225 diff --git a/Cargo.toml b/Cargo.toml index 36e4e0a..f5643a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ members = [ ] [workspace.package] -version = "0.5.1" +version = "0.5.2" edition = "2021" license = "Apache-2.0" repository = "https://github.com/deeplethe/forkd" diff --git a/sdk/python/pyproject.toml b/sdk/python/pyproject.toml index 471f584..c1b87f9 100644 --- a/sdk/python/pyproject.toml +++ b/sdk/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "forkd" -version = "0.5.1" +version = "0.5.2" description = "Open-source fork-on-write microVM sandbox primitive (E2B-compatible surface)" readme = "README.md" authors = [{name = "Deeplethe", email = "info@deeplethe.com"}] diff --git a/sdk/typescript/package.json b/sdk/typescript/package.json index d0516da..b10d951 100644 --- a/sdk/typescript/package.json +++ b/sdk/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@deeplethe/forkd", - "version": "0.5.1", + "version": "0.5.2", "description": "TypeScript client for forkd — open-source fork-on-write microVM primitive for AI agents", "license": "Apache-2.0", "author": "Deeplethe ",