Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"}]
Expand Down
2 changes: 1 addition & 1 deletion sdk/typescript/package.json
Original file line number Diff line number Diff line change
@@ -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 <info@deeplethe.com>",
Expand Down
Loading