kobako 0.6.2-aarch64-linux → 0.8.0-aarch64-linux

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: dfa0224baa56613870533b63ab36dab0b968493c90acfeb7ec481073213d816a
4
- data.tar.gz: 6c996a5f2bdd56cfa923ef60107b2d708e40273086bdc4f765aee9c48d4a8772
3
+ metadata.gz: b96bfbd5ac2202cd0231a33ff1cabfc026a43ae0e9e63cb9fa41ad3ae5d2146b
4
+ data.tar.gz: ec09bc9e303b0c47db458384af838f04471cac6e001e56bff4eeb2b3a4d0186c
5
5
  SHA512:
6
- metadata.gz: 651602cf69bbe84599f79c3950b52b7754023097140391c6248961fbc2def5da8703d30743c5bac9d5d5bddabf352a7a326847e1bd68f06bcfbc30445af5f0ae
7
- data.tar.gz: 7bf7d85195919f372e02123177788a7de4003613494df4adb2616b7a4a309482fc06ce5ccc8bcdb1081375407fa3e8d4086b04c7e62c26e86a295df4de18c91c
6
+ metadata.gz: 295a4114b872301d7fa766ce5915ee56ee139c134d81291146aa1b47607d0f1e904dcec8a4eb0eb687927f22f09cde163c5eb52a4806d310b3405be91a846fc3
7
+ data.tar.gz: 119f2ea27c2e2ab94bff8d5a69ad6c43b9d07a7d78971c8c0a844649ba39f655a63f286e57a9269569a17f81814654a827ac53796b62f3f15a0085657e340796
@@ -1 +1 @@
1
- {".":"0.6.2"}
1
+ {".":"0.8.0","wasm/kobako-core":"0.2.0"}
data/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.8.0](https://github.com/elct9620/kobako/compare/v0.7.0...v0.8.0) (2026-06-05)
4
+
5
+
6
+ ### Features
7
+
8
+ * validate the Guest Binary ABI version at Sandbox construction ([63f22de](https://github.com/elct9620/kobako/commit/63f22deb88dc8acfeae56dccdbf31a7b3650da0d))
9
+ * **wasm:** turn the Guest ABI into a trait + export_guest! macro ([3532dc2](https://github.com/elct9620/kobako/commit/3532dc20521ca8d9dd55bc39f01ff611d9df0d4b))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **build:** track every wasm workspace member in the rebuild check ([3f042a4](https://github.com/elct9620/kobako/commit/3f042a4fe28aa8d8b70bb313f6158e1865a2cbeb))
15
+
16
+ ## [0.7.0](https://github.com/elct9620/kobako/compare/v0.6.2...v0.7.0) (2026-06-03)
17
+
18
+
19
+ ### Features
20
+
21
+ * **examples/async-io:** demo single-thread I/O overlap across Sandboxes ([858a0f7](https://github.com/elct9620/kobako/commit/858a0f70bb0730e5e3ad3f49a5caadf948f6ed7d))
22
+ * **guest:** reject construction of Handle proxies (B-39) ([bda5e2b](https://github.com/elct9620/kobako/commit/bda5e2b5e48fe25adeefac19c47f1b93585091bf))
23
+ * **guest:** reject construction of Member proxies (B-38) ([885c281](https://github.com/elct9620/kobako/commit/885c2812da8627e4ec7c185d9e04e4056c94a7fd))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * **ext:** surface the buried root cause on non-cap traps ([dbd1ce5](https://github.com/elct9620/kobako/commit/dbd1ce51f25ab8c83d39daee64278192d763d5ef))
29
+ * **guest:** bound the encoder walk so cycles and deep nesting fail cleanly ([90880ff](https://github.com/elct9620/kobako/commit/90880ffe6f0ee911b3c7c076ef6c86b9e08c62e1))
30
+ * **guest:** stop an embedded NUL in a returned value from hard-trapping ([14fbb97](https://github.com/elct9620/kobako/commit/14fbb97ecb47b4263585602754e92237bb951d46))
31
+ * **guest:** stop named-capture regexes from hard-trapping the sandbox ([a279ea1](https://github.com/elct9620/kobako/commit/a279ea1e2f196580b396342851e4e75ff9ea5cfa))
32
+
3
33
  ## [0.6.2](https://github.com/elct9620/kobako/compare/v0.6.1...v0.6.2) (2026-05-31)
4
34
 
5
35
 
data/README.md CHANGED
@@ -283,6 +283,29 @@ sandbox.run(:Greeter, name: "world") # => "hello, world"
283
283
 
284
284
  Use the source form for snippets authored in your repo (compile errors fail fast at `#preload`); use the bytecode form when snippets ship as build artifacts from a separate `mrbc` pipeline. Both replay through the same per-invocation path.
285
285
 
286
+ ## Security
287
+
288
+ kobako isolates the guest, but **what it may reach is whatever you `bind`** — and `bind`
289
+ exposes *every* public method of the object. So bind a purpose-built object scoped to the
290
+ task, not a capable one whose other methods leak more than you intend.
291
+
292
+ ```ruby
293
+ class ThemeReader # only #color is reachable; AppConfig.secret_key is not
294
+ def color = AppConfig.theme.color
295
+ end
296
+
297
+ sandbox = Kobako::Sandbox.new
298
+ sandbox.define(:Cfg).bind(:Settings, ThemeReader.new) # not: bind(:Settings, AppConfig)
299
+
300
+ sandbox.eval('Cfg::Settings.color') # => "#3366ff" — every other method raises NoMethodError
301
+ ```
302
+
303
+ Guest code can name any `<Namespace>::<Member>` path, but a forged name only resolves to
304
+ something you bound — the real authorization gate is this host-side allowlist. Give each
305
+ trust context its own Sandbox, and see [`docs/security.md`](docs/security.md) for the rest
306
+ as security-design concerns: validating untrusted input, default-deny external effects,
307
+ and controlling the return surface.
308
+
286
309
  ## Performance
287
310
 
288
311
  Order-of-magnitude figures on macOS arm64, Ruby 3.4.7, YJIT off. Absolute values vary by hardware but ratios are stable across machines. Full numbers, methodology, and the +10%-regression gate live in [`benchmark/README.md`](benchmark/README.md).
data/data/kobako.wasm CHANGED
Binary file
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kobako
4
- VERSION = "0.6.2"
4
+ VERSION = "0.8.0"
5
5
  end
@@ -7,6 +7,17 @@
7
7
  "component": "kobako",
8
8
  "include-component-in-tag": false,
9
9
  "release-type": "ruby"
10
+ },
11
+ "wasm/kobako-core": {
12
+ "component": "kobako-core",
13
+ "release-type": "rust",
14
+ "extra-files": [
15
+ {
16
+ "type": "toml",
17
+ "path": "/wasm/Cargo.lock",
18
+ "jsonpath": "$.package[?(@.name=='kobako-core')].version"
19
+ }
20
+ ]
10
21
  }
11
22
  },
12
23
  "extra-files": [
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kobako
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.8.0
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Aotokitsuruya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-05-31 00:00:00.000000000 Z
11
+ date: 2026-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack