kobako 0.17.0 → 0.19.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a1d65c175d931d915f6989a316d16cff80e6c4688f3510266f256f407175e14
4
- data.tar.gz: 44a397aa2677edaa4541b6c69adfa1acc2ba05f8d7873ae4634f7c28074e01dd
3
+ metadata.gz: 890cacf8f9985d53603b280d11bcf5283da99c4bc5bf3eb0249ded25b9b8f4b5
4
+ data.tar.gz: e0303f7fe91a066a12e792094842325d1dc968f674ccc3bc9b05a82988adbbe8
5
5
  SHA512:
6
- metadata.gz: 6e142164cfa46c2a12a7cfc1433a3a315a12eb5cc71a1d8ad4e6ae5a05d7b12eefec5e7b323ffd46e7917684e74ea732b8650785355f31bdb5a08ce27bf5545a
7
- data.tar.gz: 16cf640810711eac6f3920f5678300b9c1b565118ff0da0d4fe02a6b1cc5be3a9394da69998ec0f2194b67d565306d933dafca9038a930aeabf7f5198435c533
6
+ metadata.gz: c573074f4ef2cd26c8221f87a6fd3cb3ca50aa7738c28df7965ece8a8fc6953d29b5651acc97bfb10094ffb14dea6ad401f55a66205920e15af6e6dba9d3cdbd
7
+ data.tar.gz: 3d625d01a1fb1ca14213b20de469ffd095d49257553bfcf4b1960cd878675d5e48099dc058f723d77a6f0eb66363b15af690f7750896344d8e47c25b019490c4
@@ -1 +1 @@
1
- {".":"0.17.0","wasm/kobako-core":"0.10.1","wasm/kobako-mruby":"0.10.1","wasm/kobako-io":"0.10.1","wasm/kobako-json":"0.10.1","wasm/kobako-regexp":"0.10.1","wasm/kobako-baker":"0.10.1","crates/kobako-codec":"0.10.1","crates/kobako-runtime":"0.10.1","crates/kobako-wasmtime":"0.10.1","crates/kobako":"0.10.1"}
1
+ {".":"0.19.0","wasm/kobako-core":"0.11.0","wasm/kobako-mruby":"0.11.0","wasm/kobako-io":"0.11.0","wasm/kobako-json":"0.11.0","wasm/kobako-regexp":"0.11.0","wasm/kobako-baker":"0.11.0","crates/kobako-codec":"0.11.0","crates/kobako-runtime":"0.11.0","crates/kobako-wasmtime":"0.11.0","crates/kobako":"0.11.0"}
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.19.0](https://github.com/elct9620/kobako/compare/v0.18.0...v0.19.0) (2026-07-19)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * **readme:** guest scripts using `class X < Kobako::Member` must switch to `extend Kobako::Proxy`; Kobako::Member no longer exists in the guest.
9
+
10
+ ### Bug Fixes
11
+
12
+ * **readme:** switch the Extension File idiom off the removed Kobako::Member ([0d96b9e](https://github.com/elct9620/kobako/commit/0d96b9eafed11df6fa030c38f93b2a0e9b190ed8))
13
+
14
+ ## [0.18.0](https://github.com/elct9620/kobako/compare/v0.17.0...v0.18.0) (2026-07-18)
15
+
16
+
17
+ ### Features
18
+
19
+ * **bench:** add bench:all whole-round sweep ([6163cdf](https://github.com/elct9620/kobako/commit/6163cdffc6aa701a0306af40cc18121787b07e26))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **guest:** partition dispatch args by Ruby 3 call semantics (B-58) ([59a15a2](https://github.com/elct9620/kobako/commit/59a15a2d524b1ab902bc5e4a2763ffccb485e399))
25
+
26
+
27
+ ### Performance Improvements
28
+
29
+ * **bench:** re-bless the anchor onto the codec-decomposition round ([74dca53](https://github.com/elct9620/kobako/commit/74dca5374a587242f8b1e00768dd33c330ff298c))
30
+
3
31
  ## [0.17.0](https://github.com/elct9620/kobako/compare/v0.16.0...v0.17.0) (2026-07-17)
4
32
 
5
33
 
data/Cargo.lock CHANGED
@@ -929,7 +929,7 @@ dependencies = [
929
929
 
930
930
  [[package]]
931
931
  name = "kobako"
932
- version = "0.17.0"
932
+ version = "0.19.0"
933
933
  dependencies = [
934
934
  "kobako-runtime",
935
935
  "kobako-wasmtime",
@@ -938,11 +938,11 @@ dependencies = [
938
938
 
939
939
  [[package]]
940
940
  name = "kobako-runtime"
941
- version = "0.10.1"
941
+ version = "0.11.0"
942
942
 
943
943
  [[package]]
944
944
  name = "kobako-wasmtime"
945
- version = "0.10.1"
945
+ version = "0.11.0"
946
946
  dependencies = [
947
947
  "kobako-runtime",
948
948
  "libc",
data/README.md CHANGED
@@ -388,7 +388,8 @@ An Extension teaches the guest a native-style constant by pairing a guest idiom
388
388
 
389
389
  ```ruby
390
390
  FILE = <<~'MRUBY'
391
- class File < Kobako::Member
391
+ class File
392
+ extend Kobako::Proxy
392
393
  def self.basename(path) = path.split("/").last || "" # pure: runs in-guest
393
394
  # read / write are undefined here, so they dispatch to the backend
394
395
  end
@@ -455,7 +456,7 @@ Order-of-magnitude figures on macOS arm64, Ruby 3.4.7, YJIT off. Absolute values
455
456
 
456
457
  The Cranelift JIT runs once per machine and gem version — the compiled artifact persists in a `.cwasm` disk cache, so later processes deserialize in milliseconds. An idle Sandbox holds no wasm instance (the canonical boot state is baked into the artifact and instantiated per invocation), which is why a thousand idle tenants cost ~33 MB total. `ext/` does not release the GVL during wasmtime execution, so wasm work is GVL-serialized: aggregate throughput stays around 17k `#eval`/s regardless of Thread count, though Ruby-side `#eval` setup still overlaps. A +10% regression on any of the six SPEC-mandated benchmarks blocks release.
457
458
 
458
- Regexp is an opt-in capability gem, excluded from the default binary and the gated set; its throughput is tracked in a separate non-gated characterization (`#10` in [`benchmark/README.md`](benchmark/README.md)). There `=~` (~5 µs/match) costs about 4× `match?` (~1.2 µs), because `=~` eagerly builds the `MatchData` and match globals — prefer `match?` for boolean tests.
459
+ Regexp is an opt-in capability gem, excluded from the default binary and the gated set; its throughput is tracked in a separate non-gated characterization (`#11` in [`benchmark/README.md`](benchmark/README.md)). There `=~` (~5 µs/match) costs about 4× `match?` (~1.2 µs), because `=~` eagerly builds the `MatchData` and match globals — prefer `match?` for boolean tests.
459
460
 
460
461
  ```bash
461
462
  bundle exec rake bench # six gated regression benchmarks (~5-8 min)
@@ -476,6 +477,8 @@ Building from source requires a WASI-capable Rust toolchain in addition to the s
476
477
 
477
478
  Bug reports and pull requests are welcome at <https://github.com/elct9620/kobako>. Please open an issue before starting on non-trivial changes so we can align on scope.
478
479
 
480
+ Releases are automated with release-please across two tracks — the gem and the linked guest-crate group. The version rules, commit conventions, and how to cut each release live in [`docs/releasing.md`](docs/releasing.md).
481
+
479
482
  ## License
480
483
 
481
484
  Kobako is released under the [Apache License 2.0](https://opensource.org/licenses/Apache-2.0).
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.11.0](https://github.com/elct9620/kobako/compare/kobako-runtime-v0.10.2...kobako-runtime-v0.11.0) (2026-07-19)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * **kobako-runtime:** Synchronize kobako crates versions
9
+
10
+ ## [0.10.2](https://github.com/elct9620/kobako/compare/kobako-runtime-v0.10.1...kobako-runtime-v0.10.2) (2026-07-18)
11
+
12
+
13
+ ### Miscellaneous Chores
14
+
15
+ * **kobako-runtime:** Synchronize kobako crates versions
16
+
3
17
  ## [0.10.1](https://github.com/elct9620/kobako/compare/kobako-runtime-v0.10.0...kobako-runtime-v0.10.1) (2026-07-17)
4
18
 
5
19
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  [package]
15
15
  name = "kobako-runtime"
16
- version = "0.10.1"
16
+ version = "0.11.0"
17
17
  edition = "2021"
18
18
  description = "Engine-neutral host runtime contract for embedding kobako Wasm guests."
19
19
  license = "Apache-2.0"
@@ -26,7 +26,7 @@ map the neutral types onto their own language surface.
26
26
 
27
27
  ```toml
28
28
  [dependencies]
29
- kobako-runtime = "0.10.1" # x-release-please-version
29
+ kobako-runtime = "0.11.0" # x-release-please-version
30
30
  ```
31
31
 
32
32
  ## License
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.11.0](https://github.com/elct9620/kobako/compare/kobako-wasmtime-v0.10.2...kobako-wasmtime-v0.11.0) (2026-07-19)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * **kobako-wasmtime:** Synchronize kobako crates versions
9
+
10
+ ## [0.10.2](https://github.com/elct9620/kobako/compare/kobako-wasmtime-v0.10.1...kobako-wasmtime-v0.10.2) (2026-07-18)
11
+
12
+
13
+ ### Miscellaneous Chores
14
+
15
+ * **kobako-wasmtime:** Synchronize kobako crates versions
16
+
3
17
  ## [0.10.1](https://github.com/elct9620/kobako/compare/kobako-wasmtime-v0.10.0...kobako-wasmtime-v0.10.1) (2026-07-17)
4
18
 
5
19
 
@@ -15,7 +15,7 @@
15
15
 
16
16
  [package]
17
17
  name = "kobako-wasmtime"
18
- version = "0.10.1"
18
+ version = "0.11.0"
19
19
  edition = "2021"
20
20
  description = "wasmtime implementation of the kobako host runtime contract."
21
21
  license = "Apache-2.0"
@@ -28,7 +28,7 @@ categories = ["wasm", "virtualization"]
28
28
  # The engine-neutral contract this crate implements. The version pin
29
29
  # rides the linked release group; the path keeps in-tree builds (and
30
30
  # the Ruby gem, which ships both crates) resolving locally.
31
- kobako-runtime = { version = "0.10.1", path = "../kobako-runtime" }
31
+ kobako-runtime = { version = "0.11.0", path = "../kobako-runtime" }
32
32
  # wasmtime — host-side embedder for kobako.wasm. We disable default-features
33
33
  # and opt back in only what kobako needs: a Cranelift-backed runtime that can
34
34
  # compile a pre-built wasm32-wasip1 module on the host triple, plus the `wat`
@@ -24,7 +24,7 @@ SDK consumes the same surface.
24
24
 
25
25
  ```toml
26
26
  [dependencies]
27
- kobako-wasmtime = "0.10.1" # x-release-please-version
27
+ kobako-wasmtime = "0.11.0" # x-release-please-version
28
28
  ```
29
29
 
30
30
  ## License
data/data/kobako.wasm CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "kobako"
3
- version = "0.17.0"
3
+ version = "0.19.0"
4
4
  edition = "2021"
5
5
  authors = ["Aotokitsuruya <contact@aotoki.me>"]
6
6
  license = "Apache-2.0"
@@ -47,7 +47,7 @@ module Kobako
47
47
  # #invalidate!. The ok value is consumed by the host Service
48
48
  # method, so a Capability Handle in it is restored to its host object.
49
49
  # The break value unwinds past the Service back to the guest
50
- # Member call, so it passes through verbatim — a Handle stays a
50
+ # bound-constant call, so it passes through verbatim — a Handle stays a
51
51
  # Handle and rides back on the same id rather than churning a new one.
52
52
  def yield(*args)
53
53
  raise LocalJumpError, "guest block invoked after host dispatch frame returned" unless @active
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kobako
4
- VERSION = "0.17.0"
4
+ VERSION = "0.19.0"
5
5
  end
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
3
  "release-type": "ruby",
4
+ "bump-minor-pre-major": true,
4
5
  "last-release-sha": "98509af508988f708bf0d7a76a718bb0428a177e",
5
6
  "packages": {
6
7
  ".": {
7
8
  "component": "kobako",
8
9
  "include-component-in-tag": false,
9
10
  "release-type": "ruby",
10
- "exclude-paths": ["wasm"]
11
+ "exclude-paths": ["wasm", "crates"]
11
12
  },
12
13
  "wasm/kobako-core": {
13
14
  "component": "kobako-core",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kobako
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aotokitsuruya