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