kobako 0.22.0-x86_64-linux → 0.23.0-x86_64-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 +4 -4
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +25 -0
- data/lib/kobako/3.3/kobako.so +0 -0
- data/lib/kobako/3.4/kobako.so +0 -0
- data/lib/kobako/4.0/kobako.so +0 -0
- data/lib/kobako/catalog/handles.rb +10 -7
- data/lib/kobako/transport/reflection.rb +23 -9
- data/lib/kobako/version.rb +1 -1
- data/sig/kobako/transport/reflection.rbs +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 94da2efec86a9d423b8c780ea1a7706d6fc450530cf9af5832a6daf18305197f
|
|
4
|
+
data.tar.gz: 7f9d73c9c78ecdf000893293e676b5919f8ba9f1d452f45e57745bcd493306ca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: db2f8c214168b90111e2f182df46b2deca7aa9c9b6a6f16c1046fa2483b0870273abfb77ab67b0e30501f7fc6641718e3adc04966ce2ec829818b2578441349a
|
|
7
|
+
data.tar.gz: ba83de8d69ff3836ec2b2381df252d30390c47064c8b03e0ea58a24ef30d296d47e32d1c176cd686fc5c774b1330f16a1576e04684b5ca93e014e826da35f9dc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{".":"0.
|
|
1
|
+
{".":"0.23.0","wasm/kobako-core":"0.14.0","wasm/kobako-mruby":"0.14.0","wasm/kobako-io":"0.14.0","wasm/kobako-json":"0.14.0","wasm/kobako-regexp":"0.14.0","wasm/kobako-baker":"0.14.0","crates/kobako-transport":"0.14.0","crates/kobako-codec":"0.14.0","crates/kobako-runtime":"0.14.0","crates/kobako-wasmtime":"0.14.0","crates/kobako":"0.14.0"}
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.23.0](https://github.com/elct9620/kobako/compare/v0.22.0...v0.23.0) (2026-08-28)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **spec:** declare the boot state two invocations share, and what a callback raise costs ([d94fffc](https://github.com/elct9620/kobako/commit/d94fffc59a3142cb28e0025a0dc8c792f7282074))
|
|
9
|
+
* **spec:** declare the dispatch boundary one observation at a time ([f11b280](https://github.com/elct9620/kobako/commit/f11b280ef503c20d5b75d7b1c4187d261f60ef27))
|
|
10
|
+
* **spec:** declare the guest's pattern surface one observation at a time ([a477818](https://github.com/elct9620/kobako/commit/a477818f8fa505fdcd8ea1fd1051a74c0ba08155))
|
|
11
|
+
* **spec:** declare the Pool's behavior where its tests can claim it ([5ec5e4b](https://github.com/elct9620/kobako/commit/5ec5e4b41f44db05520a251ff6979e71efd27866))
|
|
12
|
+
* **spec:** declare the two descriptors a guest may write to, and how ([c15d09a](https://github.com/elct9620/kobako/commit/c15d09ab563947ab02bbe31129e88686fcff5c24))
|
|
13
|
+
* **spec:** declare the value shapes and the generated concurrency programs ([a06ae5b](https://github.com/elct9620/kobako/commit/a06ae5b24b4615c22c2abaae08c7029218da08bd))
|
|
14
|
+
* **spec:** declare what a Sandbox is built with and what each run leaves behind ([8cc6ac8](https://github.com/elct9620/kobako/commit/8cc6ac81713da7fc6ba6c89bc24da75406579aec))
|
|
15
|
+
* **spec:** declare what installing an Extension composes and resolves ([3cce5a6](https://github.com/elct9620/kobako/commit/3cce5a6551ae8710df71d7520a689c13630ee111))
|
|
16
|
+
* **spec:** declare what the guest's JSON surface reads, writes and refuses ([7e9e3b3](https://github.com/elct9620/kobako/commit/7e9e3b3897ae5f5dc7d6caadeb650302841aa0a6))
|
|
17
|
+
* **spec:** declare what the host checks before a guest runs ([28d5d4b](https://github.com/elct9620/kobako/commit/28d5d4bac0efba2aced1b4449926bd868787bd75))
|
|
18
|
+
* **spec:** declare where a host object becomes a name the guest can reach ([5d88647](https://github.com/elct9620/kobako/commit/5d88647aa922e3a7bb6915864aec700423060358))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **gate:** keep the rendered specifications out of the anchor corpus ([1a24c7f](https://github.com/elct9620/kobako/commit/1a24c7ff1367228998b2f21beca885ab7096a893))
|
|
24
|
+
* **gate:** stop reading a sumi claim as an anchor citation ([b3c74d6](https://github.com/elct9620/kobako/commit/b3c74d6a296dfb7fa5e157ca9ba4678097bfab43))
|
|
25
|
+
* **spec:** let the dispatch feature reach the test that witnesses it ([430394f](https://github.com/elct9620/kobako/commit/430394fa906bf79b8d86d28de7b03e32748516a1))
|
|
26
|
+
* **transport:** keep a bound Class's class-level surface off the guest boundary ([dc00355](https://github.com/elct9620/kobako/commit/dc0035524f2a7b3eba3ec378f8f065c19a17660d))
|
|
27
|
+
|
|
3
28
|
## [0.22.0](https://github.com/elct9620/kobako/compare/v0.21.1...v0.22.0) (2026-08-06)
|
|
4
29
|
|
|
5
30
|
|
data/lib/kobako/3.3/kobako.so
CHANGED
|
Binary file
|
data/lib/kobako/3.4/kobako.so
CHANGED
|
Binary file
|
data/lib/kobako/4.0/kobako.so
CHANGED
|
Binary file
|
|
@@ -73,15 +73,18 @@ module Kobako
|
|
|
73
73
|
|
|
74
74
|
private
|
|
75
75
|
|
|
76
|
-
# Refuse to mint a Capability Handle for
|
|
77
|
-
# a +Binding+ / +Method+ /
|
|
78
|
-
#
|
|
79
|
-
# +Binding#eval+)
|
|
80
|
-
#
|
|
81
|
-
#
|
|
76
|
+
# Refuse to mint a Capability Handle for an object whose reachable
|
|
77
|
+
# surface is not Service behaviour: a +Binding+ / +Method+ /
|
|
78
|
+
# +UnboundMethod+ hands the guest a callable proxy onto host
|
|
79
|
+
# reflection (a returned +Binding+ reaches +Binding#eval+); a +Class+
|
|
80
|
+
# or +Module+ hands over its class-level API (+File.popen+ / +read+,
|
|
81
|
+
# +Kernel.system+), which the owner-based dispatch floor cannot see
|
|
82
|
+
# because a singleton-class owner matches no core-module list. Raising
|
|
83
|
+
# here keeps the rule at the single mint point, so it holds on both the
|
|
84
|
+
# Service-return and the +#run+ host→guest auto-wrap paths.
|
|
82
85
|
def reject_unwrappable!(object)
|
|
83
86
|
case object
|
|
84
|
-
when Binding, Method, UnboundMethod
|
|
87
|
+
when Binding, Method, UnboundMethod, Module
|
|
85
88
|
raise SandboxError, "a #{object.class} cannot cross as a Capability Handle"
|
|
86
89
|
end
|
|
87
90
|
end
|
|
@@ -47,17 +47,18 @@ module Kobako
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
# Guard against ambient reflection methods. A public method whose
|
|
50
|
-
# owner is a META_OWNERS or GADGET_OWNERS module
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
50
|
+
# owner is a META_OWNERS or GADGET_OWNERS module — or a singleton
|
|
51
|
+
# class, the owner of every class-level method (+File.popen+ /
|
|
52
|
+
# +Kernel.system+, unreachable via any fixed core-module list) — is
|
|
53
|
+
# rejected, except CALLABLE_ALLOW on a gadget target (a bound lambda
|
|
54
|
+
# stays invocable). A name with no concrete public method is allowed
|
|
55
|
+
# only when the target opts into it via +respond_to?+ (dynamic
|
|
56
|
+
# +method_missing+ Services), since the dangerous methods are all
|
|
57
|
+
# concretely defined and therefore never reach that branch.
|
|
56
58
|
def ambient_refusal(target, name)
|
|
57
59
|
owner = target.public_method(name).owner
|
|
58
|
-
|
|
59
|
-
return nil
|
|
60
|
-
return nil if gadget && CALLABLE_ALLOW.include?(name)
|
|
60
|
+
return nil unless ambient_owner?(owner, target)
|
|
61
|
+
return nil if GADGET_OWNERS.include?(owner) && CALLABLE_ALLOW.include?(name)
|
|
61
62
|
|
|
62
63
|
"method #{name.inspect} is not a Service method"
|
|
63
64
|
rescue NameError
|
|
@@ -66,6 +67,19 @@ module Kobako
|
|
|
66
67
|
"no public method #{name.inspect} on target"
|
|
67
68
|
end
|
|
68
69
|
|
|
70
|
+
# Whether +name+'s +owner+ is ambient surface rather than Service
|
|
71
|
+
# behaviour: a core meta module, a callable gadget type, or — when
|
|
72
|
+
# +target+ is itself a Class or Module bound as a Service — the
|
|
73
|
+
# singleton class that owns its class-level API (+File.popen+ /
|
|
74
|
+
# +Kernel.system+, unreachable via any fixed core-module list). A plain
|
|
75
|
+
# object's own singleton method (+def obj.x+) stays reachable, since
|
|
76
|
+
# +target+ is not a Module there.
|
|
77
|
+
def ambient_owner?(owner, target)
|
|
78
|
+
META_OWNERS.include?(owner) ||
|
|
79
|
+
GADGET_OWNERS.include?(owner) ||
|
|
80
|
+
(target.is_a?(Module) && owner.singleton_class?)
|
|
81
|
+
end
|
|
82
|
+
|
|
69
83
|
# Consult the target's opt-in narrowing predicate. A bound object may
|
|
70
84
|
# define a private +respond_to_guest?(name)+ to restrict which of its
|
|
71
85
|
# methods the guest reaches; a falsy answer refuses the dispatch. It
|
data/lib/kobako/version.rb
CHANGED
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.
|
|
4
|
+
version: 0.23.0
|
|
5
5
|
platform: x86_64-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Aotokitsuruya
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-08-
|
|
11
|
+
date: 2026-08-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: msgpack
|