sproutboat 0.38.0 → 0.40.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,40 @@ maintained going forward by the `release` skill.
10
10
 
11
11
  ## Unreleased
12
12
 
13
+ ## [0.40.0] - 2026-10-28
14
+
15
+ Built on `@sproutboat/runtime` 0.34.4, `@sproutboat/toolchain` 0.19.4 and
16
+ `@sproutboat/wire` 0.20.2.
17
+
18
+ ### Performance
19
+
20
+ - **A standalone binary collects garbage every 8 requests**, and once it has been quiet for about 50 ms,
21
+ instead of after every response. On the API-challenge mix at 900 req/s the CPU per request goes from about
22
+ 550 to about 470 us, and the feed endpoint from 940 to 750 us, for about 2 MiB more resident memory.
23
+ `SB_GC_EVERY=<n>` sets the interval (`1` restores a collection after each request). A request that needs
24
+ more heap than is free still collects when it allocates. sproutd's collector and density are untouched.
25
+ - **JWT verification costs less CPU.** `atob` decodes in C for the usual input and falls back to the
26
+ existing code for everything else, `TextEncoder.encode` sizes and fills the array in two C passes, the
27
+ `ArrayBuffer` returned by `crypto.subtle.sign` and `digest` is copied with one `memcpy`, and the
28
+ constant-time compare behind `verify` runs in C. A typical `authenticate()` goes from 21.5 to 7 us on an
29
+ M-series host. What throws, and what it throws, is unchanged.
30
+
31
+ ## [0.39.0] - 2026-10-27
32
+
33
+ Built on `@sproutboat/runtime` 0.34.3, `@sproutboat/toolchain` 0.19.3 and
34
+ `@sproutboat/wire` 0.20.2.
35
+
36
+ ### Performance
37
+
38
+ - **D1 queries cost less CPU in standalone builds.** A D1 call no longer goes through `JSON.stringify` and
39
+ `JSON.parse` on both sides of the in-process dispatch, and from compatibility date 2026-10-24 the rows of a
40
+ strict D1 result are built as JS arrays in C straight from the SQLite cells instead of being written as JSON
41
+ and parsed again. Same results and error messages.
42
+ - **`atob` is faster.** Each character is looked up in a 128-entry table, and the same pass validates, so a JWT
43
+ check (three base64url decodes) costs less. Same output and same `InvalidCharacterError` cases.
44
+ - **`JSON.stringify` of strings is faster.** Each character is read straight from the string and stored when it
45
+ needs no escape. The output is byte-identical.
46
+
13
47
  ## [0.38.0] - 2026-10-27
14
48
 
15
49
  Built on `@sproutboat/runtime` 0.34.2, `@sproutboat/toolchain` 0.19.2 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.38.0
6
+ **Package:** `sproutboat` 0.40.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.38.0",
3
+ "version": "0.40.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,8 +64,8 @@
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.2",
68
- "@sproutboat/toolchain": "^0.19.2",
67
+ "@sproutboat/runtime": "^0.34.4",
68
+ "@sproutboat/toolchain": "^0.19.4",
69
69
  "@sproutboat/wire": "^0.20.2"
70
70
  },
71
71
  "devDependencies": {
@@ -78,10 +78,10 @@
78
78
  "typescript": "7.0.2"
79
79
  },
80
80
  "optionalDependencies": {
81
- "@sproutboat/cli-darwin-arm64": "0.38.0",
82
- "@sproutboat/cli-darwin-x64": "0.38.0",
83
- "@sproutboat/cli-linux-arm64": "0.38.0",
84
- "@sproutboat/cli-linux-x64": "0.38.0"
81
+ "@sproutboat/cli-darwin-arm64": "0.40.0",
82
+ "@sproutboat/cli-darwin-x64": "0.40.0",
83
+ "@sproutboat/cli-linux-arm64": "0.40.0",
84
+ "@sproutboat/cli-linux-x64": "0.40.0"
85
85
  },
86
86
  "engines": {
87
87
  "node": ">=18"