wardite 0.8.1 → 0.9.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.
data/lib/wardite/load.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # rbs_inline: enabled
2
- require "wardite/revisitor"
3
2
 
4
3
  module Wardite
5
4
  class Section
@@ -128,7 +127,7 @@ module Wardite
128
127
 
129
128
  attr_accessor :locals_type #: Array[Symbol]
130
129
 
131
- attr_accessor :body #: Array[Op]
130
+ attr_accessor :body #: Array[[Symbol, Symbol, Array[operandItem], Integer?, Integer?]]
132
131
 
133
132
  # @rbs &blk: (CodeBody) -> void
134
133
  # @rbs return: void
@@ -254,6 +253,7 @@ module Wardite
254
253
  # @rbs enable_wasi: boolish
255
254
  # @rbs return: Instance
256
255
  def self.load_from_buffer(buf, import_object: {}, enable_wasi: true)
256
+ start = Time.now.to_f #: Float
257
257
  @buf = buf
258
258
 
259
259
  version = preamble
@@ -273,6 +273,8 @@ module Wardite
273
273
  i.wasi = wasi_env
274
274
  end
275
275
  end
276
+ ensure
277
+ $stderr.puts "load_from_buffer: #{Time.now.to_f - start}" if ENV['WARITE_TRACE']
276
278
  end
277
279
 
278
280
  # @rbs return: Integer
@@ -600,25 +602,25 @@ module Wardite
600
602
  locals_type << Op.i2type(value_type || -1)
601
603
  end
602
604
  body = code_body(cbuf)
603
- revisitor = Revisitor.new(body)
604
- revisitor.revisit!
605
605
 
606
606
  dest.func_codes << CodeSection::CodeBody.new do |b|
607
607
  b.locals_count = locals_count
608
608
  b.locals_type = locals_type
609
- b.body = revisitor.ops
609
+ b.body = body
610
610
  end
611
611
  end
612
612
  dest
613
613
  end
614
614
 
615
615
  # @rbs buf: StringIO
616
- # @rbs return: Array[::Wardite::Op]
616
+ # @rbs return: Array[[Symbol, Symbol, Array[operandItem], Integer?, Integer?]]
617
617
  def self.code_body(buf)
618
- dest = [] #: Array[Op]
618
+ dest = [] #: Array[[Symbol, Symbol, Array[operandItem], Integer?, Integer?]]
619
+ # HINT: [symname, index of op, index of else, index of end]
620
+ branching_stack = [] #: Array[[Symbol, Integer, Integer, Integer]]
621
+ fixed_stack = [] #: Array[[Symbol, Integer, Integer, Integer]]
619
622
  while c = buf.read(1)
620
- namespace, code = resolve_code(c, buf)
621
- operand_types = Op.operand_of(code)
623
+ namespace, code, operand_types = resolve_code(c, buf)
622
624
  operand = [] #: Array[operandItem]
623
625
  operand_types.each do |typ|
624
626
  case typ
@@ -673,9 +675,42 @@ module Wardite
673
675
  end
674
676
  end
675
677
 
676
- dest << Op.new(namespace, code, operand)
678
+ # HINT: [namespace, code, operand, else_pos, end_pos]
679
+ dest << [namespace, code, operand, nil, nil]
680
+ if code == :block || code == :loop || code == :if
681
+ branching_stack << [code, dest.size - 1, -1, -1]
682
+ elsif code == :else
683
+ if branching_stack.empty?
684
+ raise "broken sequence: unmatched else"
685
+ else
686
+ last = branching_stack.pop || raise("[BUG] empty pop")
687
+ if last[0] != :if
688
+ raise "broken sequence: else without if"
689
+ end
690
+ branching_stack << [last[0], last[1], dest.size - 1, -1]
691
+ end
692
+ elsif code == :end
693
+ unless branching_stack.empty?
694
+ last = branching_stack.pop || raise("[BUG] empty pop")
695
+ fixed_stack << [last[0], last[1], last[2], dest.size - 1]
696
+ end
697
+ end
677
698
  end
678
699
 
700
+ fixed_stack.each do |(sym, begin_idx, else_idx, end_idx)|
701
+ if end_idx == -1
702
+ raise "broken sequence: branching without end"
703
+ end
704
+ case sym
705
+ when :block, :loop
706
+ dest[begin_idx][-1] = end_idx
707
+ when :if
708
+ dest[begin_idx][-2] = else_idx == -1 ? end_idx : else_idx
709
+ dest[begin_idx][-1] = end_idx
710
+ else
711
+ raise "[BUG] unknown sym #{sym.inspect}"
712
+ end
713
+ end
679
714
  dest
680
715
  rescue => e
681
716
  require "pp"
@@ -687,14 +722,18 @@ module Wardite
687
722
 
688
723
  # @rbs c: String
689
724
  # @rbs buf: StringIO
690
- # @rbs return: [Symbol, Symbol]
725
+ # @rbs return: [Symbol, Symbol, Array[Symbol]]
691
726
  def self.resolve_code(c, buf)
692
- namespace, code = Op.to_sym(c)
693
- if namespace == :fc
727
+ ord = c.ord
728
+ code = Op::SYMS[ord]
729
+ if code == :fc
694
730
  lower = fetch_uleb128(buf)
695
- return Op.resolve_fc_sym(lower) #: [Symbol, Symbol]
731
+ sym = Op::FC_SYMS[lower]
732
+ namespace = Op::FC_OPERANDS[lower] || :default
733
+ return [namespace, sym, Op.operand_of(sym)]
696
734
  end
697
- return [namespace, code] #: [Symbol, Symbol]
735
+ namespace = Op::NAMESPACES[ord] || raise("unsupported code: #{ord}")
736
+ return [namespace, code, Op::OPERANDS[ord]]
698
737
  end
699
738
 
700
739
  # @rbs return: DataSection
@@ -771,7 +810,7 @@ module Wardite
771
810
  code
772
811
  end
773
812
 
774
- # @rbs ops: Array[Op]
813
+ # @rbs ops: Array[[Symbol, Symbol, Array[operandItem], Integer?, Integer?]]
775
814
  # @rbs return: Integer
776
815
  def self.decode_expr(ops)
777
816
  # sees first opcode
@@ -779,19 +818,19 @@ module Wardite
779
818
  if !op
780
819
  raise LoadError, "empty opcodes"
781
820
  end
782
- case op.code
821
+ case op[1]
783
822
  when :i32_const
784
- arg = op.operand[0]
823
+ arg = op[2][0]
785
824
  if !arg.is_a?(Integer)
786
825
  raise "Invalid definition of operand"
787
826
  end
788
827
  return arg
789
828
  else
790
- raise "Unimplemented offset op: #{op.code.inspect}"
829
+ raise "Unimplemented offset op: #{op.inspect}"
791
830
  end
792
831
  end
793
832
 
794
- # @rbs ops: Array[Op]
833
+ # @rbs ops: Array[[Symbol, Symbol, Array[operandItem], Integer?, Integer?]]
795
834
  # @rbs return: wasmValue
796
835
  def self.decode_global_expr(ops)
797
836
  # sees first opcode
@@ -799,33 +838,33 @@ module Wardite
799
838
  if !op
800
839
  raise LoadError, "empty opcodes"
801
840
  end
802
- case op.code
841
+ case op[1]
803
842
  when :i32_const
804
- arg = op.operand[0]
843
+ arg = op[2][0]
805
844
  if !arg.is_a?(Integer)
806
845
  raise "Invalid definition of operand"
807
846
  end
808
847
  return I32(arg)
809
848
  when :i64_const
810
- arg = op.operand[0]
849
+ arg = op[2][0]
811
850
  if !arg.is_a?(Integer)
812
851
  raise "Invalid definition of operand"
813
852
  end
814
853
  return I64(arg)
815
854
  when :f32_const
816
- arg = op.operand[0]
855
+ arg = op[2][0]
817
856
  if !arg.is_a?(Float)
818
857
  raise "Invalid definition of operand"
819
858
  end
820
859
  return F32(arg)
821
860
  when :f64_const
822
- arg = op.operand[0]
861
+ arg = op[2][0]
823
862
  if !arg.is_a?(Float)
824
863
  raise "Invalid definition of operand"
825
864
  end
826
865
  return F64(arg)
827
866
  else
828
- raise "Unimplemented offset op: #{op.code.inspect}"
867
+ raise "Unimplemented offset op: #{op.inspect}"
829
868
  end
830
869
  end
831
870
 
@@ -15,17 +15,25 @@ module Wardite
15
15
  case op.code
16
16
  when :block
17
17
  next_pc = fetch_ops_while_end(idx)
18
- op.meta[:end_pos] = next_pc
18
+ if op.meta[:end_pos] != next_pc
19
+ raise "mismatched end_pos for block at #{op}: #{op.meta[:end_pos]} vs #{next_pc}"
20
+ end
19
21
 
20
22
  when :loop
21
23
  next_pc = fetch_ops_while_end(idx)
22
- op.meta[:end_pos] = next_pc
24
+ if op.meta[:end_pos] != next_pc
25
+ raise "mismatched end_pos for loop at #{op}: #{op.meta[:end_pos]} vs #{next_pc}"
26
+ end
23
27
 
24
28
  when :if
25
29
  next_pc = fetch_ops_while_end(idx)
26
30
  else_pc = fetch_ops_while_else_or_end(idx)
27
- op.meta[:end_pos] = next_pc
28
- op.meta[:else_pos] = else_pc
31
+ if op.meta[:end_pos] != next_pc
32
+ raise "mismatched end_pos for if at #{op}: #{op.meta[:end_pos]} vs #{next_pc}"
33
+ end
34
+ if op.meta[:else_pos] != else_pc
35
+ raise "mismatched else_pos for if at #{op}: #{op.meta[:else_pos]} vs #{else_pc}"
36
+ end
29
37
  end
30
38
  end
31
39
  end
@@ -2,5 +2,5 @@
2
2
  # rbs_inline: enabled
3
3
 
4
4
  module Wardite
5
- VERSION = "0.8.1" #: String
5
+ VERSION = "0.9.0" #: String
6
6
  end
data/lib/wardite.rb CHANGED
@@ -362,9 +362,22 @@ module Wardite
362
362
  return nil
363
363
  end
364
364
 
365
+ # @rbs!
366
+ # $GLOBAL_EXTERNAL_ELAP: Float
367
+ # $GLOBAL_EXTERNAL_TIMES: Integer
368
+ $GLOBAL_EXTERNAL_ELAP = 0.0 #: Float
369
+ $GLOBAL_EXTERNAL_TIMES = 0 #: Integer
370
+ END {
371
+ if ENV["WARDITE_TRACE"] == "1"
372
+ $stderr.puts "external call count: #{$GLOBAL_EXTERNAL_TIMES}"
373
+ $stderr.puts "external call elapsed: #{$GLOBAL_EXTERNAL_ELAP}(s)"
374
+ end
375
+ }
376
+
365
377
  # @rbs external_function: ExternalFunction
366
378
  # @rbs return: wasmValue|nil
367
379
  def invoke_external(external_function)
380
+ start = Time.now.to_f
368
381
  $stderr.puts "[trace] call external function: #{external_function.name}" if ENV["WARDITE_TRACE"]
369
382
  local_start = stack.size - external_function.callsig.size
370
383
  args = stack[local_start..]
@@ -399,6 +412,9 @@ module Wardite
399
412
  end
400
413
 
401
414
  raise "invalid type of value returned in proc. val: #{val.inspect}"
415
+ ensure
416
+ $GLOBAL_EXTERNAL_TIMES += 1
417
+ $GLOBAL_EXTERNAL_ELAP += (Time.now.to_f - start)
402
418
  end
403
419
 
404
420
  # @rbs return: void
@@ -409,7 +425,7 @@ module Wardite
409
425
  break
410
426
  end
411
427
  cur_frame.pc += 1
412
- insn = cur_frame.body[cur_frame.pc] #: Op
428
+ insn = cur_frame.body[cur_frame.pc]
413
429
  if !insn
414
430
  break
415
431
  end
@@ -418,37 +434,38 @@ module Wardite
418
434
  end
419
435
 
420
436
  # @rbs frame: Frame
421
- # @rbs insn: Op
437
+ # @rbs insn: [Symbol, Symbol, Array[operandItem], Integer?, Integer?]
422
438
  # @rbs return: void
423
439
  def eval_insn(frame, insn)
424
- case insn.namespace
440
+ namespace, code, operand, else_pos, end_pos = *insn
441
+ case namespace
425
442
  when :convert
426
- return Evaluator.convert_eval_insn(self, frame, insn)
443
+ return Evaluator.convert_eval_insn(self, frame, code, operand)
427
444
  when :i32
428
- return Evaluator.i32_eval_insn(self, frame, insn)
445
+ return Evaluator.i32_eval_insn(self, frame, code, operand)
429
446
  when :i64
430
- return Evaluator.i64_eval_insn(self, frame, insn)
447
+ return Evaluator.i64_eval_insn(self, frame, code, operand)
431
448
  when :f32
432
- return Evaluator.f32_eval_insn(self, frame, insn)
449
+ return Evaluator.f32_eval_insn(self, frame, code, operand)
433
450
  when :f64
434
- return Evaluator.f64_eval_insn(self, frame, insn)
451
+ return Evaluator.f64_eval_insn(self, frame, code, operand)
435
452
  end
436
453
 
437
454
  # unmached namespace...
438
- case insn.code
455
+ case code
439
456
  when :unreachable
440
457
  raise Unreachable, "unreachable op"
441
458
  when :nop
442
459
  return
443
460
 
444
461
  when :br
445
- level = insn.operand[0]
462
+ level = operand[0]
446
463
  raise EvalError, "br op without level" if !level.is_a?(Integer)
447
464
  pc = do_branch(frame.labels, stack, level)
448
465
  frame.pc = pc
449
466
 
450
467
  when :br_if
451
- level = insn.operand[0]
468
+ level = operand[0]
452
469
  raise EvalError, "br op without level" if !level.is_a?(Integer)
453
470
  cond = stack.pop
454
471
  raise EvalError, "cond not found" if !cond.is_a?(I32)
@@ -459,9 +476,9 @@ module Wardite
459
476
  frame.pc = pc
460
477
 
461
478
  when :br_table
462
- level_vec = insn.operand[0]
479
+ level_vec = operand[0]
463
480
  raise EvalError, "no level vector" if !level_vec.is_a?(Array)
464
- default = insn.operand[1]
481
+ default = operand[1]
465
482
  raise EvalError, "no default specified" if !default.is_a?(Integer)
466
483
  idx = stack.pop
467
484
  raise EvalError, "idx not found" if !idx.is_a?(I32)
@@ -474,29 +491,29 @@ module Wardite
474
491
  frame.pc = pc
475
492
 
476
493
  when :block
477
- block = insn.operand[0]
494
+ block = operand[0]
478
495
  raise EvalError, "block op without block" if !block.is_a?(Block)
479
- next_pc = insn.meta[:end_pos]
496
+ next_pc = end_pos || -1
480
497
  label = Label.new(:block, next_pc, stack.size, block.result_size)
481
498
  frame.labels.push(label)
482
499
 
483
500
  when :loop
484
- block = insn.operand[0]
501
+ block = operand[0]
485
502
  raise EvalError, "loop op without block" if !block.is_a?(Block)
486
503
  start = frame.pc
487
- next_pc = insn.meta[:end_pos]
504
+ next_pc = end_pos || -1
488
505
  label = Label.new(:loop, next_pc, stack.size, block.result_size, start)
489
506
  frame.labels.push(label)
490
507
 
491
508
  when :if
492
- block = insn.operand[0]
509
+ block = operand[0]
493
510
  raise EvalError, "if op without block" if !block.is_a?(Block)
494
511
  cond = stack.pop
495
512
  raise EvalError, "cond not found" if !cond.is_a?(I32)
496
- next_pc = insn.meta[:end_pos]
513
+ next_pc = end_pos || -1
497
514
 
498
515
  if cond.value.zero?
499
- frame.pc = insn.meta[:else_pos]
516
+ frame.pc = else_pos || -1
500
517
  end
501
518
 
502
519
  if frame.pc == next_pc
@@ -516,7 +533,7 @@ module Wardite
516
533
  end
517
534
 
518
535
  when :call
519
- idx = insn.operand[0]
536
+ idx = operand[0]
520
537
  raise EvalError, "[BUG] local operand not found" if !idx.is_a?(Integer)
521
538
  fn = self.instance.store.funcs[idx]
522
539
  case fn
@@ -532,9 +549,9 @@ module Wardite
532
549
  when :call_indirect
533
550
  table = self.instance.store.tables[0]
534
551
  raise EvalError, "table required but not found" if !table
535
- type_idx = insn.operand[0]
552
+ type_idx = operand[0]
536
553
  raise EvalError, "[BUG] index operand invalid" if !type_idx.is_a?(Integer)
537
- nullbyte = insn.operand[1]
554
+ nullbyte = operand[1]
538
555
  raise EvalError, "[BUG] invalid bytearray of call_indirect" if nullbyte != 0x0
539
556
  table_idx = stack.pop
540
557
  raise EvalError, "[BUG] index stack invalid" if !table_idx.is_a?(I32)
@@ -602,7 +619,7 @@ module Wardite
602
619
  stack.push(cond.value != 0 ? left : right)
603
620
 
604
621
  when :local_get
605
- idx = insn.operand[0]
622
+ idx = operand[0]
606
623
  if !idx.is_a?(Integer)
607
624
  raise EvalError, "[BUG] invalid type of operand"
608
625
  end
@@ -614,7 +631,7 @@ module Wardite
614
631
  stack.push(local)
615
632
 
616
633
  when :local_set
617
- idx = insn.operand[0]
634
+ idx = operand[0]
618
635
  if !idx.is_a?(Integer)
619
636
  raise EvalError, "[BUG] invalid type of operand"
620
637
  end
@@ -625,7 +642,7 @@ module Wardite
625
642
  frame.locals[idx] = value
626
643
 
627
644
  when :local_tee
628
- idx = insn.operand[0]
645
+ idx = operand[0]
629
646
  if !idx.is_a?(Integer)
630
647
  raise EvalError, "[BUG] invalid type of operand"
631
648
  end
@@ -637,7 +654,7 @@ module Wardite
637
654
  stack.push value
638
655
 
639
656
  when :global_get
640
- idx = insn.operand[0]
657
+ idx = operand[0]
641
658
  if !idx.is_a?(Integer)
642
659
  raise EvalError, "[BUG] invalid type of operand"
643
660
  end
@@ -648,7 +665,7 @@ module Wardite
648
665
  stack.push(global.value)
649
666
 
650
667
  when :global_set
651
- idx = insn.operand[0]
668
+ idx = operand[0]
652
669
  if !idx.is_a?(Integer)
653
670
  raise EvalError, "[BUG] invalid type of operand"
654
671
  end
@@ -679,11 +696,11 @@ module Wardite
679
696
  stack.push(I32(memory.grow(delta.value)))
680
697
 
681
698
  when :memory_init
682
- idx = insn.operand[0]
699
+ idx = operand[0]
683
700
  if !idx.is_a?(Integer)
684
701
  raise EvalError, "[BUG] invalid type of operand"
685
702
  end
686
- if insn.operand[1] != 0x0
703
+ if operand[1] != 0x0
687
704
  $stderr.puts "warning: :memory_init is not ending with 0x00"
688
705
  end
689
706
  data_sec = instance.data_section
@@ -705,7 +722,7 @@ module Wardite
705
722
  memory.data[dest_offset.value...(dest_offset.value+length.value)] = source
706
723
 
707
724
  when :memory_copy
708
- if insn.operand[0] != 0x0 || insn.operand[1] != 0x0
725
+ if operand[0] != 0x0 || operand[1] != 0x0
709
726
  $stderr.puts "warning: :memory_copy is not ending with 0x00"
710
727
  end
711
728
  length, src_offset, dest_offset = stack.pop, stack.pop, stack.pop
@@ -718,7 +735,7 @@ module Wardite
718
735
  memory.data[dest_offset.value...(dest_offset.value+length.value)] = source
719
736
 
720
737
  when :memory_fill
721
- if insn.operand[0] != 0x0
738
+ if operand[0] != 0x0
722
739
  $stderr.puts "warning: :memory_fill is not ending with 0x00"
723
740
  end
724
741
  length, byte, dest_offset = stack.pop, stack.pop, stack.pop
@@ -841,7 +858,7 @@ module Wardite
841
858
  attr_accessor :pc #: Integer
842
859
  attr_accessor :sp #: Integer
843
860
 
844
- attr_accessor :body #: Array[Op]
861
+ attr_accessor :body #: Array[[Symbol, Symbol, Array[Wardite::operandItem], Integer?, Integer?]]
845
862
 
846
863
  attr_accessor :arity #: Integer
847
864
 
@@ -853,7 +870,7 @@ module Wardite
853
870
 
854
871
  # @rbs pc: Integer
855
872
  # @rbs sp: Integer
856
- # @rbs body: Array[Op]
873
+ # @rbs body: Array[[Symbol, Symbol, Array[Wardite::operandItem], Integer?, Integer?]]
857
874
  # @rbs arity: Integer
858
875
  # @rbs locals: Array[wasmValue]
859
876
  # @rbs returb: void
@@ -1247,7 +1264,7 @@ module Wardite
1247
1264
  @default_locals = construct_default_locals
1248
1265
  end
1249
1266
 
1250
- # @rbs return: Array[Op]
1267
+ # @rbs return: Array[[Symbol, Symbol, Array[operandItem], Integer?, Integer?]]
1251
1268
  def body
1252
1269
  code_body.body
1253
1270
  end
@@ -1255,7 +1272,7 @@ module Wardite
1255
1272
  # @rbs return: Array[Symbol]
1256
1273
  def locals_type
1257
1274
  code_body.locals_type
1258
- end
1275
+ end
1259
1276
 
1260
1277
  # @rbs return: Array[Integer]
1261
1278
  def locals_count
@@ -6,7 +6,7 @@ gems:
6
6
  source:
7
7
  type: git
8
8
  name: ruby/gem_rbs_collection
9
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
9
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
10
10
  remote: https://github.com/ruby/gem_rbs_collection.git
11
11
  repo_dir: gems
12
12
  - name: ast
@@ -14,7 +14,7 @@ gems:
14
14
  source:
15
15
  type: git
16
16
  name: ruby/gem_rbs_collection
17
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
17
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
18
18
  remote: https://github.com/ruby/gem_rbs_collection.git
19
19
  repo_dir: gems
20
20
  - name: base64
@@ -22,7 +22,7 @@ gems:
22
22
  source:
23
23
  type: git
24
24
  name: ruby/gem_rbs_collection
25
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
25
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
26
26
  remote: https://github.com/ruby/gem_rbs_collection.git
27
27
  repo_dir: gems
28
28
  - name: bigdecimal
@@ -30,7 +30,7 @@ gems:
30
30
  source:
31
31
  type: git
32
32
  name: ruby/gem_rbs_collection
33
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
33
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
34
34
  remote: https://github.com/ruby/gem_rbs_collection.git
35
35
  repo_dir: gems
36
36
  - name: concurrent-ruby
@@ -38,7 +38,7 @@ gems:
38
38
  source:
39
39
  type: git
40
40
  name: ruby/gem_rbs_collection
41
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
41
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
42
42
  remote: https://github.com/ruby/gem_rbs_collection.git
43
43
  repo_dir: gems
44
44
  - name: connection_pool
@@ -46,7 +46,7 @@ gems:
46
46
  source:
47
47
  type: git
48
48
  name: ruby/gem_rbs_collection
49
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
49
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
50
50
  remote: https://github.com/ruby/gem_rbs_collection.git
51
51
  repo_dir: gems
52
52
  - name: csv
@@ -54,7 +54,7 @@ gems:
54
54
  source:
55
55
  type: git
56
56
  name: ruby/gem_rbs_collection
57
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
57
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
58
58
  remote: https://github.com/ruby/gem_rbs_collection.git
59
59
  repo_dir: gems
60
60
  - name: date
@@ -86,7 +86,7 @@ gems:
86
86
  source:
87
87
  type: git
88
88
  name: ruby/gem_rbs_collection
89
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
89
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
90
90
  remote: https://github.com/ruby/gem_rbs_collection.git
91
91
  repo_dir: gems
92
92
  - name: json
@@ -98,7 +98,7 @@ gems:
98
98
  source:
99
99
  type: git
100
100
  name: ruby/gem_rbs_collection
101
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
101
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
102
102
  remote: https://github.com/ruby/gem_rbs_collection.git
103
103
  repo_dir: gems
104
104
  - name: logger
@@ -106,17 +106,17 @@ gems:
106
106
  source:
107
107
  type: stdlib
108
108
  - name: minitest
109
- version: '0'
109
+ version: '5.25'
110
110
  source:
111
- type: stdlib
111
+ type: git
112
+ name: ruby/gem_rbs_collection
113
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
114
+ remote: https://github.com/ruby/gem_rbs_collection.git
115
+ repo_dir: gems
112
116
  - name: monitor
113
117
  version: '0'
114
118
  source:
115
119
  type: stdlib
116
- - name: mutex_m
117
- version: '0'
118
- source:
119
- type: stdlib
120
120
  - name: openssl
121
121
  version: '0'
122
122
  source:
@@ -130,7 +130,7 @@ gems:
130
130
  source:
131
131
  type: git
132
132
  name: ruby/gem_rbs_collection
133
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
133
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
134
134
  remote: https://github.com/ruby/gem_rbs_collection.git
135
135
  repo_dir: gems
136
136
  - name: pathname
@@ -142,7 +142,7 @@ gems:
142
142
  source:
143
143
  type: git
144
144
  name: ruby/gem_rbs_collection
145
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
145
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
146
146
  remote: https://github.com/ruby/gem_rbs_collection.git
147
147
  repo_dir: gems
148
148
  - name: rake
@@ -150,11 +150,11 @@ gems:
150
150
  source:
151
151
  type: git
152
152
  name: ruby/gem_rbs_collection
153
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
153
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
154
154
  remote: https://github.com/ruby/gem_rbs_collection.git
155
155
  repo_dir: gems
156
156
  - name: rbs
157
- version: 3.7.0
157
+ version: 3.9.4
158
158
  source:
159
159
  type: rubygems
160
160
  - name: rdoc
@@ -198,7 +198,11 @@ gems:
198
198
  source:
199
199
  type: git
200
200
  name: ruby/gem_rbs_collection
201
- revision: 1288acc1cdecc0a273740212da0df35b108dbfb6
201
+ revision: 4873ad046b4ea8931591626cd547becae6d1e84e
202
202
  remote: https://github.com/ruby/gem_rbs_collection.git
203
203
  repo_dir: gems
204
+ - name: uri
205
+ version: '0'
206
+ source:
207
+ type: stdlib
204
208
  gemfile_lock_path: Gemfile.lock