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 +42 -0
- package/SURFACE.md +1 -1
- package/package.json +8 -8
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sproutboat",
|
|
3
|
-
"version": "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.
|
|
68
|
-
"@sproutboat/toolchain": "^0.
|
|
69
|
-
"@sproutboat/wire": "^0.20.
|
|
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.
|
|
82
|
-
"@sproutboat/cli-darwin-x64": "0.
|
|
83
|
-
"@sproutboat/cli-linux-arm64": "0.
|
|
84
|
-
"@sproutboat/cli-linux-x64": "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"
|