sproutboat 0.41.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,33 @@ maintained going forward by the `release` skill.
10
10
 
11
11
  ## Unreleased
12
12
 
13
+ ## [0.42.0] - 2026-10-28
14
+
15
+ Built on `@sproutboat/runtime` 0.35.0, `@sproutboat/toolchain` 0.20.0 and
16
+ `@sproutboat/wire` 0.20.3.
17
+
18
+ ### Changed
19
+
20
+ - **A standalone binary opens its SQLite databases in EXCLUSIVE locking mode by default.** The lock is
21
+ taken once and held, so a transaction no longer takes and releases file locks around itself (about two
22
+ `fcntl` calls per request), and the WAL index lives in memory instead of a `-shm` file. The page cache
23
+ stays at 2 MB; `SB_SQLITE_CACHE_MB=<n>` (1 to 4096) sizes it. **While the binary runs, no other process can
24
+ open its databases:** the `sqlite3` shell, `sproutboat kv|d1 --local --data-dir` and several copies behind
25
+ `SO_REUSEPORT` are locked out. Set `SB_SQLITE_EXCLUSIVE=0` to keep shared locking. Databases under LTX
26
+ replication are never exclusive. sproutd and the broker are unchanged.
27
+
28
+ ### Performance
29
+
30
+ - **A request's fixed cost drops its text round trips, regular expressions and repeated lookups**: the CPU
31
+ stamp and the streamed-body probe return numbers, `Headers` checks names and values in C, the ingress
32
+ header reads scan the stored names, and an empty `waitUntil` list creates no coroutine.
33
+ - **A strict D1 query in a standalone binary takes a direct lane**, with no statement closures, no regular
34
+ expression for the transaction check and a result header built as JS values instead of JSON text.
35
+ - **No 88 KiB `mmap` and `munmap` for every statement that builds a temporary table** (`INSERT ...
36
+ RETURNING`, sorts). On the API-challenge create endpoint that is about 930 to 700 us of CPU per request.
37
+ - **A response's plain-ASCII header names, header values and body are written straight from the heap**
38
+ instead of through a `malloc`ed copy (standalone binaries).
39
+
13
40
  ## [0.41.0] - 2026-10-28
14
41
 
15
42
  Built on `@sproutboat/runtime` 0.34.5, `@sproutboat/toolchain` 0.19.5 and
package/SURFACE.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > Generated by `src/surface.test.ts` from `src/surface.ts` + the pinned
4
4
  > toolchain constants. Do not edit by hand — run `UPDATE_SURFACE=1 bun test`.
5
5
 
6
- **Package:** `sproutboat` 0.41.0
6
+ **Package:** `sproutboat` 0.42.0
7
7
 
8
8
  ## Commands
9
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sproutboat",
3
- "version": "0.41.0",
3
+ "version": "0.42.0",
4
4
  "description": "Wrangler-shaped CLI for Sproutboat. Deploys workers to any control plane via --api-url / SPROUTBOAT_API_URL.",
5
5
  "keywords": [
6
6
  "cli",
@@ -64,9 +64,9 @@
64
64
  "@sproutboat/artifact": "^0.3.0",
65
65
  "@sproutboat/assets": "^0.3.0",
66
66
  "@sproutboat/config": "^0.6.0",
67
- "@sproutboat/runtime": "^0.34.5",
68
- "@sproutboat/toolchain": "^0.19.5",
69
- "@sproutboat/wire": "^0.20.2"
67
+ "@sproutboat/runtime": "^0.35.0",
68
+ "@sproutboat/toolchain": "^0.20.0",
69
+ "@sproutboat/wire": "^0.20.3"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@oxlint/plugins": "1.85.0",
@@ -78,10 +78,10 @@
78
78
  "typescript": "7.0.2"
79
79
  },
80
80
  "optionalDependencies": {
81
- "@sproutboat/cli-darwin-arm64": "0.41.0",
82
- "@sproutboat/cli-darwin-x64": "0.41.0",
83
- "@sproutboat/cli-linux-arm64": "0.41.0",
84
- "@sproutboat/cli-linux-x64": "0.41.0"
81
+ "@sproutboat/cli-darwin-arm64": "0.42.0",
82
+ "@sproutboat/cli-darwin-x64": "0.42.0",
83
+ "@sproutboat/cli-linux-arm64": "0.42.0",
84
+ "@sproutboat/cli-linux-x64": "0.42.0"
85
85
  },
86
86
  "engines": {
87
87
  "node": ">=18"