opal 1.1.1 → 1.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +3 -2
  3. data/.github/ISSUE_TEMPLATE/bug-report.md +47 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  5. data/.github/workflows/build.yml +11 -5
  6. data/.gitignore +1 -0
  7. data/.jshintrc +1 -1
  8. data/Gemfile +0 -4
  9. data/HACKING.md +1 -1
  10. data/README.md +19 -15
  11. data/UNRELEASED.md +41 -0
  12. data/benchmark-ips/bm_array_unshift.rb +7 -0
  13. data/bin/opal-mspec +2 -0
  14. data/docs/compiler.md +1 -1
  15. data/examples/rack/Gemfile +0 -1
  16. data/examples/rack/Gemfile.lock +0 -4
  17. data/lib/opal/cli.rb +1 -0
  18. data/lib/opal/cli_options.rb +4 -0
  19. data/lib/opal/cli_runners/nodejs.rb +4 -0
  20. data/lib/opal/cli_runners/source-map-support-browser.js +3 -1
  21. data/lib/opal/cli_runners/source-map-support-node.js +3 -1
  22. data/lib/opal/cli_runners/source-map-support.js +3 -1
  23. data/lib/opal/compiler.rb +2 -2
  24. data/lib/opal/nodes/args/arity_check.rb +1 -0
  25. data/lib/opal/nodes/args/parameters.rb +6 -0
  26. data/lib/opal/nodes/class.rb +1 -13
  27. data/lib/opal/nodes/literal.rb +14 -7
  28. data/lib/opal/nodes/module.rb +13 -9
  29. data/lib/opal/nodes/variables.rb +13 -4
  30. data/lib/opal/nodes/while.rb +54 -17
  31. data/lib/opal/parser.rb +1 -5
  32. data/lib/opal/parser/patch.rb +34 -0
  33. data/lib/opal/repl.rb +7 -0
  34. data/lib/opal/rewriter.rb +2 -0
  35. data/lib/opal/rewriters/arguments.rb +4 -1
  36. data/lib/opal/rewriters/forward_args.rb +54 -0
  37. data/lib/opal/rewriters/logical_operator_assignment.rb +5 -2
  38. data/lib/opal/rewriters/opal_engine_check.rb +5 -7
  39. data/lib/opal/version.rb +1 -1
  40. data/opal/corelib/array.rb +42 -20
  41. data/opal/corelib/array/pack.rb +6 -1
  42. data/opal/corelib/complex.rb +2 -0
  43. data/opal/corelib/constants.rb +3 -3
  44. data/opal/corelib/hash.rb +36 -38
  45. data/opal/corelib/module.rb +2 -7
  46. data/opal/corelib/number.rb +2 -180
  47. data/opal/corelib/numeric.rb +156 -0
  48. data/opal/corelib/object_space.rb +102 -0
  49. data/opal/corelib/random.rb +31 -66
  50. data/opal/corelib/random/formatter.rb +122 -0
  51. data/opal/corelib/range.rb +50 -19
  52. data/opal/corelib/runtime.js +82 -21
  53. data/opal/corelib/string.rb +86 -52
  54. data/opal/corelib/string/encoding.rb +140 -25
  55. data/opal/corelib/string/unpack.rb +26 -40
  56. data/opal/opal.rb +1 -0
  57. data/opal/opal/full.rb +1 -0
  58. data/spec/filters/bugs/array.rb +0 -22
  59. data/spec/filters/bugs/basicobject.rb +3 -0
  60. data/spec/filters/bugs/encoding.rb +0 -2
  61. data/spec/filters/bugs/exception.rb +1 -0
  62. data/spec/filters/bugs/float.rb +0 -2
  63. data/spec/filters/bugs/hash.rb +2 -7
  64. data/spec/filters/bugs/integer.rb +0 -2
  65. data/spec/filters/bugs/kernel.rb +16 -3
  66. data/spec/filters/bugs/language.rb +6 -14
  67. data/spec/filters/bugs/marshal.rb +1 -3
  68. data/spec/filters/bugs/module.rb +16 -1
  69. data/spec/filters/bugs/numeric.rb +4 -12
  70. data/spec/filters/bugs/objectspace.rb +67 -0
  71. data/spec/filters/bugs/pack_unpack.rb +0 -9
  72. data/spec/filters/bugs/pathname.rb +1 -0
  73. data/spec/filters/bugs/proc.rb +8 -0
  74. data/spec/filters/bugs/random.rb +3 -6
  75. data/spec/filters/bugs/range.rb +83 -113
  76. data/spec/filters/bugs/set.rb +2 -0
  77. data/spec/filters/bugs/string.rb +31 -70
  78. data/spec/filters/bugs/struct.rb +2 -0
  79. data/spec/filters/bugs/time.rb +8 -2
  80. data/spec/filters/unsupported/float.rb +3 -0
  81. data/spec/filters/unsupported/freeze.rb +1 -0
  82. data/spec/filters/unsupported/integer.rb +3 -0
  83. data/spec/filters/unsupported/refinements.rb +5 -0
  84. data/spec/filters/unsupported/string.rb +100 -95
  85. data/spec/filters/unsupported/time.rb +4 -0
  86. data/spec/lib/compiler_spec.rb +16 -0
  87. data/spec/lib/rewriters/forward_args_spec.rb +61 -0
  88. data/spec/lib/rewriters/logical_operator_assignment_spec.rb +1 -1
  89. data/spec/lib/rewriters/numblocks_spec.rb +44 -0
  90. data/spec/lib/rewriters/opal_engine_check_spec.rb +49 -4
  91. data/spec/opal/core/language/forward_args_spec.rb +53 -0
  92. data/spec/opal/core/language/infinite_range_spec.rb +13 -0
  93. data/spec/opal/core/language/memoization_spec.rb +16 -0
  94. data/spec/opal/core/module_spec.rb +38 -2
  95. data/spec/opal/core/number/to_i_spec.rb +28 -0
  96. data/spec/opal/core/runtime/bridged_classes_spec.rb +16 -0
  97. data/spec/opal/core/runtime/constants_spec.rb +20 -1
  98. data/spec/opal/core/string/subclassing_spec.rb +16 -0
  99. data/spec/opal/core/string/unpack_spec.rb +22 -0
  100. data/spec/opal/core/string_spec.rb +4 -4
  101. data/spec/ruby_specs +4 -1
  102. data/stdlib/json.rb +3 -1
  103. data/stdlib/securerandom.rb +55 -35
  104. data/tasks/testing.rake +6 -3
  105. data/test/nodejs/test_string.rb +25 -0
  106. data/vendored-minitest/minitest/assertions.rb +2 -0
  107. metadata +31 -10
  108. data/lib/opal/parser/with_c_lexer.rb +0 -15
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ class MyStringSubclass < String
4
+ attr_reader :v
5
+ def initialize(s, v)
6
+ super(s)
7
+ @v = v
8
+ end
9
+ end
10
+
11
+ describe "String subclassing" do
12
+ it "should call initialize for subclasses" do
13
+ c = MyStringSubclass.new('s', 5)
14
+ [c, c.v].should == ['s', 5]
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'String#unpack' do
4
+ it 'correctly unpacks with U* strings with latin-1 characters' do
5
+ 'café'.unpack('U*').should == [99, 97, 102, 233]
6
+ [99, 97, 102, 233].pack('U*').unpack('U*').should == [99, 97, 102, 233]
7
+ end
8
+
9
+ it 'correctly unpacks with U* strings with latin-2 characters' do
10
+ 'pół'.unpack('U*').should == [112, 243, 322]
11
+ [112, 243, 322].pack('U*').unpack('U*').should == [112, 243, 322]
12
+ end
13
+
14
+ it 'correctly unpacks with c* strings with latin-2 characters' do
15
+ 'ść'.unpack('c*').should == [-59, -101, -60, -121]
16
+ end
17
+
18
+ it 'correctly unpacks with s* binary strings' do
19
+ "\xc8\x01".unpack('s*').should == [456]
20
+ [678].pack('s').unpack('s').should == [678]
21
+ end
22
+ end
@@ -19,10 +19,10 @@ describe 'Encoding' do
19
19
  Encoding.find('ascii').should == Encoding::ASCII
20
20
  Encoding.find('US-ASCII').should == Encoding::ASCII
21
21
  Encoding.find('us-ascii').should == Encoding::ASCII
22
- Encoding.find('ASCII-8BIT').should == Encoding::ASCII
23
- Encoding.find('ascii-8bit').should == Encoding::ASCII
24
- Encoding.find('BINARY').should == Encoding::ASCII
25
- Encoding.find('binary').should == Encoding::ASCII
22
+ Encoding.find('ASCII-8BIT').should == Encoding::BINARY
23
+ Encoding.find('ascii-8bit').should == Encoding::BINARY
24
+ Encoding.find('BINARY').should == Encoding::BINARY
25
+ Encoding.find('binary').should == Encoding::BINARY
26
26
  end
27
27
  end
28
28
  end
data/spec/ruby_specs CHANGED
@@ -106,6 +106,9 @@ ruby/core/marshal/minor_version_spec
106
106
  ruby/core/nil
107
107
  ruby/core/numeric
108
108
 
109
+ ruby/core/objectspace
110
+ ruby/core/objectspace/weakmap
111
+
109
112
  ruby/core/proc
110
113
 
111
114
  ruby/core/range
@@ -175,7 +178,7 @@ ruby/library/pathname
175
178
  !ruby/library/pathname/empty_spec
176
179
  !ruby/library/pathname/glob_spec
177
180
  ruby/library/pp
178
- ruby/library/securerandom/hex_spec
181
+ ruby/library/securerandom
179
182
  ruby/library/set
180
183
  ruby/library/singleton
181
184
  ruby/library/stringio/each_line_spec
data/stdlib/json.rb CHANGED
@@ -186,7 +186,9 @@ class Numeric
186
186
  end
187
187
 
188
188
  class String
189
- alias to_json inspect
189
+ def to_json
190
+ `JSON.stringify(self)`
191
+ end
190
192
  end
191
193
 
192
194
  class Time
@@ -1,44 +1,64 @@
1
1
  module SecureRandom
2
- def self.hex(count = nil)
3
- count ||= 16
4
- count = count.to_int unless `typeof count === "number"`
5
- raise ArgumentError, 'count of hex numbers must be positive' if count < 0
6
- %x{
7
- count = Math.floor(count);
8
- var repeat = Math.floor(count / 6),
9
- remain = count % 6,
10
- remain_total = remain * 2,
11
- string = '',
12
- temp;
13
- for (var i = 0; i < repeat; i++) {
14
- // parseInt('ff'.repeat(6), 16) == 281474976710655
15
- temp = Math.floor(Math.random() * 281474976710655).toString(16);
16
- if (temp.length < 12) {
17
- // account for leading zeros gone missing
18
- temp = '0'.repeat(12 - temp.length) + temp;
19
- }
20
- string = string + temp;
21
- }
22
- if (remain > 0) {
23
- temp = Math.floor(Math.random()*parseInt('ff'.repeat(remain), 16)).toString(16);
24
- if (temp.length < remain_total) {
25
- // account for leading zeros gone missing
26
- temp = '0'.repeat(remain_total - temp.length) + temp;
2
+ extend Random::Formatter
3
+
4
+ %x{
5
+ var gen_random_bytes;
6
+
7
+ if ((Opal.global.crypto && Opal.global.crypto.getRandomValues) ||
8
+ (Opal.global.msCrypto && Opal.global.msCrypto.getRandomValues)) {
9
+ // This method is available in all non-ancient web browsers.
10
+
11
+ var crypto = Opal.global.crypto || Opal.global.msCrypto;
12
+ gen_random_bytes = function(count) {
13
+ var storage = new Uint8Array(count);
14
+ crypto.getRandomValues(storage);
15
+ return storage;
16
+ };
17
+ }
18
+ else if (Opal.global.crypto && Opal.global.crypto.randomBytes) {
19
+ // This method is available in Node.js
20
+
21
+ gen_random_bytes = function(count) {
22
+ return Opal.global.crypto.randomBytes(count);
23
+ };
24
+ }
25
+ else {
26
+ // Let's dangerously polyfill this interface with our MersenneTwister
27
+ // xor native JS Math.random xor something about current time...
28
+ // That's hardly secure, but the following warning should provide a person
29
+ // deploying the code a good idea on what he should do to make his deployment
30
+ // actually secure.
31
+ // It's possible to interface other libraries by adding an else if above if
32
+ // that's really desired.
33
+
34
+ #{warn 'Can\'t get a Crypto.getRandomValues interface or Crypto.randomBytes.' \
35
+ 'The random values generated with SecureRandom won\'t be ' \
36
+ 'cryptographically secure'}
37
+
38
+ gen_random_bytes = function(count) {
39
+ var storage = new Uint8Array(count);
40
+ for (var i = 0; i < count; i++) {
41
+ storage[i] = #{rand(0xff)} ^ Math.floor(Math.random() * 256);
42
+ storage[i] ^= +(new Date())>>#{rand(0xff)}&0xff;
27
43
  }
28
- string = string + temp;
44
+ return storage;
29
45
  }
30
- return string;
31
46
  }
32
- end
47
+ }
33
48
 
34
- def self.uuid
35
- 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.gsub(/[xy]/) do |ch,|
36
- %x{
37
- var r = Math.random() * 16 | 0,
38
- v = ch == "x" ? r : (r & 3 | 8);
49
+ def self.bytes(bytes = nil)
50
+ gen_random(bytes)
51
+ end
39
52
 
40
- return v.toString(16);
53
+ def self.gen_random(count = nil)
54
+ count = Random._verify_count(count)
55
+ out = ''
56
+ %x{
57
+ var bytes = gen_random_bytes(#{count});
58
+ for (var i = 0; i < #{count}; i++) {
59
+ out += String.fromCharCode(bytes[i]);
41
60
  }
42
- end
61
+ }
62
+ out.encode('ASCII-8BIT')
43
63
  end
44
64
  end
data/tasks/testing.rake CHANGED
@@ -113,6 +113,7 @@ module Testing
113
113
 
114
114
  require 'spec_helper'
115
115
  require 'opal/full'
116
+ require 'securerandom'
116
117
  #{enter_benchmarking_mode}
117
118
 
118
119
  #{filter_requires}
@@ -354,13 +355,14 @@ task :minitest_node_nodejs do
354
355
  files = %w[
355
356
  nodejs
356
357
  opal-parser
357
- nodejs/test_file.rb
358
358
  nodejs/test_dir.rb
359
359
  nodejs/test_env.rb
360
- nodejs/test_io.rb
361
360
  nodejs/test_error.rb
361
+ nodejs/test_file.rb
362
362
  nodejs/test_file_encoding.rb
363
+ nodejs/test_io.rb
363
364
  nodejs/test_opal_builder.rb
365
+ nodejs/test_string.rb
364
366
  ]
365
367
 
366
368
  filename = "tmp/minitest_node_nodejs.rb"
@@ -369,8 +371,9 @@ task :minitest_node_nodejs do
369
371
  stubs = "-soptparse -sio/console -stimeout -smutex_m -srubygems -stempfile -smonitor"
370
372
  includes = "-Itest -Ilib -Ivendored-minitest"
371
373
 
374
+ use_strict_opt = ENV['USE_STRICT'] ? ' --use-strict' : ''
372
375
  sh "ruby -rbundler/setup "\
373
- "exe/opal #{includes} #{stubs} -R#{platform} -Dwarning -A --enable-source-location #{filename}"
376
+ "exe/opal #{includes} #{stubs} -R#{platform} -Dwarning -A --enable-source-location#{use_strict_opt} #{filename}"
374
377
  end
375
378
 
376
379
  desc 'Run smoke tests with opal-rspec to see if something is broken'
@@ -0,0 +1,25 @@
1
+ require 'test/unit'
2
+ require 'nodejs'
3
+
4
+ class TestString < Test::Unit::TestCase
5
+ def test_should_get_bytes
6
+ assert_equal('foo'.bytesize, 3)
7
+ assert_equal('foo'.each_byte.to_a, [102, 111, 111])
8
+ assert_equal('foo'.bytes, [102, 111, 111])
9
+ assert_equal('foo'.bytes, [102, 111, 111])
10
+ end
11
+
12
+ def test_frozen
13
+ # Commented out examples somehow work in the strict mode,
14
+ # but otherwise they don't. I have unfortunately no idea
15
+ # on where it's mangled, but then I don't see it really
16
+ # as a really harmful thing.
17
+
18
+ #assert_equal((-'x').frozen?, true)
19
+ assert_equal((+'x').frozen?, false)
20
+ #assert_equal((-+-'x').frozen?, true)
21
+ assert_equal((+-+'x').frozen?, false)
22
+ #assert_equal((`'x'`).frozen?, true)
23
+ assert_equal((+`'x'`).frozen?, false)
24
+ end
25
+ end
@@ -417,6 +417,8 @@ module Minitest
417
417
  end
418
418
  end
419
419
 
420
+ alias capture_output capture_io
421
+
420
422
  ##
421
423
  # Captures $stdout and $stderr into strings, using Tempfile to
422
424
  # ensure that subprocess IO is captured as well.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elia Schito
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-02-23 00:00:00.000000000 Z
13
+ date: 2021-07-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ast
@@ -238,6 +238,8 @@ files:
238
238
  - ".codeclimate.yml"
239
239
  - ".gitattributes"
240
240
  - ".github/FUNDING.yml"
241
+ - ".github/ISSUE_TEMPLATE/bug-report.md"
242
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
241
243
  - ".github/workflows/build.yml"
242
244
  - ".gitignore"
243
245
  - ".gitmodules"
@@ -261,6 +263,7 @@ files:
261
263
  - benchmark-ips/README.md
262
264
  - benchmark-ips/bm_array_pop_1.rb
263
265
  - benchmark-ips/bm_array_shift.rb
266
+ - benchmark-ips/bm_array_unshift.rb
264
267
  - benchmark-ips/bm_block_vs_yield.rb
265
268
  - benchmark-ips/bm_case.rb
266
269
  - benchmark-ips/bm_constants_lookup.rb
@@ -536,7 +539,6 @@ files:
536
539
  - lib/opal/parser/default_config.rb
537
540
  - lib/opal/parser/patch.rb
538
541
  - lib/opal/parser/source_buffer.rb
539
- - lib/opal/parser/with_c_lexer.rb
540
542
  - lib/opal/parser/with_ruby_lexer.rb
541
543
  - lib/opal/path_reader.rb
542
544
  - lib/opal/paths.rb
@@ -552,6 +554,7 @@ files:
552
554
  - lib/opal/rewriters/dump_args.rb
553
555
  - lib/opal/rewriters/explicit_writer_return.rb
554
556
  - lib/opal/rewriters/for_rewriter.rb
557
+ - lib/opal/rewriters/forward_args.rb
555
558
  - lib/opal/rewriters/hashes/key_duplicates_rewriter.rb
556
559
  - lib/opal/rewriters/inline_args.rb
557
560
  - lib/opal/rewriters/js_reserved_words.rb
@@ -601,10 +604,12 @@ files:
601
604
  - opal/corelib/nil.rb
602
605
  - opal/corelib/number.rb
603
606
  - opal/corelib/numeric.rb
607
+ - opal/corelib/object_space.rb
604
608
  - opal/corelib/pack_unpack/format_string_parser.rb
605
609
  - opal/corelib/proc.rb
606
610
  - opal/corelib/process.rb
607
611
  - opal/corelib/random.rb
612
+ - opal/corelib/random/formatter.rb
608
613
  - opal/corelib/random/math_random.js.rb
609
614
  - opal/corelib/random/mersenne_twister.rb
610
615
  - opal/corelib/random/seedrandom.js.rb
@@ -649,6 +654,7 @@ files:
649
654
  - spec/filters/bugs/module.rb
650
655
  - spec/filters/bugs/nilclass.rb
651
656
  - spec/filters/bugs/numeric.rb
657
+ - spec/filters/bugs/objectspace.rb
652
658
  - spec/filters/bugs/openstruct.rb
653
659
  - spec/filters/bugs/pack_unpack.rb
654
660
  - spec/filters/bugs/pathname.rb
@@ -689,6 +695,7 @@ files:
689
695
  - spec/filters/unsupported/proc.rb
690
696
  - spec/filters/unsupported/random.rb
691
697
  - spec/filters/unsupported/range.rb
698
+ - spec/filters/unsupported/refinements.rb
692
699
  - spec/filters/unsupported/regexp.rb
693
700
  - spec/filters/unsupported/set.rb
694
701
  - spec/filters/unsupported/singleton.rb
@@ -732,9 +739,11 @@ files:
732
739
  - spec/lib/rewriters/dot_js_syntax_spec.rb
733
740
  - spec/lib/rewriters/explicit_writer_return_spec.rb
734
741
  - spec/lib/rewriters/for_rewriter_spec.rb
742
+ - spec/lib/rewriters/forward_args_spec.rb
735
743
  - spec/lib/rewriters/hashes/key_duplicates_rewriter_spec.rb
736
744
  - spec/lib/rewriters/js_reserved_words_spec.rb
737
745
  - spec/lib/rewriters/logical_operator_assignment_spec.rb
746
+ - spec/lib/rewriters/numblocks_spec.rb
738
747
  - spec/lib/rewriters/opal_engine_check_spec.rb
739
748
  - spec/lib/rewriters/returnable_logic_spec.rb
740
749
  - spec/lib/rewriters/rubyspec/filters_rewriter_spec.rb
@@ -800,7 +809,10 @@ files:
800
809
  - spec/opal/core/language/DATA/empty___END___spec.rb
801
810
  - spec/opal/core/language/DATA/multiple___END___spec.rb
802
811
  - spec/opal/core/language/arguments/mlhs_arg_spec.rb
812
+ - spec/opal/core/language/forward_args_spec.rb
813
+ - spec/opal/core/language/infinite_range_spec.rb
803
814
  - spec/opal/core/language/keyword_arguments_spec.rb
815
+ - spec/opal/core/language/memoization_spec.rb
804
816
  - spec/opal/core/language/numblocks_spec.rb
805
817
  - spec/opal/core/language/safe_navigator_spec.rb
806
818
  - spec/opal/core/language/while_spec.rb
@@ -808,6 +820,7 @@ files:
808
820
  - spec/opal/core/marshal/dump_spec.rb
809
821
  - spec/opal/core/marshal/load_spec.rb
810
822
  - spec/opal/core/module_spec.rb
823
+ - spec/opal/core/number/to_i_spec.rb
811
824
  - spec/opal/core/object_id_spec.rb
812
825
  - spec/opal/core/regexp/interpolation_spec.rb
813
826
  - spec/opal/core/regexp/match_spec.rb
@@ -825,7 +838,9 @@ files:
825
838
  - spec/opal/core/runtime_spec.rb
826
839
  - spec/opal/core/string/each_byte_spec.rb
827
840
  - spec/opal/core/string/gsub_spec.rb
841
+ - spec/opal/core/string/subclassing_spec.rb
828
842
  - spec/opal/core/string/to_sym_spec.rb
843
+ - spec/opal/core/string/unpack_spec.rb
829
844
  - spec/opal/core/string_spec.rb
830
845
  - spec/opal/core/struct/dup_spec.rb
831
846
  - spec/opal/core/time_spec.rb
@@ -1029,6 +1044,7 @@ files:
1029
1044
  - test/nodejs/test_io.rb
1030
1045
  - test/nodejs/test_opal_builder.rb
1031
1046
  - test/nodejs/test_pathname.rb
1047
+ - test/nodejs/test_string.rb
1032
1048
  - test/opal/cat.png
1033
1049
  - test/opal/http_server.rb
1034
1050
  - test/opal/test_base64.rb
@@ -1057,10 +1073,10 @@ licenses:
1057
1073
  metadata:
1058
1074
  homepage_uri: https://opalrb.com/
1059
1075
  bug_tracker_uri: https://github.com/opal/opal/issues
1060
- changelog_uri: https://github.com/opal/opal/blob/v1.1.1/CHANGELOG.md
1061
- readme_uri: https://github.com/opal/opal/blob/v1.1.1/README.md
1062
- api_documentation_uri: http://opalrb.com/docs/api/v1.1.1/index.html
1063
- guides_uri: http://opalrb.com/docs/guides/v1.1.1/index.html
1076
+ changelog_uri: https://github.com/opal/opal/blob/v1.2.0.beta1/CHANGELOG.md
1077
+ readme_uri: https://github.com/opal/opal/blob/v1.2.0.beta1/README.md
1078
+ api_documentation_uri: http://opalrb.com/docs/api/v1.2.0.beta1/index.html
1079
+ guides_uri: http://opalrb.com/docs/guides/v1.2.0.beta1/index.html
1064
1080
  chat_uri: https://gitter.im/opal/opal
1065
1081
  source_code_uri: https://github.com/opal/opal
1066
1082
  post_install_message:
@@ -1074,9 +1090,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1074
1090
  version: '2.3'
1075
1091
  required_rubygems_version: !ruby/object:Gem::Requirement
1076
1092
  requirements:
1077
- - - ">="
1093
+ - - ">"
1078
1094
  - !ruby/object:Gem::Version
1079
- version: '0'
1095
+ version: 1.3.1
1080
1096
  requirements: []
1081
1097
  rubygems_version: 3.2.3
1082
1098
  signing_key:
@@ -1086,6 +1102,8 @@ test_files:
1086
1102
  - ".codeclimate.yml"
1087
1103
  - ".gitattributes"
1088
1104
  - ".github/FUNDING.yml"
1105
+ - ".github/ISSUE_TEMPLATE/bug-report.md"
1106
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
1089
1107
  - ".github/workflows/build.yml"
1090
1108
  - ".gitignore"
1091
1109
  - ".gitmodules"
@@ -1109,6 +1127,7 @@ test_files:
1109
1127
  - benchmark-ips/README.md
1110
1128
  - benchmark-ips/bm_array_pop_1.rb
1111
1129
  - benchmark-ips/bm_array_shift.rb
1130
+ - benchmark-ips/bm_array_unshift.rb
1112
1131
  - benchmark-ips/bm_block_vs_yield.rb
1113
1132
  - benchmark-ips/bm_case.rb
1114
1133
  - benchmark-ips/bm_constants_lookup.rb
@@ -1384,7 +1403,6 @@ test_files:
1384
1403
  - lib/opal/parser/default_config.rb
1385
1404
  - lib/opal/parser/patch.rb
1386
1405
  - lib/opal/parser/source_buffer.rb
1387
- - lib/opal/parser/with_c_lexer.rb
1388
1406
  - lib/opal/parser/with_ruby_lexer.rb
1389
1407
  - lib/opal/path_reader.rb
1390
1408
  - lib/opal/paths.rb
@@ -1400,6 +1418,7 @@ test_files:
1400
1418
  - lib/opal/rewriters/dump_args.rb
1401
1419
  - lib/opal/rewriters/explicit_writer_return.rb
1402
1420
  - lib/opal/rewriters/for_rewriter.rb
1421
+ - lib/opal/rewriters/forward_args.rb
1403
1422
  - lib/opal/rewriters/hashes/key_duplicates_rewriter.rb
1404
1423
  - lib/opal/rewriters/inline_args.rb
1405
1424
  - lib/opal/rewriters/js_reserved_words.rb
@@ -1449,10 +1468,12 @@ test_files:
1449
1468
  - opal/corelib/nil.rb
1450
1469
  - opal/corelib/number.rb
1451
1470
  - opal/corelib/numeric.rb
1471
+ - opal/corelib/object_space.rb
1452
1472
  - opal/corelib/pack_unpack/format_string_parser.rb
1453
1473
  - opal/corelib/proc.rb
1454
1474
  - opal/corelib/process.rb
1455
1475
  - opal/corelib/random.rb
1476
+ - opal/corelib/random/formatter.rb
1456
1477
  - opal/corelib/random/math_random.js.rb
1457
1478
  - opal/corelib/random/mersenne_twister.rb
1458
1479
  - opal/corelib/random/seedrandom.js.rb