sproutboat 0.11.3 → 0.11.5
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 +46 -1
- package/SURFACE.md +1 -1
- package/package.json +6 -6
- package/scripts/build-cli.ts +17 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,49 @@ maintained going forward by the `release` skill.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.11.5] - 2026-09-14
|
|
14
|
+
### Fixed
|
|
15
|
+
- Bumped `@sproutboat/runtime` to `^0.6.6`. `__sbEntry` called `handlers.fetch()`
|
|
16
|
+
(and the `scheduled`/`queue`/`alarm` trigger paths) with no try/catch at all:
|
|
17
|
+
any synchronous throw, or a rejected async handler promise, propagated all
|
|
18
|
+
the way up and crashed the whole process: not just the request that hit
|
|
19
|
+
it, but every other in-flight and future request on that sprout, until
|
|
20
|
+
whatever supervises it restarted the binary (baronunread/sproutboat#179). A
|
|
21
|
+
throwing/rejecting `fetch()` now returns a 500 instead. `scheduled()`/
|
|
22
|
+
`alarm()` still reply `204` either way (no failure signal existed before
|
|
23
|
+
this either); a throwing `queue()` falls through to the existing
|
|
24
|
+
default-ack pass, same as a handler that never calls `ack()`/`retry()` on
|
|
25
|
+
every message.
|
|
26
|
+
- Upgrading the CLI is the only way to pick this up. The runtime prelude is
|
|
27
|
+
embedded in the CLI binary when that binary is built, so a project's own
|
|
28
|
+
`@sproutboat/runtime` dependency has no effect on `--standalone` or
|
|
29
|
+
`--target host` builds.
|
|
30
|
+
|
|
31
|
+
## [0.11.4] - 2026-09-14
|
|
32
|
+
### Fixed
|
|
33
|
+
- Bumped `@sproutboat/runtime` to `^0.6.5`, undoing a severe performance
|
|
34
|
+
regression that `v0.11.3` shipped (baronunread/sproutboat#181). `0.6.4`'s
|
|
35
|
+
encode fix was correct for the large inputs it targeted and badly wrong for
|
|
36
|
+
small ones: an app hashing ~150-byte values through `crypto.subtle.digest`
|
|
37
|
+
on every request lost **64% of its throughput** (4,700 to 1,680 req/s),
|
|
38
|
+
tripled its p50 (4.6ms to 13.4ms) and grew 41% in RSS. The encoder now only
|
|
39
|
+
reaches for an array once 512 bytes have accumulated, so a small input runs
|
|
40
|
+
exactly like `v0.11.2` while a large one keeps the `#180` fix.
|
|
41
|
+
- Upgrading the CLI is the only way to pick this up. The runtime prelude is
|
|
42
|
+
embedded in the CLI binary when that binary is built, so a project's own
|
|
43
|
+
`@sproutboat/runtime` dependency has no effect on `--standalone` or
|
|
44
|
+
`--target host` builds. Anyone on `v0.11.3` should move to this release;
|
|
45
|
+
`v0.11.2` is the last unaffected version before it.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
- The `darwin-x64` platform package is now cross-compiled on the arm64 macOS
|
|
49
|
+
runner instead of built natively on `macos-13`. GitHub's only x64 macOS pool
|
|
50
|
+
routinely left that leg queued for 30+ minutes and blocked two releases,
|
|
51
|
+
including `v0.11.3`, where the root package published while its own
|
|
52
|
+
`optionalDependency` on `@sproutboat/cli-darwin-x64` was still waiting on it.
|
|
53
|
+
Nothing in the package needs x64 hardware to produce. `scripts/build-cli.ts`
|
|
54
|
+
gains `--target <os>-<arch>` for this.
|
|
55
|
+
|
|
13
56
|
## [0.11.3] - 2026-09-14
|
|
14
57
|
### Fixed
|
|
15
58
|
- Bumped `@sproutboat/runtime` to `^0.6.4`, picking up the encode-side half of
|
|
@@ -482,7 +525,9 @@ its own package.
|
|
|
482
525
|
- Renamed the package to `sproutboat` (was `@sproutboat/cli`); dropped the
|
|
483
526
|
`sprout` bin alias in favour of a user-defined shell alias.
|
|
484
527
|
|
|
485
|
-
[Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.
|
|
528
|
+
[Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.5...HEAD
|
|
529
|
+
[0.11.5]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.4...v0.11.5
|
|
530
|
+
[0.11.4]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.3...v0.11.4
|
|
486
531
|
[0.11.3]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.2...v0.11.3
|
|
487
532
|
[0.11.2]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.1...v0.11.2
|
|
488
533
|
[0.11.1]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.0...v0.11.1
|
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.11.
|
|
6
|
+
**Package:** `sproutboat` 0.11.5 · runs on Bun (use `bunx`, not `npx`)
|
|
7
7
|
|
|
8
8
|
## Commands
|
|
9
9
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sproutboat",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.5",
|
|
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,7 +64,7 @@
|
|
|
64
64
|
"@sproutboat/artifact": "^0.2.0",
|
|
65
65
|
"@sproutboat/assets": "^0.2.0",
|
|
66
66
|
"@sproutboat/config": "^0.3.0",
|
|
67
|
-
"@sproutboat/runtime": "^0.6.
|
|
67
|
+
"@sproutboat/runtime": "^0.6.6",
|
|
68
68
|
"@sproutboat/toolchain": "^0.4.0",
|
|
69
69
|
"@sproutboat/wire": "^0.5.0",
|
|
70
70
|
"esbuild": "^0.28.2"
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
"typescript": "7.0.2"
|
|
79
79
|
},
|
|
80
80
|
"optionalDependencies": {
|
|
81
|
-
"@sproutboat/cli-darwin-arm64": "0.11.
|
|
82
|
-
"@sproutboat/cli-darwin-x64": "0.11.
|
|
83
|
-
"@sproutboat/cli-linux-arm64": "0.11.
|
|
84
|
-
"@sproutboat/cli-linux-x64": "0.11.
|
|
81
|
+
"@sproutboat/cli-darwin-arm64": "0.11.5",
|
|
82
|
+
"@sproutboat/cli-darwin-x64": "0.11.5",
|
|
83
|
+
"@sproutboat/cli-linux-arm64": "0.11.5",
|
|
84
|
+
"@sproutboat/cli-linux-x64": "0.11.5"
|
|
85
85
|
},
|
|
86
86
|
"engines": {
|
|
87
87
|
"node": ">=18"
|
package/scripts/build-cli.ts
CHANGED
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
* --compile` can target any `bun-<os>-<arch>` regardless of host — verified
|
|
10
10
|
* against real Linux/macOS output, not just docs). For a maintainer building
|
|
11
11
|
* every platform package locally without waiting on CI.
|
|
12
|
+
*
|
|
13
|
+
* `--target <os>-<arch>`: build exactly one named target, host or not. CI's
|
|
14
|
+
* darwin-x64 leg uses this to cross-build on an arm64 macOS runner, because
|
|
15
|
+
* GitHub's only x64 macOS image (`macos-13`) routinely sits queued for half an
|
|
16
|
+
* hour while every other leg finishes in one minute.
|
|
12
17
|
*/
|
|
13
18
|
import { chmod, copyFile, mkdir } from "node:fs/promises";
|
|
14
19
|
import { resolve } from "node:path";
|
|
@@ -113,5 +118,16 @@ async function buildOne(target: Target): Promise<void> {
|
|
|
113
118
|
await chmod(out, 0o755);
|
|
114
119
|
}
|
|
115
120
|
|
|
121
|
+
function named(spec: string): Target {
|
|
122
|
+
const match = TARGETS.find((t) => `${t.platform}-${t.arch}` === spec);
|
|
123
|
+
if (!match)
|
|
124
|
+
throw new Error(
|
|
125
|
+
`unknown target ${spec}; expected one of ${TARGETS.map((t) => `${t.platform}-${t.arch}`).join(", ")}`,
|
|
126
|
+
);
|
|
127
|
+
return match;
|
|
128
|
+
}
|
|
129
|
+
|
|
116
130
|
const all = process.argv.includes("--all");
|
|
117
|
-
|
|
131
|
+
const only = process.argv[process.argv.indexOf("--target") + 1];
|
|
132
|
+
const selected = all ? TARGETS : process.argv.includes("--target") ? [named(only ?? "")] : [hostTarget()];
|
|
133
|
+
for (const target of selected) await buildOne(target);
|