sproutboat 0.40.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 +43 -0
- package/SURFACE.md +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,49 @@ 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
|
+
|
|
40
|
+
## [0.41.0] - 2026-10-28
|
|
41
|
+
|
|
42
|
+
Built on `@sproutboat/runtime` 0.34.5, `@sproutboat/toolchain` 0.19.5 and
|
|
43
|
+
`@sproutboat/wire` 0.20.2.
|
|
44
|
+
|
|
45
|
+
### Performance
|
|
46
|
+
|
|
47
|
+
- **`JSON.stringify` returns an 8-bit string when it can**, and skips the zeroed buffer for a plain string.
|
|
48
|
+
The feed endpoint of the API-challenge app goes from about 475 to 415 us of CPU per request.
|
|
49
|
+
- **A strict D1 row's text goes into one arena**, and ASCII text becomes a JS string in one copy
|
|
50
|
+
(standalone binaries). The feed endpoint gains about 16 us per request.
|
|
51
|
+
- **The client address is folded once per distinct address**, not on every request.
|
|
52
|
+
About 1.5% of a request.
|
|
53
|
+
- Together, on the API-challenge mix on one pinned x86 core, the stack holds 3,200 req/s or more at the bar
|
|
54
|
+
(p95 under 500 ms, p99 under 1 s, errors under 1%) where the previous release held 2,800.
|
|
55
|
+
|
|
13
56
|
## [0.40.0] - 2026-10-28
|
|
14
57
|
|
|
15
58
|
Built on `@sproutboat/runtime` 0.34.4, `@sproutboat/toolchain` 0.19.4 and
|
package/SURFACE.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sproutboat",
|
|
3
|
-
"version": "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.
|
|
68
|
-
"@sproutboat/toolchain": "^0.
|
|
69
|
-
"@sproutboat/wire": "^0.20.
|
|
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.
|
|
82
|
-
"@sproutboat/cli-darwin-x64": "0.
|
|
83
|
-
"@sproutboat/cli-linux-arm64": "0.
|
|
84
|
-
"@sproutboat/cli-linux-x64": "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"
|