kobako 0.23.0 → 0.26.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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.release-please-manifest.json +1 -1
  3. data/CHANGELOG.md +89 -0
  4. data/Cargo.lock +156 -110
  5. data/README.md +19 -18
  6. data/ROADMAP.md +12 -12
  7. data/crates/kobako-runtime/CHANGELOG.md +14 -0
  8. data/crates/kobako-runtime/Cargo.toml +2 -2
  9. data/crates/kobako-runtime/README.md +1 -1
  10. data/crates/kobako-runtime/src/profile.rs +2 -2
  11. data/crates/kobako-transport/CHANGELOG.md +14 -0
  12. data/crates/kobako-transport/Cargo.toml +1 -1
  13. data/crates/kobako-transport/README.md +1 -1
  14. data/crates/kobako-transport/src/abi.rs +2 -0
  15. data/crates/kobako-transport/src/envelope/bytes.rs +6 -0
  16. data/crates/kobako-transport/src/envelope/call.rs +9 -0
  17. data/crates/kobako-transport/src/envelope/error_record.rs +3 -0
  18. data/crates/kobako-transport/src/envelope/fault.rs +5 -0
  19. data/crates/kobako-transport/src/envelope/invocation_frames.rs +9 -0
  20. data/crates/kobako-transport/src/envelope/outcome.rs +11 -0
  21. data/crates/kobako-transport/src/envelope/reply.rs +9 -0
  22. data/crates/kobako-transport/src/envelope/run.rs +3 -0
  23. data/crates/kobako-wasmtime/CHANGELOG.md +16 -0
  24. data/crates/kobako-wasmtime/Cargo.toml +5 -5
  25. data/crates/kobako-wasmtime/README.md +1 -1
  26. data/crates/kobako-wasmtime/src/ambient.rs +2 -0
  27. data/crates/kobako-wasmtime/src/capture.rs +8 -0
  28. data/crates/kobako-wasmtime/src/frames.rs +3 -1
  29. data/crates/kobako-wasmtime/src/guest_mem.rs +8 -0
  30. data/crates/kobako-wasmtime/src/invocation.rs +10 -0
  31. data/crates/kobako-wasmtime/src/trap.rs +6 -0
  32. data/data/kobako.wasm +0 -0
  33. data/ext/kobako/Cargo.toml +1 -1
  34. data/lib/kobako/capture.rb +8 -22
  35. data/lib/kobako/catalog/handles.rb +33 -9
  36. data/lib/kobako/catalog/services.rb +9 -7
  37. data/lib/kobako/codec/encoder.rb +4 -13
  38. data/lib/kobako/codec/handle_walk.rb +1 -1
  39. data/lib/kobako/codec/nesting.rb +43 -0
  40. data/lib/kobako/codec.rb +4 -2
  41. data/lib/kobako/context.rb +8 -8
  42. data/lib/kobako/handle.rb +10 -40
  43. data/lib/kobako/sandbox.rb +5 -0
  44. data/lib/kobako/transport/dispatcher.rb +29 -26
  45. data/lib/kobako/transport/exposure.rb +100 -0
  46. data/lib/kobako/transport/reflection.rb +19 -20
  47. data/lib/kobako/transport/run.rb +5 -2
  48. data/lib/kobako/transport/yielder.rb +6 -4
  49. data/lib/kobako/transport.rb +4 -2
  50. data/lib/kobako/usage.rb +11 -22
  51. data/lib/kobako/version.rb +1 -1
  52. data/release-please-config.json +1 -1
  53. data/sig/kobako/catalog/handles.rbs +2 -0
  54. data/sig/kobako/catalog/services.rbs +1 -1
  55. data/sig/kobako/codec/nesting.rbs +9 -0
  56. data/sig/kobako/context.rbs +1 -1
  57. data/sig/kobako/transport/dispatcher.rbs +7 -7
  58. data/sig/kobako/transport/exposure.rbs +43 -0
  59. data/sig/kobako/transport/reflection.rbs +1 -3
  60. data/sig/kobako/transport.rbs +11 -1
  61. metadata +5 -1
@@ -0,0 +1,9 @@
1
+ module Kobako
2
+ module Codec
3
+ module Nesting
4
+ def self.assert_within_bound!: (untyped value, ?Integer depth) -> void
5
+
6
+ def self.assert_members_within_bound!: (Array[untyped] members, Integer depth) -> void
7
+ end
8
+ end
9
+ end
@@ -9,7 +9,7 @@ module Kobako
9
9
 
10
10
  def bind: (Symbol | String path, untyped object) -> self
11
11
 
12
- def lookup: (Symbol | String path) -> untyped
12
+ def lookup: (Symbol | String path) -> Kobako::Transport::Exposure
13
13
 
14
14
  def eval: (String code) ?{ (Kobako::Context) -> void } -> Kobako::Execution
15
15
 
@@ -14,9 +14,9 @@ module Kobako
14
14
 
15
15
 
16
16
 
17
- def self?.dispatch: (Kobako::Transport::Call call, Kobako::Transport::_ServiceRegistry resolver, Kobako::Codec::_HandleTable handler, Kobako::Transport::_GuestYielder yield_to_guest) -> [bool, String, String?]
17
+ def self?.dispatch: (Kobako::Transport::Call call, Kobako::Transport::_ServiceRegistry resolver, Kobako::Transport::_HandleTable handler, Kobako::Transport::_GuestYielder yield_to_guest) -> [bool, String, String?]
18
18
 
19
- def self?.run: (Kobako::Transport::Call call, Kobako::Transport::_ServiceRegistry resolver, Kobako::Codec::_HandleTable handler, Kobako::Transport::Yielder? yielder) -> untyped
19
+ def self?.run: (Kobako::Transport::Call call, Kobako::Transport::_ServiceRegistry resolver, Kobako::Transport::_HandleTable handler, Kobako::Transport::Yielder? yielder) -> untyped
20
20
 
21
21
  def self?.resolve_call_args: (Kobako::Payload::Arguments arguments, Kobako::Codec::_HandleTable handler, bool carried_handle) -> [Array[untyped], Hash[Symbol, untyped]]
22
22
 
@@ -24,18 +24,18 @@ module Kobako
24
24
 
25
25
  def self?.caught_fault: (StandardError error, Kobako::Transport::Yielder? yielder) -> [String, String]
26
26
 
27
- def self?.invoke: (untyped target, String method, Array[untyped] args, Hash[Symbol, untyped] kwargs, ?Kobako::Transport::Yielder? yielder) -> untyped
27
+ def self?.invoke: (Kobako::Transport::Exposure exposure, String method, Array[untyped] args, Hash[Symbol, untyped] kwargs, ?Kobako::Transport::Yielder? yielder) -> untyped
28
28
 
29
- def self?.reject_unreachable!: (untyped target, Symbol name) -> void
29
+ def self?.reject_unreachable!: (Kobako::Transport::Exposure exposure, Symbol name) -> void
30
30
 
31
31
 
32
32
  def self?.resolve_arg: (untyped value, Kobako::Codec::_HandleTable handler) -> untyped
33
33
 
34
- def self?.resolve_target: (String | Integer target, Kobako::Transport::_ServiceRegistry resolver, Kobako::Codec::_HandleTable handler) -> untyped
34
+ def self?.resolve_target: (String | Integer target, Kobako::Transport::_ServiceRegistry resolver, Kobako::Transport::_HandleTable handler) -> Kobako::Transport::Exposure
35
35
 
36
- def self?.resolve_path: (String path, Kobako::Transport::_ServiceRegistry resolver) -> untyped
36
+ def self?.resolve_path: (String path, Kobako::Transport::_ServiceRegistry resolver) -> Kobako::Transport::Exposure
37
37
 
38
- def self?.require_live_object!: (Integer id, Kobako::Codec::_HandleTable handler) -> untyped
38
+ def self?.resolve_handle: (Integer id, Kobako::Transport::_HandleTable handler) -> Kobako::Transport::Exposure
39
39
 
40
40
  def self?.encode_ok: (untyped value, Kobako::Codec::_HandleTable handler) -> String
41
41
 
@@ -0,0 +1,43 @@
1
+ module Kobako
2
+ module Transport
3
+ class Exposure < Data
4
+ PREDICATE: Symbol
5
+ CLASS_OF: UnboundMethod
6
+ SINGLETON_CLASS_OF: UnboundMethod
7
+ SINGLETON_METHODS: UnboundMethod
8
+ PRIVATE_METHODS: UnboundMethod
9
+ CALLABLE: Set[Symbol]
10
+ NOTHING: Set[Symbol]
11
+
12
+ attr_reader object: untyped
13
+ attr_reader names: Set[Symbol]?
14
+
15
+ def self.new: (object: untyped, names: Set[Symbol]?) -> Exposure
16
+ | (untyped, Set[Symbol]?) -> Exposure
17
+
18
+ def self.of: (untyped object, ?Hash[Module, Set[Symbol]] surfaces) -> Exposure
19
+
20
+ def initialize: (object: untyped, names: Set[Symbol]?) -> void
21
+
22
+ def with: (?object: untyped, ?names: Set[Symbol]?) -> Exposure
23
+
24
+ def ==: (untyped other) -> bool
25
+
26
+ def hash: () -> Integer
27
+
28
+ def exposes?: (Symbol name) -> bool
29
+
30
+ private
31
+
32
+ def self.narrows_itself?: (untyped object, Module klass) -> bool
33
+
34
+ def self.default_names: (untyped object, Module klass, Hash[Module, Set[Symbol]] surfaces) -> Set[Symbol]
35
+
36
+ def self.class_names: (untyped object, Module klass) -> Set[Symbol]
37
+
38
+ def self.with_singleton: (untyped object, Set[Symbol] names) -> Set[Symbol]
39
+
40
+ def self.authored: (Module owner) -> Array[Symbol]
41
+ end
42
+ end
43
+ end
@@ -5,13 +5,11 @@ module Kobako
5
5
  GADGET_OWNERS: Array[Module]
6
6
  CALLABLE_ALLOW: Array[Symbol]
7
7
 
8
- def self?.refusal: (untyped target, Symbol name) -> String?
8
+ def self?.refusal: (Kobako::Transport::Exposure exposure, Symbol name) -> String?
9
9
 
10
10
  def self?.ambient_refusal: (untyped target, Symbol name) -> String?
11
11
 
12
12
  def self?.ambient_owner?: (Module owner, untyped target) -> bool
13
-
14
- def self?.narrowing_refusal: (untyped target, Symbol name) -> String?
15
13
  end
16
14
  end
17
15
  end
@@ -20,7 +20,17 @@ module Kobako
20
20
  # production conformer; modelled structurally so the Transport
21
21
  # layer needs no upward dependency on Catalog.
22
22
  interface _ServiceRegistry
23
- def lookup: (String target) -> untyped
23
+ def lookup: (String target) -> Exposure
24
+ end
25
+
26
+ # The per-invocation Handle table as a dispatch reads it: the codec's
27
+ # allocate / restore pair, plus the Exposure a Handle was minted with,
28
+ # which authorizes a call made through it. Kobako::Catalog::Handles is
29
+ # the production conformer.
30
+ interface _HandleTable
31
+ include Kobako::Codec::_HandleTable
32
+
33
+ def exposure: (Integer id) -> Exposure
24
34
  end
25
35
  end
26
36
  end
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.23.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aotokitsuruya
@@ -117,6 +117,7 @@ files:
117
117
  - lib/kobako/codec/error.rb
118
118
  - lib/kobako/codec/ext_types.rb
119
119
  - lib/kobako/codec/handle_walk.rb
120
+ - lib/kobako/codec/nesting.rb
120
121
  - lib/kobako/codec/state.rb
121
122
  - lib/kobako/codec/utils.rb
122
123
  - lib/kobako/context.rb
@@ -138,6 +139,7 @@ files:
138
139
  - lib/kobako/transport/call.rb
139
140
  - lib/kobako/transport/dispatcher.rb
140
141
  - lib/kobako/transport/error.rb
142
+ - lib/kobako/transport/exposure.rb
141
143
  - lib/kobako/transport/reflection.rb
142
144
  - lib/kobako/transport/run.rb
143
145
  - lib/kobako/transport/yielder.rb
@@ -159,6 +161,7 @@ files:
159
161
  - sig/kobako/codec/error.rbs
160
162
  - sig/kobako/codec/ext_types.rbs
161
163
  - sig/kobako/codec/handle_walk.rbs
164
+ - sig/kobako/codec/nesting.rbs
162
165
  - sig/kobako/codec/state.rbs
163
166
  - sig/kobako/codec/utils.rbs
164
167
  - sig/kobako/context.rbs
@@ -180,6 +183,7 @@ files:
180
183
  - sig/kobako/transport/call.rbs
181
184
  - sig/kobako/transport/dispatcher.rbs
182
185
  - sig/kobako/transport/error.rbs
186
+ - sig/kobako/transport/exposure.rbs
183
187
  - sig/kobako/transport/reflection.rbs
184
188
  - sig/kobako/transport/run.rbs
185
189
  - sig/kobako/transport/yielder.rbs