sproutboat 0.30.0 → 0.32.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,80 @@ maintained going forward by the `release` skill.
10
10
 
11
11
  ## Unreleased
12
12
 
13
+ ## [0.32.0] - 2026-10-25
14
+
15
+ Built on `@sproutboat/runtime` 0.31.0, `@sproutboat/toolchain` 0.16.1 and
16
+ `@sproutboat/wire` 0.19.1.
17
+
18
+ ### Added
19
+
20
+ - **Cron-only and queue-only Workers.** A Worker may export only `scheduled()`
21
+ or `queue()`, with no `fetch()`, as on workerd. Cloudflare's `cron-trigger`
22
+ and `multiple-cron-triggers` examples used to be refused at build. An HTTP
23
+ request to such a Worker answers 500 and logs workerd's "Handler does not
24
+ export a fetch() function.".
25
+ - Queue consumers and `scheduled()` may be `WorkerEntrypoint` methods.
26
+ - Apps built for sproutd get their crons, queue messages and Durable Object
27
+ alarms delivered by the daemon, which starts an app that was shut down while
28
+ idle (sproutd B22). Standalone executables and the platform keep their own
29
+ timers.
30
+
31
+ ### Fixed
32
+
33
+ - A standalone executable whose only binding-like setting is `triggers.crons`
34
+ now runs its crons. Before, they started only when some other binding existed.
35
+ - In standalone executables, `scheduled()` gets `env` from compatibility date
36
+ `2026-09-28`, as on the platform. A throw in it is logged instead of being
37
+ left unhandled.
38
+
39
+ ### Performance
40
+
41
+ - Smaller idle sprouts: once a sprout goes quiet, the idle collection returns
42
+ all of its freed heap to the OS, not only runs of 256 KiB or more. Compiled
43
+ apps get a new toolchain fingerprint, so they rebuild once.
44
+ - Faster allocation-heavy handlers: a collection after a request keeps 16 MiB
45
+ of heap above its top, as plain Porffor does, instead of unmapping it. The
46
+ idle collection still trims it. On othello, `regex-scan` took about 3,600 page
47
+ faults and 17 ms more per request before this.
48
+
49
+ ## [0.31.0] - 2026-10-23
50
+
51
+ Built on `@sproutboat/runtime` 0.30.0, `@sproutboat/toolchain` 0.15.0 and
52
+ `@sproutboat/wire` 0.19.0.
53
+
54
+ ### Added
55
+
56
+ - More of Durable Objects like workerd, from compatibility date `2026-10-29`:
57
+ - **RPC on stubs.** In a class that extends `DurableObject` from
58
+ `cloudflare:workers`, `await stub.method(args)` calls the method through
59
+ the object's input gate.
60
+ - Arguments and results are copied as structured clone does, so Date, Map,
61
+ BigInt, `Uint8Array` and the like keep their type.
62
+ - A function argument becomes a callback.
63
+ - A getter is read with `await stub.prop`.
64
+ - A throw rejects the caller with the same error.
65
+ - **Ids are 64 hex digits** and have `equals()` and `name`. `idFromString`
66
+ rejects malformed ids and ids from another namespace.
67
+ - `namespace.getByName(name)`, `namespace.jurisdiction()`, and `stub.id` and
68
+ `stub.name`.
69
+ - **`ctx.storage.sql`**: each object has its own SQLite database.
70
+ - `exec()` returns cursors with `toArray()`, `one()`, `raw()` and iteration.
71
+ - `storage.transactionSync()` and `sql.databaseSize` are available.
72
+ - Foreign keys are enforced.
73
+ - `BEGIN` and `SAVEPOINT` are refused, as on Workers.
74
+ - On the sproutd Durable Objects suite, these bring do.js from 67 to 93 of 105
75
+ and do-rpc.js from 1 to 17 of 17.
76
+
77
+ ### Changed
78
+
79
+ - From `2026-10-29`, an exception thrown inside a Durable Object rejects
80
+ `stub.fetch()` with that error, as on Workers. It used to come back as a 500
81
+ response.
82
+ - Moving an app to `2026-10-29` keeps its Durable Object data. Storage and
83
+ alarms of objects created with `idFromName` before that date move to the new
84
+ 64-hex ids on first use. `idFromString` still accepts the `name:` and `uid:`
85
+ ids that earlier dates gave out.
86
+
13
87
  ## [0.30.0] - 2026-10-23
14
88
 
15
89
  Built on `@sproutboat/runtime` 0.29.1, `@sproutboat/toolchain` 0.15.0 and
@@ -1246,7 +1320,9 @@ its own package.
1246
1320
  - Renamed the package to `sproutboat` (was `@sproutboat/cli`); dropped the
1247
1321
  `sprout` bin alias in favour of a user-defined shell alias.
1248
1322
 
1249
- [Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.24.0...HEAD
1323
+ [Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.32.0...HEAD
1324
+ [0.32.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.31.0...v0.32.0
1325
+ [0.31.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.30.0...v0.31.0
1250
1326
  [0.24.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.23.0...v0.24.0
1251
1327
  [0.19.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.18.0...v0.19.0
1252
1328
  [0.18.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.17.0...v0.18.0
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.30.0
6
+ **Package:** `sproutboat` 0.32.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.30.0",
3
+ "version": "0.32.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.5.0",
67
- "@sproutboat/runtime": "^0.29.1",
68
- "@sproutboat/toolchain": "^0.15.0",
69
- "@sproutboat/wire": "^0.18.0"
67
+ "@sproutboat/runtime": "^0.31.0",
68
+ "@sproutboat/toolchain": "^0.16.1",
69
+ "@sproutboat/wire": "^0.19.1"
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.30.0",
82
- "@sproutboat/cli-darwin-x64": "0.30.0",
83
- "@sproutboat/cli-linux-arm64": "0.30.0",
84
- "@sproutboat/cli-linux-x64": "0.30.0"
81
+ "@sproutboat/cli-darwin-arm64": "0.32.0",
82
+ "@sproutboat/cli-darwin-x64": "0.32.0",
83
+ "@sproutboat/cli-linux-arm64": "0.32.0",
84
+ "@sproutboat/cli-linux-x64": "0.32.0"
85
85
  },
86
86
  "engines": {
87
87
  "node": ">=18"