kobako 0.8.0-aarch64-linux → 0.9.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: b96bfbd5ac2202cd0231a33ff1cabfc026a43ae0e9e63cb9fa41ad3ae5d2146b
4
- data.tar.gz: ec09bc9e303b0c47db458384af838f04471cac6e001e56bff4eeb2b3a4d0186c
3
+ metadata.gz: c2f2a9ee258d503239fa5f445fe20b76f21127f38d7cd62b9c7201d3e059bdd9
4
+ data.tar.gz: 41aefe9af3d9def63b4a4a371d44a640a5185e070bb178ff2de7a85ff4670a1e
5
5
  SHA512:
6
- metadata.gz: 295a4114b872301d7fa766ce5915ee56ee139c134d81291146aa1b47607d0f1e904dcec8a4eb0eb687927f22f09cde163c5eb52a4806d310b3405be91a846fc3
7
- data.tar.gz: 119f2ea27c2e2ab94bff8d5a69ad6c43b9d07a7d78971c8c0a844649ba39f655a63f286e57a9269569a17f81814654a827ac53796b62f3f15a0085657e340796
6
+ metadata.gz: f5ee53c62e821dcb6d10dec5eefc212afab08d26da02882e4204758f728d0640626fdcf0658a5cc03eb8ae20ca910e25975e7bbe5d04503d4c311389c1b015ae
7
+ data.tar.gz: 11aaf9cc2b6bb1184975ffb0b5bc8142633b2b98f015e90df6ef363ccd2beb969ace8a9dfd429e1b13fd2512495812bc3350d37909b9fe59cf8862b3fb504590
@@ -1 +1 @@
1
- {".":"0.8.0","wasm/kobako-core":"0.2.0"}
1
+ {".":"0.9.0","wasm/kobako-core":"0.4.0","wasm/kobako":"0.4.0","wasm/kobako-io":"0.4.0","wasm/kobako-regexp":"0.4.0"}
data/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.0](https://github.com/elct9620/kobako/compare/v0.8.0...v0.9.0) (2026-06-10)
4
+
5
+
6
+ ### Features
7
+
8
+ * **regexp:** add Kernel#=~ fallback returning nil ([d461781](https://github.com/elct9620/kobako/commit/d4617815b8e888a09a548c7f4664819cdddc34c8))
9
+ * **regexp:** add regexp-aware String#[]= ([34807f5](https://github.com/elct9620/kobako/commit/34807f5ba5f6e17efff27af3c5c24ae42b0b651d))
10
+ * **regexp:** add Regexp.last_match and last_match= ([03649e8](https://github.com/elct9620/kobako/commit/03649e81cfda0c43ac22777f70ea38a0ac4a93c7))
11
+ * **regexp:** add Regexp#named_captures and #names ([7cf018d](https://github.com/elct9620/kobako/commit/7cf018d39529be1d1384297b1b38b9d1670523e7))
12
+ * **regexp:** add String#slice! ([2857e0e](https://github.com/elct9620/kobako/commit/2857e0ee55df9f6295a25391ff76613b8dd5d555))
13
+ * **regexp:** align Regexp#match position handling with MRI ([c448c94](https://github.com/elct9620/kobako/commit/c448c9402a5a78076b5a81be0e07b7e1c90b1014))
14
+ * **regexp:** align Regexp#to_s flag rendering with MRI ([67d0414](https://github.com/elct9620/kobako/commit/67d04145f116a72a0f84d0ddf6674559e97046e8))
15
+ * **regexp:** copy the compiled pattern on Regexp dup/clone ([be97ea1](https://github.com/elct9620/kobako/commit/be97ea1cbd9556196f06229cd17d0288c062f133))
16
+ * **regexp:** copy the match snapshot on MatchData dup/clone ([0719d99](https://github.com/elct9620/kobako/commit/0719d99c41df9ddc8905580d61b32f0e6d88b6ba))
17
+ * **regexp:** define RegexpError in the gem instead of borrowing it ([ca57ca6](https://github.com/elct9620/kobako/commit/ca57ca6effb93ad05a175f2641f4b15aa971e31c))
18
+ * **regexp:** escape the source in Regexp#inspect ([9142d6c](https://github.com/elct9620/kobako/commit/9142d6cd32e08271639548af7801284e5d198892))
19
+ * **regexp:** expand backreferences and Hash in gsub/sub replacements ([8a0bc2d](https://github.com/elct9620/kobako/commit/8a0bc2dda8fb46a91fb1a5ee1c7482d6da9dffee))
20
+ * **regexp:** forbid MatchData.new ([5e2b3f5](https://github.com/elct9620/kobako/commit/5e2b3f527ff68dd118c370bb1b0bd01bf3dc4f8f))
21
+ * **regexp:** honour MatchData#named_captures(symbolize_names:) ([2a754d3](https://github.com/elct9620/kobako/commit/2a754d3d2ca3d4159471c8f9d17cc71ac59e0543))
22
+ * **regexp:** honour the position argument in String#index ([4dfbb41](https://github.com/elct9620/kobako/commit/4dfbb41086b302eada56efea4cbbfd6579adbdab))
23
+ * **regexp:** memoize compiled patterns per invocation ([f764d66](https://github.com/elct9620/kobako/commit/f764d66a574da51b9e714db1ae6d917cce4cf611))
24
+ * **regexp:** raise IndexError for out-of-range MatchData#begin/#end/#offset ([85fc8d6](https://github.com/elct9620/kobako/commit/85fc8d67d0fcc137a7f43695ead34317d557ec1a))
25
+ * **regexp:** reproduce the C match-family operand handling ([9e30d2d](https://github.com/elct9620/kobako/commit/9e30d2d6d6ddd42c84d5e2fb55cc2c06076c4fd4))
26
+ * **regexp:** set the $+ last-group match global ([b65a424](https://github.com/elct9620/kobako/commit/b65a42434b2edd5b01ed879b09895d17ff778888))
27
+ * **regexp:** support length and Range forms of MatchData#[] ([7ac4dee](https://github.com/elct9620/kobako/commit/7ac4deec79a215b35fdc2786522145ce6d34263c))
28
+ * **regexp:** yield the MatchData to a block in Regexp#match / String#match ([f5a6e53](https://github.com/elct9620/kobako/commit/f5a6e53ec5993237805c2360fa70684f84acf6b8))
29
+ * **wasm:** split the Guest Binary into a pure default and regexp variants ([21695b1](https://github.com/elct9620/kobako/commit/21695b1cd527e334c68f9730f01f92fef057e52f))
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * **regexp:** align String#=~ with MRI semantics ([c8f3e70](https://github.com/elct9620/kobako/commit/c8f3e70c9f0797c614aab1639934d280fe20b90a))
35
+ * **regexp:** bound backtracking, clamp match positions, harden engine errors ([0177f71](https://github.com/elct9620/kobako/commit/0177f71cccf61c140912aab3c2e639286fd768d0))
36
+ * **regexp:** correct String#split group and zero-width handling ([c0150bc](https://github.com/elct9620/kobako/commit/c0150bc04c5dccdd430b173219c42c8f607112d1))
37
+ * **regexp:** honour capturing groups and the limit arg in String#split ([66e7398](https://github.com/elct9620/kobako/commit/66e73984f8318b582cc7aa0db48deacfb10e8671))
38
+ * **regexp:** make Regexp.last_match= refresh the numbered globals ([e47b257](https://github.com/elct9620/kobako/commit/e47b257715b73263ae5d1f9bae67442197330ee0))
39
+ * **regexp:** name the pattern in match-time errors and snap String#index pos ([5835f42](https://github.com/elct9620/kobako/commit/5835f42ae6b27e2a2a0d0bc5bf8023024a20642a))
40
+ * **regexp:** stop escaping the slash in Regexp.escape ([6c6f17a](https://github.com/elct9620/kobako/commit/6c6f17a63dbddf30ccdba19ddf3c9b7fbb7772cd))
41
+
3
42
  ## [0.8.0](https://github.com/elct9620/kobako/compare/v0.7.0...v0.8.0) (2026-06-05)
4
43
 
5
44
 
data/README.md CHANGED
@@ -322,6 +322,8 @@ Order-of-magnitude figures on macOS arm64, Ruby 3.4.7, YJIT off. Absolute values
322
322
 
323
323
  Construct one Sandbox at boot so the ~600 ms JIT cost lands off the request hot path. `ext/` does not release the GVL during wasmtime execution, so wasm work is GVL-serialized: aggregate throughput stays around 7-8k `#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.
324
324
 
325
+ 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.
326
+
325
327
  ```bash
326
328
  bundle exec rake bench # six gated regression benchmarks (~5-8 min)
327
329
  ```
@@ -335,7 +337,7 @@ bin/setup # install dependencies
335
337
  bundle exec rake # default: compile + test + rubocop + steep
336
338
  ```
337
339
 
338
- Building from source requires a WASI-capable Rust toolchain in addition to the standard host toolchain; the first compile walks the full vendor / mruby / wasm chain. See [`CLAUDE.md`](CLAUDE.md) for the rake task map and pipeline layout. `bin/console` opens an IRB session with the gem preloaded; `bundle exec rake install` installs the local checkout as a gem.
340
+ Building from source requires a WASI-capable Rust toolchain in addition to the standard host toolchain; the first compile walks the full chain — the [beni](https://github.com/elct9620/beni) gem vendors wasi-sdk + mruby and builds `libmruby.a` (`rake beni:build`), then `rake wasm:build` produces the Guest Binary. See [`CLAUDE.md`](CLAUDE.md) for the rake task map and pipeline layout. `bin/console` opens an IRB session with the gem preloaded; `bundle exec rake install` installs the local checkout as a gem.
339
341
 
340
342
  ## Contributing
341
343
 
data/data/kobako.wasm CHANGED
Binary file
Binary file
Binary file
Binary file
@@ -28,7 +28,7 @@ module Kobako
28
28
  # installs ({docs/behavior.md B-12}[link:../../../docs/behavior.md]).
29
29
  # The registry holds an injected +Catalog::Handles+ reference so
30
30
  # dispatch target resolution and host→guest auto-wrap share the same
31
- # Sandbox-owned allocator (docs/behavior.md B-19).
31
+ # Sandbox-owned allocator ({docs/behavior.md B-19}[link:../../../docs/behavior.md]).
32
32
  class Namespaces
33
33
  # Build a fresh registry. +handler+ is an internal seam that injects
34
34
  # a pre-configured +Catalog::Handles+; tests pass one whose +next_id+
@@ -40,7 +40,8 @@ module Kobako
40
40
  @sealed = false
41
41
  end
42
42
 
43
- # Declare or retrieve the Namespace named +name+ (idempotent — docs/behavior.md B-10).
43
+ # Declare or retrieve the Namespace named +name+ (idempotent —
44
+ # {docs/behavior.md B-10}[link:../../../docs/behavior.md]).
44
45
  # +name+ is a constant-form name as a +Symbol+ or +String+ (must satisfy
45
46
  # +Namespace::NAME_PATTERN+). Returns the +Kobako::Namespace+ for that
46
47
  # name, creating it if it does not exist. Raises +ArgumentError+ when
@@ -77,9 +77,7 @@ module Kobako
77
77
  )
78
78
  end
79
79
 
80
- # Symbol-to-name packer extracted to a real method so Steep can
81
- # resolve the proc shape without tripping on +lambda(&:name)+'s
82
- # +Symbol#to_proc+ inference path.
80
+ # Symbol-to-name packer for the ext-0x00 registration.
83
81
  def pack_symbol(symbol)
84
82
  symbol.name
85
83
  end
@@ -148,8 +146,7 @@ module Kobako
148
146
  # method when a nested ext 0x02 appears inside +details+. The recursion
149
147
  # is bounded by msgpack nesting depth — identical to nested Array /
150
148
  # Hash payloads — so no extra guard is needed. Do not switch back to
151
- # +factory.load+ to "simplify": that path bypasses UTF-8 validation
152
- # and re-opens the Decoder's special case for Fault (removed in M5).
149
+ # +factory.load+ to "simplify": that path bypasses UTF-8 validation.
153
150
  def unpack_fault(payload)
154
151
  Decoder.decode(payload) do |map|
155
152
  raise InvalidType, "Fault payload must be a map" unless map.is_a?(Hash)
@@ -43,14 +43,12 @@ module Kobako
43
43
  # stays {Kobako::Codec::Error} and never leaks +ArgumentError+ from
44
44
  # the Ruby standard library.
45
45
  #
46
- # Most construction sites no longer reach for this directly: a value
47
- # object built inside a {Decoder.decode} block has its
48
- # +ArgumentError+ mapped to {InvalidType} by the decoder's own
49
- # rescue. The lone remaining caller is {Factory#unpack_handle}, which
50
- # builds +Handle.restore+ from a raw 4-byte fixext payload without a
51
- # {Decoder.decode} call. Do not use it for general-purpose validation
52
- # outside the codec boundary — host-layer +ArgumentError+ values
53
- # should propagate unchanged.
46
+ # Reach for this only where a value object is constructed outside a
47
+ # {Decoder.decode} block, whose rescue already performs the same
48
+ # mapping (worked example: {Factory#unpack_handle} building
49
+ # +Handle.restore+ from a raw fixext payload). Do not use it for
50
+ # general-purpose validation outside the codec boundary
51
+ # host-layer +ArgumentError+ values should propagate unchanged.
54
52
  def with_boundary
55
53
  yield
56
54
  rescue ::ArgumentError => e
@@ -143,8 +141,7 @@ module Kobako
143
141
  end
144
142
  end
145
143
 
146
- # Predicate split out of {representable?} for cyclomatic
147
- # budget — the closed-set non-container branch. Returns +true+ for
144
+ # The non-container branch of {representable?}: returns +true+ for
148
145
  # the scalar leaves and an existing Handle. Not part of the
149
146
  # public surface; reach for {representable?} instead.
150
147
  def primitive_type?(value)
@@ -155,11 +152,10 @@ module Kobako
155
152
  end
156
153
  end
157
154
 
158
- # Predicate split out of {representable?} for cyclomatic
159
- # budget the container branch. Recurses into Array elements and
160
- # Hash key+value pairs through the public {representable?}.
161
- # Not part of the public surface; reach for {representable?}
162
- # instead.
155
+ # The container branch of {representable?}: recurses into Array
156
+ # elements and Hash key+value pairs through the public
157
+ # {representable?}. Not part of the public surface; reach for
158
+ # {representable?} instead.
163
159
  def container_representable?(value)
164
160
  case value
165
161
  when ::Array then value.all? { |element| Utils.representable?(element) }
data/lib/kobako/errors.rb CHANGED
@@ -26,9 +26,9 @@ module Kobako
26
26
  # * {SetupError} — construction layer. Raised by `Kobako::Sandbox.new`
27
27
  # when the wasm runtime cannot be built from the
28
28
  # configured +wasm_path+ before any invocation runs
29
- # (docs/behavior.md E-40 / E-41). Not an invocation
30
- # outcome, so it never passes through the two-step
31
- # attribution decision.
29
+ # ({docs/behavior.md E-40 / E-41}[link:../../docs/behavior.md]).
30
+ # Not an invocation outcome, so it never passes
31
+ # through the two-step attribution decision.
32
32
  #
33
33
  # Subclasses pinned by docs/behavior.md Error Classes:
34
34
  #
data/lib/kobako/fault.rb CHANGED
@@ -22,10 +22,8 @@ module Kobako
22
22
  # exception class (RuntimeError, ArgumentError, Kobako::ServiceError, ...)
23
23
  # is the responsibility of the dispatch layer, not the codec.
24
24
  #
25
- # Built on the +class X < Data.define(...)+ subclass form so the
26
- # class body is fully Steep-visible; ruby/rbs upstream documents
27
- # this as the Steep-friendly shape and the +Style/DataInheritance+
28
- # cop is disabled on that basis (see +.rubocop.yml+).
25
+ # Built on the +class X < Data.define(...)+ subclass form (the
26
+ # Steep-friendly shape see +lib/kobako/outcome/panic.rb+).
29
27
  class Fault < Data.define(:type, :message, :details)
30
28
  VALID_TYPES = %w[runtime argument undefined].freeze
31
29
 
@@ -292,9 +292,9 @@ module Kobako
292
292
  #
293
293
  # The yielded block must return a +Kobako::Snapshot+ — i.e. the
294
294
  # value of +Runtime#eval+ / +#run+ (SPEC.md Internal Concepts →
295
- # Snapshot). The success path unpacks every observable from the
296
- # Snapshot in one go: +#stdout+ / +#stderr+ pack into +Capture+,
297
- # +#usage+ packs into +Usage+, +#return_bytes+ feeds +Outcome.decode+.
295
+ # Snapshot). The success path unpacks +#stdout+ / +#stderr+ into
296
+ # +Capture+ and feeds +#return_bytes+ to +Outcome.decode+; usage is
297
+ # populated by the +ensure+ readout ({#read_usage!}) on every outcome.
298
298
  # The rescue chain is the single trap-translation boundary —
299
299
  # configured-cap paths
300
300
  # ({docs/behavior.md E-19 / E-20}[link:../../docs/behavior.md])
@@ -117,7 +117,7 @@ module Kobako
117
117
  end
118
118
  end
119
119
 
120
- # {docs/behavior.md B-16}[link:../../../docs/behavior.md] — An Kobako::Handle arriving as a positional or keyword
120
+ # {docs/behavior.md B-16}[link:../../../docs/behavior.md] — A Kobako::Handle arriving as a positional or keyword
121
121
  # argument identifies a host-side object previously allocated by a prior
122
122
  # transport call's Handle wrap (B-14). Resolve it back to the Ruby object before
123
123
  # the dispatch reaches +public_send+.
data/lib/kobako/usage.rb CHANGED
@@ -28,10 +28,8 @@ module Kobako
28
28
  # consumed. Before the first invocation +Sandbox#usage+ returns the
29
29
  # pre-invocation sentinel +Kobako::Usage::EMPTY+.
30
30
  #
31
- # Built on the +class X < Data.define(...)+ subclass form so the
32
- # class body is fully Steep-visible; ruby/rbs upstream documents this
33
- # as the Steep-friendly shape and the +Style/DataInheritance+ cop is
34
- # disabled on that basis (see +.rubocop.yml+).
31
+ # Built on the +class X < Data.define(...)+ subclass form (the
32
+ # Steep-friendly shape see +lib/kobako/outcome/panic.rb+).
35
33
  class Usage < Data.define(:wall_time, :memory_peak)
36
34
  # Pre-invocation sentinel ({docs/behavior.md B-35}[link:../../docs/behavior.md]).
37
35
  # Reused by +Sandbox+ before any invocation has run so callers do not
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kobako
4
- VERSION = "0.8.0"
4
+ VERSION = "0.9.0"
5
5
  end
@@ -6,7 +6,8 @@
6
6
  ".": {
7
7
  "component": "kobako",
8
8
  "include-component-in-tag": false,
9
- "release-type": "ruby"
9
+ "release-type": "ruby",
10
+ "exclude-paths": ["wasm"]
10
11
  },
11
12
  "wasm/kobako-core": {
12
13
  "component": "kobako-core",
@@ -16,10 +17,71 @@
16
17
  "type": "toml",
17
18
  "path": "/wasm/Cargo.lock",
18
19
  "jsonpath": "$.package[?(@.name=='kobako-core')].version"
20
+ },
21
+ {
22
+ "type": "generic",
23
+ "path": "/wasm/kobako-core/README.md"
24
+ }
25
+ ]
26
+ },
27
+ "wasm/kobako": {
28
+ "component": "kobako-rs",
29
+ "release-type": "rust",
30
+ "extra-files": [
31
+ {
32
+ "type": "toml",
33
+ "path": "/wasm/Cargo.lock",
34
+ "jsonpath": "$.package[?(@.name=='kobako')].version"
35
+ },
36
+ {
37
+ "type": "toml",
38
+ "path": "/wasm/kobako/Cargo.toml",
39
+ "jsonpath": "$.dependencies['kobako-core'].version"
40
+ },
41
+ {
42
+ "type": "generic",
43
+ "path": "/wasm/kobako/README.md"
44
+ }
45
+ ]
46
+ },
47
+ "wasm/kobako-io": {
48
+ "component": "kobako-io",
49
+ "release-type": "rust",
50
+ "extra-files": [
51
+ {
52
+ "type": "toml",
53
+ "path": "/wasm/Cargo.lock",
54
+ "jsonpath": "$.package[?(@.name=='kobako-io')].version"
55
+ },
56
+ {
57
+ "type": "generic",
58
+ "path": "/wasm/kobako-io/README.md"
59
+ }
60
+ ]
61
+ },
62
+ "wasm/kobako-regexp": {
63
+ "component": "kobako-regexp",
64
+ "release-type": "rust",
65
+ "extra-files": [
66
+ {
67
+ "type": "toml",
68
+ "path": "/wasm/Cargo.lock",
69
+ "jsonpath": "$.package[?(@.name=='kobako-regexp')].version"
70
+ },
71
+ {
72
+ "type": "generic",
73
+ "path": "/wasm/kobako-regexp/README.md"
19
74
  }
20
75
  ]
21
76
  }
22
77
  },
78
+ "plugins": [
79
+ {
80
+ "type": "linked-versions",
81
+ "groupName": "kobako guest crates",
82
+ "components": ["kobako-core", "kobako-rs", "kobako-io", "kobako-regexp"]
83
+ }
84
+ ],
23
85
  "extra-files": [
24
86
  {
25
87
  "type": "toml",
data/rust-toolchain.toml CHANGED
@@ -1,7 +1,8 @@
1
1
  # Pin the Rust toolchain so local builds and CI stay byte-identical.
2
2
  # The wasm32-wasip1 crt1-command.o references __wasi_init_tp from 1.96 onward;
3
3
  # vendored wasi-sdk 33's libc.a supplies that symbol, so the two move together.
4
- # Bump this in lockstep with WASI_SDK_VERSION in tasks/support/kobako_vendor.rb.
4
+ # Bump this in lockstep with the wasi-sdk toolchain beni vendors
5
+ # (`rake beni:build`, wired in the Rakefile's Beni::Tasks block).
5
6
  # This file is the single source of the channel; the CI workflows read it.
6
7
  [toolchain]
7
8
  channel = "stable"
@@ -0,0 +1,4 @@
1
+ module Kobako
2
+ module Codec
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Kobako
2
+ VERSION: String
3
+ end
data/sig/kobako.rbs CHANGED
@@ -1,3 +1,2 @@
1
1
  module Kobako
2
- VERSION: String
3
2
  end
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.8.0
4
+ version: 0.9.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-06-05 00:00:00.000000000 Z
11
+ date: 2026-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -84,6 +84,7 @@ files:
84
84
  - sig/kobako/catalog/handles.rbs
85
85
  - sig/kobako/catalog/namespaces.rbs
86
86
  - sig/kobako/catalog/snippets.rbs
87
+ - sig/kobako/codec.rbs
87
88
  - sig/kobako/codec/decoder.rbs
88
89
  - sig/kobako/codec/encoder.rbs
89
90
  - sig/kobako/codec/error.rbs
@@ -111,6 +112,7 @@ files:
111
112
  - sig/kobako/transport/yield.rbs
112
113
  - sig/kobako/transport/yielder.rbs
113
114
  - sig/kobako/usage.rbs
115
+ - sig/kobako/version.rbs
114
116
  homepage: https://github.com/elct9620/kobako
115
117
  licenses:
116
118
  - Apache-2.0