sproutboat 0.41.0 → 0.43.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,48 @@ maintained going forward by the `release` skill.
10
10
 
11
11
  ## Unreleased
12
12
 
13
+ ## [0.43.0] - 2026-10-29
14
+
15
+ Built on `@sproutboat/runtime` 0.35.0, `@sproutboat/toolchain` 0.20.1 and
16
+ `@sproutboat/wire` 0.20.3.
17
+
18
+ ### Fixed
19
+
20
+ - **A collection no longer frees the entries block of Promise's pending-rejections array.** In a long-running
21
+ native process (a standalone binary, or a worker under sproutd), the first rejections that grew that array
22
+ past its static capacity moved its entries to the heap, and the collector then skipped the whole array as
23
+ malformed. Every collection freed the block, and the next rejection wrote into memory that now belonged to
24
+ another object: a string or an array of a request suspended at an `await` could change silently. A
25
+ standalone binary showed it in about 1 fresh process in 5 under interleaved requests, with no failure
26
+ reported anywhere. Rebuild standalone binaries to pick up the fix.
27
+
28
+ ## [0.42.0] - 2026-10-28
29
+
30
+ Built on `@sproutboat/runtime` 0.35.0, `@sproutboat/toolchain` 0.20.0 and
31
+ `@sproutboat/wire` 0.20.3.
32
+
33
+ ### Changed
34
+
35
+ - **A standalone binary opens its SQLite databases in EXCLUSIVE locking mode by default.** The lock is
36
+ taken once and held, so a transaction no longer takes and releases file locks around itself (about two
37
+ `fcntl` calls per request), and the WAL index lives in memory instead of a `-shm` file. The page cache
38
+ stays at 2 MB; `SB_SQLITE_CACHE_MB=<n>` (1 to 4096) sizes it. **While the binary runs, no other process can
39
+ open its databases:** the `sqlite3` shell, `sproutboat kv|d1 --local --data-dir` and several copies behind
40
+ `SO_REUSEPORT` are locked out. Set `SB_SQLITE_EXCLUSIVE=0` to keep shared locking. Databases under LTX
41
+ replication are never exclusive. sproutd and the broker are unchanged.
42
+
43
+ ### Performance
44
+
45
+ - **A request's fixed cost drops its text round trips, regular expressions and repeated lookups**: the CPU
46
+ stamp and the streamed-body probe return numbers, `Headers` checks names and values in C, the ingress
47
+ header reads scan the stored names, and an empty `waitUntil` list creates no coroutine.
48
+ - **A strict D1 query in a standalone binary takes a direct lane**, with no statement closures, no regular
49
+ expression for the transaction check and a result header built as JS values instead of JSON text.
50
+ - **No 88 KiB `mmap` and `munmap` for every statement that builds a temporary table** (`INSERT ...
51
+ RETURNING`, sorts). On the API-challenge create endpoint that is about 930 to 700 us of CPU per request.
52
+ - **A response's plain-ASCII header names, header values and body are written straight from the heap**
53
+ instead of through a `malloc`ed copy (standalone binaries).
54
+
13
55
  ## [0.41.0] - 2026-10-28
14
56
 
15
57
  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.43.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.43.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.1",
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.43.0",
82
+ "@sproutboat/cli-darwin-x64": "0.43.0",
83
+ "@sproutboat/cli-linux-arm64": "0.43.0",
84
+ "@sproutboat/cli-linux-x64": "0.43.0"
85
85
  },
86
86
  "engines": {
87
87
  "node": ">=18"