opal 1.7.2 → 1.7.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3221ae5854f26b0d0722ddf2689773633648086a616add372e8fdd617b31d7c0
4
- data.tar.gz: b6b4a65b1905bddb6c1fd2310b13c03600ef4bb8fb416fff54e5499bfae8616c
3
+ metadata.gz: 8af0b92263196be9125b7ba0d1133b9a157aed0da2d91e282320ef8a8ce9a1a3
4
+ data.tar.gz: 8d05dfd7e6dcc883c27f674ddebc84e57c29e80c33b981d70118f44d869d80d0
5
5
  SHA512:
6
- metadata.gz: 5a009bcca000c8fef3d73cda99453023b2860615e4c4c7176e328448cd12d5f26bbf6d2809ca040f064e64af7b04ddb94857b35ac36486a0c7996be28a63230b
7
- data.tar.gz: d9154247ad9e90fbc770d647524db30fc8132b3fb77f8c5115abb67a3507fe66c0f7306a2965f1aca11bc790b2f6b7308d7db7bda7e9c3443b54bce42a957bab
6
+ metadata.gz: 52adf7dafb792d434e9d423d0f4340df8d114071e94de6165856e8396476bfca9193ba1831464bf2f701e9978f9a7674de3590680f8a1264e542cd1f0715f2b2
7
+ data.tar.gz: 6f73fb32a7837daf9ad771a75cb0f549b0a69a968b8f18fa40d1a05f66ac61109dde51b6e9717def8942dd4068c532dc413e0fdb2541d80ab7596db3d6ed4db1
data/CHANGELOG.md CHANGED
@@ -16,7 +16,7 @@ Changes are grouped as follows:
16
16
 
17
17
 
18
18
 
19
- ## [1.7.2](https://github.com/opal/opal/compare/v1.7.1...v1.7.2) - 2023-01-20
19
+ ## [1.7.3](https://github.com/opal/opal/compare/v1.7.2...v1.7.3) - 2023-03-23
20
20
 
21
21
 
22
22
  <!--
@@ -26,9 +26,23 @@ Changes are grouped as follows:
26
26
  ### Removed
27
27
  ### Deprecated
28
28
  ### Performance
29
- ### Fixed
30
29
  -->
31
30
 
31
+ ### Fixed
32
+
33
+ - Disallow to define a singleton class for Number ([#2521](https://github.com/opal/opal/pull/2521))
34
+ - Fix eval with parser gem v3.2.1 ([#2526](https://github.com/opal/opal/pull/2526))
35
+ - Fix certain encoding issues when using Prefork ([#2527](https://github.com/opal/opal/pull/2527))
36
+ - Fix Chrome CDP interface connection ([#2528](https://github.com/opal/opal/pull/2528))
37
+ - Fix for Opal::Cache::FileCache.dir_writable? ([#2529](https://github.com/opal/opal/pull/2529))
38
+ - Fix Array#sample randomness ([#2530](https://github.com/opal/opal/pull/2530))
39
+
40
+
41
+
42
+
43
+ ## [1.7.2](https://github.com/opal/opal/compare/v1.7.1...v1.7.2) - 2023-01-20
44
+
45
+
32
46
  ### Fixed
33
47
 
34
48
  - Fix the `--debug-source-map` CLI option ([#2520](https://github.com/opal/opal/pull/2520))
data/docs/index.md CHANGED
@@ -8,7 +8,7 @@ The guides for earlier releases are [available here](/docs).
8
8
 
9
9
  ## Start here
10
10
 
11
- #### [Getting Started with Opal](etting_started.html)
11
+ #### [Getting Started with Opal](getting_started.html)
12
12
 
13
13
  Everything you need to know to install Opal and create your first application.
14
14
 
@@ -131,8 +131,8 @@ module Opal
131
131
 
132
132
  class Fork
133
133
  def initialize(forkset)
134
- @parent_read, @child_write = IO.pipe
135
- @child_read, @parent_write = IO.pipe
134
+ @parent_read, @child_write = IO.pipe(binmode: true)
135
+ @child_read, @parent_write = IO.pipe(binmode: true)
136
136
  @forkset = forkset
137
137
  @in_fork = false
138
138
 
@@ -78,19 +78,16 @@ module Opal
78
78
  nil
79
79
  end
80
80
 
81
- # This complex piece of code tries to check if we can robustly mkdir_p a directory.
81
+ # Check if we can robustly mkdir_p a directory.
82
82
  def self.dir_writable?(*paths)
83
- dir = nil
84
- paths = paths.reduce([]) do |a, b|
85
- [*a, dir = a.last ? File.expand_path(b, a.last) : b]
86
- end
83
+ return false unless File.exist?(paths.first)
87
84
 
88
- File.exist?(paths.first) &&
89
- paths.reverse.all? do |i|
90
- !File.exist?(i) || (File.directory?(i) && File.writable?(i))
91
- end
85
+ until paths.empty?
86
+ dir = File.expand_path(paths.shift, dir)
87
+ ok = File.directory?(dir) && File.writable?(dir) if File.exist?(dir)
88
+ end
92
89
 
93
- dir
90
+ dir if ok
94
91
  end
95
92
 
96
93
  def self.find_dir
@@ -121,14 +121,16 @@ var server = http.createServer(function(req, res) {
121
121
 
122
122
  // actual CDP code
123
123
 
124
- CDP.List(options, function(err, targets) {
124
+ CDP.List(options, async function(err, targets) {
125
125
  // default CDP port is 9222, Firefox runner is at 9333
126
126
  // Lets collect clients for
127
127
  // Chrome CDP starting at 9273 ...
128
128
  // Firefox CDP starting 9334 ...
129
129
  port_offset = targets ? targets.length + 51 : 51; // default CDP port is 9222, Node CDP port 9229, Firefox is at 9333
130
130
 
131
- return CDP(options, function(browser_client) {
131
+ const {webSocketDebuggerUrl} = await CDP.Version(options);
132
+
133
+ return await CDP({target: webSocketDebuggerUrl}, function(browser_client) {
132
134
 
133
135
  server.listen({ port: port_offset + options.port, host: options.host });
134
136
 
@@ -94,10 +94,12 @@ var server = http.createServer(function(req, res) {
94
94
 
95
95
  // actual CDP code
96
96
 
97
- CDP.List(options, function(err, targets) {
97
+ CDP.List(options, async function(err, targets) {
98
98
  offset = targets ? targets.length + 1 : 1;
99
99
 
100
- return CDP(options, function(browser_client) {
100
+ const {webSocketDebuggerUrl} = await CDP.Version(options);
101
+
102
+ return await CDP({target: webSocketDebuggerUrl}, function(browser_client) {
101
103
 
102
104
  server.listen({port: offset + options.port, host: options.host });
103
105
 
@@ -13,6 +13,12 @@ if RUBY_ENGINE == 'opal'
13
13
  else
14
14
  @source_pts = nil
15
15
  end
16
+
17
+ # Since parser v3.2.1 Parser::Lexer has @strings
18
+ if @strings
19
+ @strings.source_buffer = @source_buffer
20
+ @strings.source_pts = @source_pts
21
+ end
16
22
  end
17
23
  end
18
24
 
data/lib/opal/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  module Opal
4
4
  # WHEN RELEASING:
5
5
  # Remember to update RUBY_ENGINE_VERSION in opal/corelib/constants.rb too!
6
- VERSION = '1.7.2'
6
+ VERSION = '1.7.3'
7
7
  end
@@ -1927,9 +1927,9 @@ class ::Array < `Array`
1927
1927
  break;
1928
1928
  case 2:
1929
1929
  i = #{rng.rand(`self.length`)};
1930
- j = #{rng.rand(`self.length`)};
1931
- if (i === j) {
1932
- j = i === 0 ? i + 1 : i - 1;
1930
+ j = #{rng.rand(`self.length - 1`)};
1931
+ if (i <= j) {
1932
+ j++;
1933
1933
  }
1934
1934
  return [self[i], self[j]];
1935
1935
  break;
@@ -1981,7 +1981,7 @@ class ::Array < `Array`
1981
1981
  result = self.slice();
1982
1982
 
1983
1983
  for (var c = 0; c < count; c++) {
1984
- targetIndex = #{rng.rand(`self.length`)};
1984
+ targetIndex = #{rng.rand(`self.length - c`)} + c;
1985
1985
  oldValue = result[c];
1986
1986
  result[c] = result[targetIndex];
1987
1987
  result[targetIndex] = oldValue;
@@ -1,8 +1,8 @@
1
1
  ::RUBY_PLATFORM = 'opal'
2
2
  ::RUBY_ENGINE = 'opal'
3
3
  ::RUBY_VERSION = '3.2.0'
4
- ::RUBY_ENGINE_VERSION = '1.7.2'
5
- ::RUBY_RELEASE_DATE = '2023-01-20'
4
+ ::RUBY_ENGINE_VERSION = '1.7.3'
5
+ ::RUBY_RELEASE_DATE = '2023-03-23'
6
6
  ::RUBY_PATCHLEVEL = 0
7
7
  ::RUBY_REVISION = '0'
8
8
  ::RUBY_COPYRIGHT = 'opal - Copyright (C) 2011-2023 Adam Beynon and the Opal contributors'
@@ -824,6 +824,9 @@
824
824
  // @param object [Object] the ruby object
825
825
  // @return [Class] the singleton class for object
826
826
  Opal.get_singleton_class = function(object) {
827
+ if (object.$$is_number) {
828
+ $raise(Opal.TypeError, "can't define singleton");
829
+ }
827
830
  if (object.$$meta) {
828
831
  return object.$$meta;
829
832
  }
@@ -27,7 +27,6 @@ opal_filter "Array" do
27
27
  fails "Array#rassoc calls elem == obj on the second element of each contained array" # Expected [1, "foobar"] == [2, #<MockObject:0x4a6b4 @name="foobar", @null=nil>] to be truthy but was false
28
28
  fails "Array#rassoc does not check the last element in each contained but specifically the second" # Expected [1, "foobar", #<MockObject:0x4a37e @name="foobar", @null=nil>] == [2, #<MockObject:0x4a37e @name="foobar", @null=nil>, 1] to be truthy but was false
29
29
  fails "Array#sample returns nil for an empty array when called without n and a Random is given" # ArgumentError: invalid argument - 0
30
- fails "Array#sample samples evenly" # Expected 15.82 <= 13.277 to be truthy but was false
31
30
  fails "Array#select returns a new array of elements for which block is true" # Expected [1] == [1, 4, 6] to be truthy but was false
32
31
  fails "Array#slice can be sliced with Enumerator::ArithmeticSequence has endless range with start outside of array's bounds" # Expected [] == nil to be truthy but was false
33
32
  fails "Array#slice can be sliced with Enumerator::ArithmeticSequence has range with bounds outside of array" # Expected RangeError but no exception was raised ([0, 2, 4] was returned)
@@ -1,6 +1,5 @@
1
1
  # NOTE: run bin/format-filters after changing this file
2
2
  opal_filter "Integer" do
3
- fails "A singleton class raises a TypeError for Integer's" # Expected TypeError but got: Exception (Object.defineProperty called on non-object)
4
3
  fails "Bignum is deprecated" # NameError: uninitialized constant Bignum
5
4
  fails "Bignum is unified into Integer" # NameError: uninitialized constant Bignum
6
5
  fails "Fixnum is deprecated" # Expected warning to match: /constant ::Fixnum is deprecated/ but got: ""
@@ -134,7 +134,6 @@ opal_filter "Kernel" do
134
134
  fails "Kernel#respond_to? throws a type error if argument can't be coerced into a Symbol" # Expected TypeError (/is not a symbol nor a string/) but no exception was raised (false was returned)
135
135
  fails "Kernel#respond_to_missing? causes #respond_to? to return false if called and returning nil" # Expected nil to be false
136
136
  fails "Kernel#respond_to_missing? causes #respond_to? to return true if called and not returning false" # Expected "glark" to be true
137
- fails "Kernel#singleton_class raises TypeError for Integer" # Expected TypeError but got: Exception (Object.defineProperty called on non-object)
138
137
  fails "Kernel#singleton_class raises TypeError for Symbol" # Expected TypeError but no exception was raised (#<Class:#<String:0x53aaa>> was returned)
139
138
  fails "Kernel#singleton_method find a method defined on the singleton class" # NoMethodError: undefined method `singleton_method' for #<Object:0x4540a>
140
139
  fails "Kernel#singleton_method only looks at singleton methods and not at methods in the class" # Expected NoMethodError == NameError to be truthy but was false
@@ -16,7 +16,6 @@ opal_filter "language" do
16
16
  fails "A block yielded a single Array when non-symbol keys are in a keyword arguments Hash does not separate non-symbol keys and symbol keys and does not autosplat" # Expected [nil, {"a"=>10, "b"=>2}] == [[{"a"=>10, "b"=>2}], {}] to be truthy but was false
17
17
  fails "A block yielded a single Object receives the object if it does not respond to #respond_to?" # NoMethodError: undefined method `respond_to?' for #<BasicObject:0x551e>
18
18
  fails "A class definition extending an object (sclass) can use return to cause the enclosing method to return" # Expected "outer" == "inner" to be truthy but was false
19
- fails "A class definition extending an object (sclass) raises a TypeError when trying to extend numbers" # Expected TypeError but got: Exception (Object.defineProperty called on non-object)
20
19
  fails "A class definition raises TypeError if any constant qualifying the class is not a Module" # Expected TypeError but no exception was raised (nil was returned)
21
20
  fails "A class definition raises TypeError if the constant qualifying the class is nil" # Expected TypeError but no exception was raised (nil was returned)
22
21
  fails "A class definition raises a TypeError if inheriting from a metaclass" # Expected TypeError but no exception was raised (nil was returned)
@@ -50,7 +49,6 @@ opal_filter "language" do
50
49
  fails "A nested method definition creates an instance method when evaluated in an instance method" # NoMethodError: undefined method `an_instance_method' for #<DefSpecNested:0x1064c>
51
50
  fails "A number literal can be a decimal literal with trailing 'r' to represent a Rational" # Expected (5404319552844595/18014398509481984) == (3/10) to be truthy but was false
52
51
  fails "A number literal can be a float literal with trailing 'r' to represent a Rational" # Expected (5030569068109113/288230376151711740) == (136353847812057/7812500000000000) to be truthy but was false
53
- fails "A singleton class doesn't have singleton class" # Expected TypeError but got: Exception (Object.defineProperty called on non-object)
54
52
  fails "A singleton class raises a TypeError for symbols" # Expected TypeError but no exception was raised (#<Class:#<String:0x9093e>> was returned)
55
53
  fails "A singleton method definition can be declared for a global variable" # TypeError: can't define singleton
56
54
  fails "A singleton method definition raises FrozenError with the correct class name" # Expected "can't modify frozen Class: #<Class:#<Object:0x10574>>".start_with? "can't modify frozen object" to be truthy but was false
@@ -325,7 +323,6 @@ opal_filter "language" do
325
323
  fails "a method definition that sets more than one default parameter all to the same value treats the argument after the multi-parameter normally" # Expected ArgumentError (wrong number of arguments (given 3, expected 0..2)) but got: ArgumentError ([MSpecEnv#bar] wrong number of arguments (given 3, expected -1))
326
324
  fails "kwarg with omitted value in a method call accepts short notation 'kwarg' in method call for definition 'def call(*args, **kwargs) = [args, kwargs]'" # NameError: uninitialized constant SpecEvaluate::a
327
325
  fails "kwarg with omitted value in a method call with methods and local variables for definition \n def call(*args, **kwargs) = [args, kwargs]\n def bar\n \"baz\"\n end\n def foo(val)\n call bar:, val:\n end" # NameError: uninitialized constant SpecEvaluate::bar
328
- fails "self in a metaclass body (class << obj) raises a TypeError for numbers" # Expected TypeError but got: Exception (Object.defineProperty called on non-object)
329
326
  fails "self in a metaclass body (class << obj) raises a TypeError for symbols" # Expected TypeError but got: Exception (Cannot create property '$$meta' on string 'symbol')
330
327
  fails "self.send(:block_given?) returns false when a method defined by define_method is called with a block" # NoMethodError: undefined method `block_given?' for KernelSpecs::SelfBlockGiven
331
328
  fails "self.send(:block_given?) returns true if and only if a block is supplied" # NoMethodError: undefined method `block_given?' for KernelSpecs::SelfBlockGiven
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.7.2
4
+ version: 1.7.3
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: 2023-01-20 00:00:00.000000000 Z
13
+ date: 2023-03-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ast
@@ -1215,10 +1215,10 @@ licenses:
1215
1215
  metadata:
1216
1216
  homepage_uri: https://opalrb.com/
1217
1217
  bug_tracker_uri: https://github.com/opal/opal/issues
1218
- changelog_uri: https://github.com/opal/opal/blob/v1.7.2/CHANGELOG.md
1219
- readme_uri: https://github.com/opal/opal/blob/v1.7.2/README.md
1220
- api_documentation_uri: http://opalrb.com/docs/api/v1.7.2/index.html
1221
- guides_uri: http://opalrb.com/docs/guides/v1.7.2/index.html
1218
+ changelog_uri: https://github.com/opal/opal/blob/v1.7.3/CHANGELOG.md
1219
+ readme_uri: https://github.com/opal/opal/blob/v1.7.3/README.md
1220
+ api_documentation_uri: http://opalrb.com/docs/api/v1.7.3/index.html
1221
+ guides_uri: http://opalrb.com/docs/guides/v1.7.3/index.html
1222
1222
  chat_uri: https://gitter.im/opal/opal
1223
1223
  source_code_uri: https://github.com/opal/opal
1224
1224
  post_install_message:
@@ -1236,7 +1236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1236
1236
  - !ruby/object:Gem::Version
1237
1237
  version: '0'
1238
1238
  requirements: []
1239
- rubygems_version: 3.4.3
1239
+ rubygems_version: 3.4.5
1240
1240
  signing_key:
1241
1241
  specification_version: 4
1242
1242
  summary: Ruby runtime and core library for JavaScript