sproutboat 0.11.3 → 0.11.4
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 +27 -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,31 @@ maintained going forward by the `release` skill.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.11.4] - 2026-09-14
|
|
14
|
+
### Fixed
|
|
15
|
+
- Bumped `@sproutboat/runtime` to `^0.6.5`, undoing a severe performance
|
|
16
|
+
regression that `v0.11.3` shipped (baronunread/sproutboat#181). `0.6.4`'s
|
|
17
|
+
encode fix was correct for the large inputs it targeted and badly wrong for
|
|
18
|
+
small ones: an app hashing ~150-byte values through `crypto.subtle.digest`
|
|
19
|
+
on every request lost **64% of its throughput** (4,700 to 1,680 req/s),
|
|
20
|
+
tripled its p50 (4.6ms to 13.4ms) and grew 41% in RSS. The encoder now only
|
|
21
|
+
reaches for an array once 512 bytes have accumulated, so a small input runs
|
|
22
|
+
exactly like `v0.11.2` while a large one keeps the `#180` fix.
|
|
23
|
+
- Upgrading the CLI is the only way to pick this up. The runtime prelude is
|
|
24
|
+
embedded in the CLI binary when that binary is built, so a project's own
|
|
25
|
+
`@sproutboat/runtime` dependency has no effect on `--standalone` or
|
|
26
|
+
`--target host` builds. Anyone on `v0.11.3` should move to this release;
|
|
27
|
+
`v0.11.2` is the last unaffected version before it.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- The `darwin-x64` platform package is now cross-compiled on the arm64 macOS
|
|
31
|
+
runner instead of built natively on `macos-13`. GitHub's only x64 macOS pool
|
|
32
|
+
routinely left that leg queued for 30+ minutes and blocked two releases,
|
|
33
|
+
including `v0.11.3`, where the root package published while its own
|
|
34
|
+
`optionalDependency` on `@sproutboat/cli-darwin-x64` was still waiting on it.
|
|
35
|
+
Nothing in the package needs x64 hardware to produce. `scripts/build-cli.ts`
|
|
36
|
+
gains `--target <os>-<arch>` for this.
|
|
37
|
+
|
|
13
38
|
## [0.11.3] - 2026-09-14
|
|
14
39
|
### Fixed
|
|
15
40
|
- Bumped `@sproutboat/runtime` to `^0.6.4`, picking up the encode-side half of
|
|
@@ -482,7 +507,8 @@ its own package.
|
|
|
482
507
|
- Renamed the package to `sproutboat` (was `@sproutboat/cli`); dropped the
|
|
483
508
|
`sprout` bin alias in favour of a user-defined shell alias.
|
|
484
509
|
|
|
485
|
-
[Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.
|
|
510
|
+
[Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.4...HEAD
|
|
511
|
+
[0.11.4]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.3...v0.11.4
|
|
486
512
|
[0.11.3]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.2...v0.11.3
|
|
487
513
|
[0.11.2]: https://github.com/baronunread/sproutboat-cli/compare/v0.11.1...v0.11.2
|
|
488
514
|
[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.4 · 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.4",
|
|
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.5",
|
|
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.4",
|
|
82
|
+
"@sproutboat/cli-darwin-x64": "0.11.4",
|
|
83
|
+
"@sproutboat/cli-linux-arm64": "0.11.4",
|
|
84
|
+
"@sproutboat/cli-linux-x64": "0.11.4"
|
|
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);
|