kobako 0.26.0-aarch64-linux → 0.28.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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.release-please-manifest.json +1 -1
  3. data/CHANGELOG.md +103 -0
  4. data/README.md +156 -118
  5. data/ROADMAP.md +23 -22
  6. data/SECURITY.md +1 -1
  7. data/crates/kobako-runtime/CHANGELOG.md +38 -0
  8. data/crates/kobako-runtime/README.md +10 -12
  9. data/crates/kobako-transport/CHANGELOG.md +35 -0
  10. data/crates/kobako-transport/README.md +43 -27
  11. data/crates/kobako-wasmtime/CHANGELOG.md +51 -0
  12. data/crates/kobako-wasmtime/README.md +8 -10
  13. data/data/kobako.wasm +0 -0
  14. data/lib/kobako/3.3/kobako.so +0 -0
  15. data/lib/kobako/3.4/kobako.so +0 -0
  16. data/lib/kobako/4.0/kobako.so +0 -0
  17. data/lib/kobako/capture.rb +1 -4
  18. data/lib/kobako/catalog/extensions.rb +21 -59
  19. data/lib/kobako/catalog/flags.rb +41 -0
  20. data/lib/kobako/catalog/handles.rb +7 -54
  21. data/lib/kobako/catalog/services.rb +7 -61
  22. data/lib/kobako/catalog/snippets.rb +42 -66
  23. data/lib/kobako/catalog.rb +2 -10
  24. data/lib/kobako/codec/decoder.rb +9 -28
  25. data/lib/kobako/codec/encoder.rb +3 -22
  26. data/lib/kobako/codec/error.rb +6 -27
  27. data/lib/kobako/codec/ext_types.rb +72 -94
  28. data/lib/kobako/codec/handle_walk.rb +65 -130
  29. data/lib/kobako/codec/nesting.rb +3 -8
  30. data/lib/kobako/codec/state.rb +4 -10
  31. data/lib/kobako/codec/utils.rb +6 -34
  32. data/lib/kobako/codec.rb +3 -22
  33. data/lib/kobako/constant_name.rb +8 -0
  34. data/lib/kobako/context.rb +51 -112
  35. data/lib/kobako/errors.rb +51 -127
  36. data/lib/kobako/execution.rb +16 -21
  37. data/lib/kobako/extension.rb +23 -40
  38. data/lib/kobako/handle.rb +7 -12
  39. data/lib/kobako/outcome.rb +51 -80
  40. data/lib/kobako/payload/arguments.rb +1 -16
  41. data/lib/kobako/payload.rb +4 -12
  42. data/lib/kobako/pool.rb +23 -53
  43. data/lib/kobako/runtime.rb +7 -21
  44. data/lib/kobako/sandbox.rb +96 -133
  45. data/lib/kobako/sandbox_options.rb +38 -84
  46. data/lib/kobako/snippet/binary.rb +1 -16
  47. data/lib/kobako/snippet/source.rb +1 -16
  48. data/lib/kobako/snippet.rb +1 -9
  49. data/lib/kobako/transport/call.rb +1 -14
  50. data/lib/kobako/transport/dispatcher.rb +112 -195
  51. data/lib/kobako/transport/error.rb +6 -20
  52. data/lib/kobako/transport/exposure.rb +5 -10
  53. data/lib/kobako/transport/reflection.rb +39 -50
  54. data/lib/kobako/transport/run.rb +17 -71
  55. data/lib/kobako/transport/yielder.rb +21 -73
  56. data/lib/kobako/transport.rb +3 -15
  57. data/lib/kobako/unresolved.rb +4 -11
  58. data/lib/kobako/usage.rb +2 -6
  59. data/lib/kobako/version.rb +1 -1
  60. data/sig/kobako/catalog/extensions.rbs +2 -2
  61. data/sig/kobako/catalog/flags.rbs +17 -0
  62. data/sig/kobako/catalog/services.rbs +0 -6
  63. data/sig/kobako/catalog/snippets.rbs +4 -4
  64. data/sig/kobako/codec/ext_types.rbs +10 -8
  65. data/sig/kobako/codec/handle_walk.rbs +9 -7
  66. data/sig/kobako/codec/utils.rbs +2 -2
  67. data/sig/kobako/codec.rbs +2 -2
  68. data/sig/kobako/constant_name.rbs +3 -0
  69. data/sig/kobako/context.rbs +2 -3
  70. data/sig/kobako/errors.rbs +6 -0
  71. data/sig/kobako/outcome.rbs +6 -8
  72. data/sig/kobako/runtime.rbs +12 -8
  73. data/sig/kobako/sandbox.rbs +4 -0
  74. data/sig/kobako/sandbox_options.rbs +2 -6
  75. data/sig/kobako/transport/dispatcher.rbs +14 -18
  76. data/sig/kobako/transport/reflection.rbs +5 -3
  77. data/sig/kobako/transport/run.rbs +1 -3
  78. data/sig/kobako/transport/yielder.rbs +3 -3
  79. data/sig/kobako/transport.rbs +7 -6
  80. metadata +6 -3
  81. data/rust-toolchain.toml +0 -11
@@ -5,21 +5,23 @@ module Kobako
5
5
  EXT_HANDLE: Integer
6
6
  UNREPRESENTABLE_GUARD_ID: Integer
7
7
 
8
- def self?.build_factory: () -> MessagePack::Factory
8
+ def self.build_factory: () -> MessagePack::Factory
9
9
 
10
- def self?.pack_symbol: (Symbol symbol) -> String
10
+ private
11
11
 
12
- def self?.unpack_symbol: (String payload) -> Symbol
12
+ def self.pack_symbol: (Symbol symbol) -> String
13
13
 
14
- def self?.pack_handle: (Kobako::Handle handle) -> String
14
+ def self.unpack_symbol: (String payload) -> Symbol
15
15
 
16
- def self?.unpack_handle: (String payload, State state) -> Kobako::Handle
16
+ def self.pack_handle: (Kobako::Handle handle) -> String
17
17
 
18
- def self?.register_symbol: (MessagePack::Factory factory) -> void
18
+ def self.unpack_handle: (String payload, State state) -> Kobako::Handle
19
19
 
20
- def self?.register_handle: (MessagePack::Factory factory) -> void
20
+ def self.register_symbol: (MessagePack::Factory factory) -> void
21
21
 
22
- def self?.register_unrepresentable: (MessagePack::Factory factory) -> void
22
+ def self.register_handle: (MessagePack::Factory factory) -> void
23
+
24
+ def self.register_unrepresentable: (MessagePack::Factory factory) -> void
23
25
  end
24
26
 
25
27
  FACTORY: MessagePack::Factory
@@ -3,19 +3,21 @@ module Kobako
3
3
  module HandleWalk
4
4
  MSGPACK_INT_RANGE: Range[Integer]
5
5
 
6
- def self?.representable?: (untyped value, ?Integer depth) -> bool
6
+ def self.representable?: (untyped value, ?Integer depth) -> bool
7
7
 
8
- def self?.deep_wrap: (untyped value, Kobako::Codec::_HandleTable handler, ?Integer depth) -> untyped
8
+ def self.deep_wrap: (untyped value, Kobako::Codec::_HandleTable handles, ?Integer depth) -> untyped
9
9
 
10
- def self?.guard_nesting!: (Integer depth) -> void
10
+ def self.deep_restore: (untyped value, Kobako::Codec::_HandleTable handles) -> untyped
11
11
 
12
- def self?.deep_wrap_hash: (Hash[untyped, untyped] hash, Kobako::Codec::_HandleTable handler, Integer depth) -> Hash[untyped, untyped]
12
+ private
13
13
 
14
- def self?.deep_restore: (untyped value, Kobako::Codec::_HandleTable handler) -> untyped
14
+ def self.guard_nesting!: (Integer depth) -> void
15
15
 
16
- def self?.primitive_type?: (untyped value) -> bool
16
+ def self.deep_wrap_hash: (Hash[untyped, untyped] hash, Kobako::Codec::_HandleTable handles, Integer depth) -> Hash[untyped, untyped]
17
17
 
18
- def self?.container_representable?: (untyped value, Integer depth) -> bool
18
+ def self.primitive_type?: (untyped value) -> bool
19
+
20
+ def self.container_representable?: (untyped value, Integer depth) -> bool
19
21
  end
20
22
  end
21
23
  end
@@ -1,9 +1,9 @@
1
1
  module Kobako
2
2
  module Codec
3
3
  module Utils
4
- def self?.assert_utf8!: (String string, String label) -> void
4
+ def self.assert_utf8!: (String string, String label) -> void
5
5
 
6
- def self?.with_boundary: [T] () { () -> T } -> T
6
+ def self.with_boundary: [T] () { () -> T } -> T
7
7
  end
8
8
  end
9
9
  end
data/sig/kobako/codec.rbs CHANGED
@@ -17,8 +17,8 @@ module Kobako
17
17
  # The Handle allocator/resolver a wire walk works against: alloc
18
18
  # registers a non-wire-representable object and returns its Handle,
19
19
  # fetch resolves a wire Handle id back to the live object. The
20
- # Sandbox's Kobako::Catalog::Handles is the production conformer;
21
- # modelled structurally so the Codec and Transport tiers need no
20
+ # Kobako::Catalog::Handles each invocation mints is the production
21
+ # conformer; modelled structurally so the Codec and Transport tiers need no
22
22
  # upward dependency on Catalog.
23
23
  interface _HandleTable
24
24
  def alloc: (untyped object) -> Kobako::Handle
@@ -0,0 +1,3 @@
1
+ module Kobako
2
+ CONSTANT_NAME: Regexp
3
+ end
@@ -4,6 +4,7 @@ module Kobako
4
4
  runtime: Kobako::Runtime,
5
5
  services: Kobako::Catalog::Services,
6
6
  snippets: Kobako::Catalog::Snippets,
7
+ flags: Kobako::Catalog::Flags,
7
8
  extensions: Kobako::Catalog::Extensions
8
9
  ) -> void
9
10
 
@@ -23,9 +24,7 @@ module Kobako
23
24
 
24
25
  def populate_observability!: (Kobako::Runtime::Snapshot snapshot) -> void
25
26
 
26
- def trap_class_for: (Kobako::TrapError err) -> singleton(Kobako::TrapError)
27
-
28
- def trap_error_for: (Kobako::Runtime::Snapshot snapshot, Symbol verb) -> Kobako::TrapError
27
+ def with_verb: (Kobako::TrapError err, Symbol verb) -> Kobako::TrapError
29
28
 
30
29
  def build_execution: (untyped value, failed: bool) -> Kobako::Execution
31
30
 
@@ -60,12 +60,18 @@ module Kobako
60
60
  class YieldValueError < Error
61
61
  end
62
62
 
63
+ class UnsupportedError < Error
64
+ end
65
+
63
66
  class HandleExhaustedError < SandboxError
64
67
  end
65
68
 
66
69
  class BytecodeError < SandboxError
67
70
  end
68
71
 
72
+ class UnsupportedFlagError < SandboxError
73
+ end
74
+
69
75
  class UndefinedEntrypointError < SandboxError
70
76
  attr_reader name: Symbol?
71
77
  attr_reader available: Array[Symbol]
@@ -6,18 +6,16 @@ module Kobako
6
6
 
7
7
  type panic_fields = [String, String, String, Array[String], Array[String]]
8
8
 
9
- def self?.reify: (Symbol kind, String payload, panic_fields? panic, ?entrypoint: Symbol?) -> Kobako::Codec::wire_value
9
+ def self.reify: (String payload, panic_fields? panic, ?entrypoint: Symbol?) -> Kobako::Codec::wire_value
10
10
 
11
- # Everything below is private_class_method at runtime; RBS cannot mark a
12
- # `self?` method private, so the declarations stay visible to the checker.
13
- def self?.panic_error: (panic_fields panic, Symbol? entrypoint) -> (SandboxError | ServiceError)
11
+ private
14
12
 
15
- def self?.error_class: (String origin, String klass) -> (singleton(SandboxError) | singleton(ServiceError))
13
+ def self.panic_error: (panic_fields panic, Symbol? entrypoint) -> (SandboxError | ServiceError)
16
14
 
17
- def self?.trap_error: (Symbol kind) -> TrapError
15
+ def self.error_class: (String origin, String klass) -> (singleton(SandboxError) | singleton(ServiceError))
18
16
 
19
- def self?.decode_value: (String payload) -> Kobako::Codec::wire_value
17
+ def self.decode_value: (String payload) -> Kobako::Codec::wire_value
20
18
 
21
- def self?.wire_error: (String message, ?diagnostic: String?) -> Transport::Error
19
+ def self.wire_error: (String message, ?diagnostic: String?) -> Transport::Error
22
20
  end
23
21
  end
@@ -15,20 +15,28 @@ module Kobako
15
15
  def eval: (
16
16
  Kobako::Transport::dispatch_proc dispatch,
17
17
  Array[String] paths,
18
- String source,
19
- Array[Kobako::Catalog::Snippets::tuple] snippets
18
+ Array[Kobako::Catalog::Snippets::tuple] snippets,
19
+ Array[Kobako::Catalog::Flags::tuple] flags,
20
+ String source
20
21
  ) -> Kobako::Runtime::Snapshot
21
22
 
22
23
  def run: (
23
24
  Kobako::Transport::dispatch_proc dispatch,
24
25
  Array[String] paths,
25
26
  Array[Kobako::Catalog::Snippets::tuple] snippets,
27
+ Array[Kobako::Catalog::Flags::tuple] flags,
26
28
  String entrypoint,
27
29
  String payload
28
30
  ) -> Kobako::Runtime::Snapshot
29
31
 
30
32
  def profile: () -> Symbol
31
33
 
34
+ def compile: (
35
+ Array[String] paths,
36
+ Array[Kobako::Catalog::Snippets::tuple] snippets,
37
+ Array[Kobako::Catalog::Flags::tuple] flags
38
+ ) -> Array[String]?
39
+
32
40
  # Frame-scoped guest re-entry handle the ext hands the dispatch Proc as
33
41
  # its last argument — the production conformer of
34
42
  # +Kobako::Transport::_GuestYielder+, answering the Yield Reply already
@@ -39,13 +47,9 @@ module Kobako
39
47
 
40
48
  # One invocation's result — the whole Snapshot the driver produced.
41
49
  class Snapshot
42
- def outcome: () -> [Symbol, String, Kobako::Outcome::panic_fields?]
43
-
44
- def trapped?: () -> bool
45
-
46
- def trap_kind: () -> Symbol?
50
+ def outcome: () -> [String, Kobako::Outcome::panic_fields?]
47
51
 
48
- def trap_message: () -> String?
52
+ def trap_error: () -> Kobako::TrapError?
49
53
 
50
54
  def wall_time: () -> Float
51
55
 
@@ -27,6 +27,8 @@ module Kobako
27
27
  def preload: (code: String, name: Symbol | String) -> Kobako::Sandbox
28
28
  | (binary: String) -> Kobako::Sandbox
29
29
 
30
+ def flag: (Symbol | String name, ?String value, ?advisory: bool) -> Kobako::Sandbox
31
+
30
32
  def run: (Symbol | String target, *untyped args, **untyped kwargs) ?{ (Kobako::Context) -> void } -> Kobako::Execution
31
33
 
32
34
  def eval: (String code) ?{ (Kobako::Context) -> void } -> Kobako::Execution
@@ -37,6 +39,8 @@ module Kobako
37
39
 
38
40
  def new_invocation: () -> Kobako::Context
39
41
 
42
+ def refuse_once_invoked!: (String verb) -> void
43
+
40
44
  def begin_invocation!: () -> void
41
45
  end
42
46
  end
@@ -39,12 +39,8 @@ module Kobako
39
39
 
40
40
  def normalize_timeout: ((Float | Integer)? timeout) -> Float?
41
41
 
42
- def normalize_memory_limit: (Integer? memory_limit) -> Integer?
42
+ def normalize_byte_limit: (Integer? limit, String name) -> Integer?
43
43
 
44
- def normalize_output_limit: (Integer? limit, String name) -> Integer?
45
-
46
- def normalize_profile: (untyped profile) -> Symbol
47
-
48
- def normalize_gvl: (untyped gvl) -> Symbol
44
+ def normalize_choice: (untyped value, Array[Symbol] choices, String name) -> Symbol
49
45
  end
50
46
  end
@@ -11,37 +11,33 @@ module Kobako
11
11
 
12
12
  OWN_FAULTS: Hash[singleton(StandardError), String]
13
13
 
14
+ def self.dispatch: (Kobako::Transport::Call call, Kobako::Transport::_ServiceResolver resolver, Kobako::Transport::_HandleTable handles, Kobako::Transport::_GuestYielder guest_yielder) -> [bool, String, String?]
14
15
 
16
+ private
15
17
 
18
+ def self.run: (Kobako::Transport::Call call, Kobako::Transport::_ServiceResolver resolver, Kobako::Transport::_HandleTable handles, Kobako::Transport::Yielder? yielder) -> untyped
16
19
 
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?]
20
+ def self.decode_arguments: (String payload) -> [Kobako::Payload::Arguments, bool]
18
21
 
19
- def self?.run: (Kobako::Transport::Call call, Kobako::Transport::_ServiceRegistry resolver, Kobako::Transport::_HandleTable handler, Kobako::Transport::Yielder? yielder) -> untyped
22
+ def self.resolve_call_args: (Kobako::Payload::Arguments arguments, Kobako::Codec::_HandleTable handles, bool carried_handle) -> [Array[untyped], Hash[Symbol, untyped]]
20
23
 
21
- def self?.resolve_call_args: (Kobako::Payload::Arguments arguments, Kobako::Codec::_HandleTable handler, bool carried_handle) -> [Array[untyped], Hash[Symbol, untyped]]
24
+ def self.caught_fault: (StandardError error, Kobako::Transport::Yielder? yielder) -> [String, String]
22
25
 
23
- def self?.decode_arguments: (String payload) -> [Kobako::Payload::Arguments, bool]
26
+ def self.invoke: (Kobako::Transport::Exposure exposure, String method, Array[untyped] args, Hash[Symbol, untyped] kwargs, Kobako::Transport::Yielder? yielder) -> untyped
24
27
 
25
- def self?.caught_fault: (StandardError error, Kobako::Transport::Yielder? yielder) -> [String, String]
28
+ def self.reject_unreachable!: (Kobako::Transport::Exposure exposure, Symbol name) -> void
26
29
 
27
- def self?.invoke: (Kobako::Transport::Exposure exposure, String method, Array[untyped] args, Hash[Symbol, untyped] kwargs, ?Kobako::Transport::Yielder? yielder) -> untyped
30
+ def self.resolve_arg: (untyped value, Kobako::Codec::_HandleTable handles) -> untyped
28
31
 
29
- def self?.reject_unreachable!: (Kobako::Transport::Exposure exposure, Symbol name) -> void
32
+ def self.resolve_target: (String | Integer target, Kobako::Transport::_ServiceResolver resolver, Kobako::Transport::_HandleTable handles) -> Kobako::Transport::Exposure
30
33
 
34
+ def self.resolve_path: (String path, Kobako::Transport::_ServiceResolver resolver) -> Kobako::Transport::Exposure
31
35
 
32
- def self?.resolve_arg: (untyped value, Kobako::Codec::_HandleTable handler) -> untyped
36
+ def self.resolve_handle: (Integer id, Kobako::Transport::_HandleTable handles) -> Kobako::Transport::Exposure
33
37
 
34
- def self?.resolve_target: (String | Integer target, Kobako::Transport::_ServiceRegistry resolver, Kobako::Transport::_HandleTable handler) -> Kobako::Transport::Exposure
38
+ def self.encode_ok: (untyped value, Kobako::Codec::_HandleTable handles) -> String
35
39
 
36
- def self?.resolve_path: (String path, Kobako::Transport::_ServiceRegistry resolver) -> Kobako::Transport::Exposure
37
-
38
- def self?.resolve_handle: (Integer id, Kobako::Transport::_HandleTable handler) -> Kobako::Transport::Exposure
39
-
40
- def self?.encode_ok: (untyped value, Kobako::Codec::_HandleTable handler) -> String
41
-
42
- def self?.wrap_as_handle: (untyped value, Kobako::Codec::_HandleTable handler) -> Kobako::Handle
43
-
44
- def self?.fault: (String type, String message) -> [String, String]
40
+ def self.fault: (String type, String message) -> [String, String]
45
41
  end
46
42
  end
47
43
  end
@@ -5,11 +5,13 @@ module Kobako
5
5
  GADGET_OWNERS: Array[Module]
6
6
  CALLABLE_ALLOW: Array[Symbol]
7
7
 
8
- def self?.refusal: (Kobako::Transport::Exposure exposure, Symbol name) -> String?
8
+ def self.refusal: (Kobako::Transport::Exposure exposure, Symbol name) -> String?
9
9
 
10
- def self?.ambient_refusal: (untyped target, Symbol name) -> String?
10
+ private
11
11
 
12
- def self?.ambient_owner?: (Module owner, untyped target) -> bool
12
+ def self.ambient_refusal: (untyped target, Symbol name) -> String?
13
+
14
+ def self.ambient_owner?: (Module owner, untyped target) -> bool
13
15
  end
14
16
  end
15
17
  end
@@ -1,8 +1,6 @@
1
1
  module Kobako
2
2
  module Transport
3
3
  class Run < Data
4
- NAME_PATTERN: Regexp
5
-
6
4
  attr_reader entrypoint: Symbol
7
5
  attr_reader args: Array[Kobako::Codec::wire_value]
8
6
  attr_reader kwargs: Hash[Symbol, Kobako::Codec::wire_value]
@@ -11,7 +9,7 @@ module Kobako
11
9
 
12
10
  def initialize: (entrypoint: Symbol | String, ?args: Array[untyped], ?kwargs: Hash[untyped, untyped]) -> void
13
11
 
14
- def payload: (Kobako::Codec::_HandleTable handler) -> String
12
+ def payload: (Kobako::Codec::_HandleTable handles) -> String
15
13
 
16
14
  private
17
15
 
@@ -1,13 +1,13 @@
1
1
  module Kobako
2
2
  module Transport
3
3
  class Yielder
4
- @yield_to_guest: Kobako::Transport::_GuestYielder
4
+ @guest_yielder: Kobako::Transport::_GuestYielder
5
5
  @break_tag: Symbol
6
- @handler: Kobako::Codec::_HandleTable
6
+ @handles: Kobako::Codec::_HandleTable
7
7
  @active: bool
8
8
  @raised: Kobako::BlockError?
9
9
 
10
- def initialize: (Kobako::Transport::_GuestYielder yield_to_guest, Symbol break_tag, Kobako::Codec::_HandleTable handler) -> void
10
+ def initialize: (Kobako::Transport::_GuestYielder guest_yielder, Symbol break_tag, Kobako::Codec::_HandleTable handles) -> void
11
11
 
12
12
  def fault_text: (Exception error) -> String?
13
13
 
@@ -1,7 +1,8 @@
1
1
  module Kobako
2
2
  module Transport
3
3
  # The guest re-entry callable a dispatch hands to a Yielder: invoked
4
- # with the encoded yield args, it returns the encoded Yield Reply.
4
+ # with the encoded yield args, it returns the decoded Yield Reply as an
5
+ # +[arm, body, klass]+ triple.
5
6
  # The ext's Kobako::Runtime::GuestYielder is the production conformer;
6
7
  # modelled structurally so the Transport layer needs no upward
7
8
  # dependency on Runtime.
@@ -15,11 +16,11 @@ module Kobako
15
16
  # consumer (Runtime) cannot declare it differently.
16
17
  type dispatch_proc = ^(String | Integer, String, bool, String, _GuestYielder) -> [bool, String, String?]
17
18
 
18
- # The Service registry a dispatch resolves constant-path targets
19
- # against. The Sandbox's Kobako::Catalog::Services is the
20
- # production conformer; modelled structurally so the Transport
21
- # layer needs no upward dependency on Catalog.
22
- interface _ServiceRegistry
19
+ # What a dispatch resolves constant-path targets against. The
20
+ # invocation's Kobako::Context is the production conformer, so its
21
+ # overrides answer before the Sandbox's bindings; modelled structurally
22
+ # so the Transport layer needs no upward dependency on Orchestration.
23
+ interface _ServiceResolver
23
24
  def lookup: (String target) -> Exposure
24
25
  end
25
26
 
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.26.0
4
+ version: 0.28.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-09-15 00:00:00.000000000 Z
11
+ date: 2026-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -53,6 +53,7 @@ files:
53
53
  - lib/kobako/capture.rb
54
54
  - lib/kobako/catalog.rb
55
55
  - lib/kobako/catalog/extensions.rb
56
+ - lib/kobako/catalog/flags.rb
56
57
  - lib/kobako/catalog/handles.rb
57
58
  - lib/kobako/catalog/services.rb
58
59
  - lib/kobako/catalog/snippets.rb
@@ -65,6 +66,7 @@ files:
65
66
  - lib/kobako/codec/nesting.rb
66
67
  - lib/kobako/codec/state.rb
67
68
  - lib/kobako/codec/utils.rb
69
+ - lib/kobako/constant_name.rb
68
70
  - lib/kobako/context.rb
69
71
  - lib/kobako/errors.rb
70
72
  - lib/kobako/execution.rb
@@ -92,11 +94,11 @@ files:
92
94
  - lib/kobako/usage.rb
93
95
  - lib/kobako/version.rb
94
96
  - release-please-config.json
95
- - rust-toolchain.toml
96
97
  - sig/kobako.rbs
97
98
  - sig/kobako/capture.rbs
98
99
  - sig/kobako/catalog.rbs
99
100
  - sig/kobako/catalog/extensions.rbs
101
+ - sig/kobako/catalog/flags.rbs
100
102
  - sig/kobako/catalog/handles.rbs
101
103
  - sig/kobako/catalog/services.rbs
102
104
  - sig/kobako/catalog/snippets.rbs
@@ -109,6 +111,7 @@ files:
109
111
  - sig/kobako/codec/nesting.rbs
110
112
  - sig/kobako/codec/state.rbs
111
113
  - sig/kobako/codec/utils.rbs
114
+ - sig/kobako/constant_name.rbs
112
115
  - sig/kobako/context.rbs
113
116
  - sig/kobako/errors.rbs
114
117
  - sig/kobako/execution.rbs
data/rust-toolchain.toml DELETED
@@ -1,11 +0,0 @@
1
- # Pin the Rust toolchain so local builds and CI stay byte-identical.
2
- # The wasm32-wasip1 crt1-command.o references __wasi_init_tp from 1.96 onward;
3
- # vendored wasi-sdk 33's libc.a supplies that symbol, so the two move together.
4
- # Bump this in lockstep with the wasi-sdk toolchain beni vendors
5
- # (`rake beni:build`, wired in the Rakefile's Beni::Tasks block).
6
- # This file is the single source of the channel; the CI workflows read it.
7
- [toolchain]
8
- channel = "stable"
9
- components = ["clippy", "rustfmt"]
10
- targets = ["wasm32-wasip1"]
11
- profile = "minimal"