opal 1.3.0.alpha1 → 1.3.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +3 -1
- data/UNRELEASED.md +29 -6
- data/examples/rack/Gemfile +1 -0
- data/examples/rack/Gemfile.lock +11 -7
- data/examples/rack-esm/.gitignore +1 -0
- data/examples/rack-esm/Gemfile +5 -0
- data/examples/rack-esm/app/application.rb +27 -0
- data/examples/rack-esm/app/user.rb +24 -0
- data/examples/rack-esm/config.ru +25 -0
- data/examples/rack-esm/index.html.erb +11 -0
- data/examples/sinatra/Gemfile.lock +21 -19
- data/lib/opal/builder.rb +39 -23
- data/lib/opal/builder_processors.rb +6 -1
- data/lib/opal/cache/file_cache.rb +7 -6
- data/lib/opal/cli_runners/chrome.rb +20 -15
- data/lib/opal/cli_runners/chrome_cdp_interface.rb +1 -1
- data/lib/opal/cli_runners/nodejs.rb +3 -2
- data/lib/opal/cli_runners/quickjs.rb +28 -0
- data/lib/opal/cli_runners.rb +1 -0
- data/lib/opal/compiler.rb +8 -2
- data/lib/opal/config.rb +5 -0
- data/lib/opal/nodes/call.rb +45 -26
- data/lib/opal/nodes/helpers.rb +1 -1
- data/lib/opal/nodes/top.rb +5 -8
- data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +16 -0
- data/lib/opal/simple_server.rb +7 -2
- data/lib/opal/util.rb +1 -1
- data/lib/opal/version.rb +1 -1
- data/opal/corelib/complex/base.rb +15 -0
- data/opal/corelib/complex.rb +3 -15
- data/opal/corelib/constants.rb +2 -2
- data/opal/corelib/error.rb +1 -1
- data/opal/corelib/helpers.rb +10 -0
- data/opal/corelib/io.rb +4 -0
- data/opal/corelib/kernel.rb +21 -5
- data/opal/corelib/main.rb +4 -0
- data/opal/corelib/method.rb +4 -0
- data/opal/corelib/module.rb +39 -16
- data/opal/corelib/pattern_matching/base.rb +35 -0
- data/opal/corelib/pattern_matching.rb +2 -36
- data/opal/corelib/process/base.rb +9 -0
- data/opal/corelib/process.rb +1 -11
- data/opal/corelib/random.rb +4 -0
- data/opal/corelib/rational/base.rb +11 -0
- data/opal/corelib/rational.rb +3 -10
- data/opal/corelib/regexp.rb +1 -1
- data/opal/corelib/runtime.js +38 -3
- data/opal/opal/full.rb +5 -4
- data/opal/opal.rb +12 -11
- data/package.json +1 -1
- data/spec/filters/bugs/bigdecimal.rb +0 -1
- data/spec/filters/bugs/enumerator.rb +5 -0
- data/spec/filters/bugs/float.rb +3 -0
- data/spec/filters/bugs/kernel.rb +2 -9
- data/spec/filters/bugs/language.rb +0 -1
- data/spec/filters/bugs/marshal.rb +3 -0
- data/spec/filters/bugs/method.rb +1 -2
- data/spec/filters/bugs/module.rb +0 -6
- data/spec/filters/bugs/rational.rb +1 -0
- data/spec/filters/bugs/regexp.rb +0 -1
- data/spec/lib/compiler_spec.rb +2 -2
- data/spec/mspec-opal/runner.rb +1 -0
- data/stdlib/benchmark.rb +14 -0
- data/stdlib/buffer.rb +4 -0
- data/stdlib/nashorn/file.rb +2 -0
- data/stdlib/native.rb +63 -58
- data/stdlib/nodejs/argf.rb +110 -0
- data/stdlib/nodejs/env.rb +12 -0
- data/stdlib/nodejs/file.rb +10 -0
- data/stdlib/nodejs/kernel.rb +56 -0
- data/stdlib/nodejs.rb +1 -0
- data/stdlib/opal/platform.rb +2 -0
- data/stdlib/opal-platform.rb +5 -2
- data/stdlib/pathname.rb +4 -0
- data/stdlib/quickjs/io.rb +22 -0
- data/stdlib/quickjs/kernel.rb +5 -0
- data/stdlib/quickjs.rb +2 -0
- data/stdlib/securerandom.rb +2 -0
- data/tasks/performance.rake +2 -1
- data/tasks/testing.rake +1 -1
- metadata +36 -8
- data/lib/opal/cli_runners/chrome_cdp_interface.js +0 -30285
data/stdlib/nodejs/env.rb
CHANGED
data/stdlib/nodejs/file.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'corelib/file'
|
2
|
+
|
1
3
|
%x{
|
2
4
|
var warnings = {}, errno_code, errno_codes = [
|
3
5
|
'EACCES',
|
@@ -146,6 +148,14 @@ class File < IO
|
|
146
148
|
data.size
|
147
149
|
end
|
148
150
|
|
151
|
+
def self.delete(path)
|
152
|
+
`executeIOAction(function(){return __fs__.unlinkSync(#{path})})`
|
153
|
+
end
|
154
|
+
|
155
|
+
class << self
|
156
|
+
alias unlink delete
|
157
|
+
end
|
158
|
+
|
149
159
|
def self.exist?(path)
|
150
160
|
path = path.path if path.respond_to? :path
|
151
161
|
`return executeIOAction(function(){return __fs__.existsSync(#{path})})`
|
data/stdlib/nodejs/kernel.rb
CHANGED
@@ -1,13 +1,69 @@
|
|
1
|
+
require 'native'
|
2
|
+
|
1
3
|
`Opal.exit = process.exit`
|
2
4
|
|
3
5
|
module Kernel
|
4
6
|
NODE_REQUIRE = `require`
|
5
7
|
|
8
|
+
@__child_process__ = `require('child_process')`
|
9
|
+
`var __child_process__ = #{@__child_process__}`
|
10
|
+
|
6
11
|
# @deprecated Please use `require('module')` instead
|
7
12
|
def node_require(path)
|
8
13
|
warn '[DEPRECATION] node_require is deprecated. Please use `require(\'module\')` instead.'
|
9
14
|
`#{NODE_REQUIRE}(#{path.to_str})`
|
10
15
|
end
|
16
|
+
|
17
|
+
def system(*argv, exception: false)
|
18
|
+
env = {}
|
19
|
+
env = argv.shift if argv.first.is_a? Hash
|
20
|
+
env = ENV.merge(env).to_n
|
21
|
+
cmdname = argv.shift
|
22
|
+
|
23
|
+
out = if argv.empty?
|
24
|
+
`__child_process__.spawnSync(#{cmdname}, { shell: true, stdio: 'inherit', env: #{env} })`
|
25
|
+
elsif Array === cmdname
|
26
|
+
`__child_process__.spawnSync(#{cmdname[0]}, #{argv}, { argv0: #{cmdname[1]}, stdio: 'inherit', env: #{env} })`
|
27
|
+
else
|
28
|
+
`__child_process__.spawnSync(#{cmdname}, #{argv}, { stdio: 'inherit', env: #{env} })`
|
29
|
+
end
|
30
|
+
|
31
|
+
status = out.JS[:status]
|
32
|
+
status = 127 if `status === null`
|
33
|
+
pid = out.JS[:pid]
|
34
|
+
|
35
|
+
$? = Process::Status.new(status, pid)
|
36
|
+
raise "Command failed with exit #{status}: #{cmdname}" if exception && status != 0
|
37
|
+
status == 0
|
38
|
+
end
|
39
|
+
|
40
|
+
def `(cmdline)
|
41
|
+
Buffer.new(`__child_process__.execSync(#{cmdline})`).to_s.encode('UTF-8')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
module Process
|
46
|
+
class Status
|
47
|
+
def initialize(status, pid)
|
48
|
+
@status, @pid = status, pid
|
49
|
+
end
|
50
|
+
|
51
|
+
def exitstatus
|
52
|
+
@status
|
53
|
+
end
|
54
|
+
|
55
|
+
attr_reader :pid
|
56
|
+
|
57
|
+
def success?
|
58
|
+
@status == 0
|
59
|
+
end
|
60
|
+
|
61
|
+
def inspect
|
62
|
+
"#<Process::Status: pid #{@pid} exit #{@status}>"
|
63
|
+
end
|
64
|
+
end
|
11
65
|
end
|
12
66
|
|
13
67
|
ARGV = `process.argv.slice(2)`
|
68
|
+
|
69
|
+
ARGV.shift if ARGV.first == '--'
|
data/stdlib/nodejs.rb
CHANGED
data/stdlib/opal/platform.rb
CHANGED
data/stdlib/opal-platform.rb
CHANGED
@@ -5,7 +5,8 @@ node = `typeof(process) !== "undefined" && process.versions && proces
|
|
5
5
|
nashorn = `typeof(Java) !== "undefined" && Java.type`
|
6
6
|
headless_chrome = `typeof(navigator) !== "undefined" && /\bHeadlessChrome\//.test(navigator.userAgent)`
|
7
7
|
gjs = `typeof(window) !== "undefined" && typeof(GjsFileImporter) !== 'undefined'`
|
8
|
-
|
8
|
+
quickjs = `typeof(window) === "undefined" && typeof(__loadScript) !== 'undefined'`
|
9
|
+
opal_miniracer = `typeof(opalminiracer) !== 'undefined'`
|
9
10
|
|
10
11
|
OPAL_PLATFORM = if nashorn
|
11
12
|
'nashorn'
|
@@ -15,7 +16,9 @@ OPAL_PLATFORM = if nashorn
|
|
15
16
|
'headless-chrome'
|
16
17
|
elsif gjs
|
17
18
|
'gjs'
|
18
|
-
elsif
|
19
|
+
elsif quickjs
|
20
|
+
'quickjs'
|
21
|
+
elsif opal_miniracer
|
19
22
|
'opal-miniracer'
|
20
23
|
else # possibly browser, which is the primary target
|
21
24
|
end
|
data/stdlib/pathname.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
`/* global std */`
|
2
|
+
|
3
|
+
%x{
|
4
|
+
Opal.gvars.stdout.write_proc = function(s) {
|
5
|
+
std.out.printf("%s", s);
|
6
|
+
std.out.flush();
|
7
|
+
}
|
8
|
+
|
9
|
+
Opal.gvars.stderr.write_proc = function(s) {
|
10
|
+
std.err.printf("%s", s);
|
11
|
+
std.err.flush();
|
12
|
+
}
|
13
|
+
|
14
|
+
Opal.gvars.stdin.read_proc = function(s) {
|
15
|
+
if (std.in.eof()) {
|
16
|
+
return nil;
|
17
|
+
}
|
18
|
+
else {
|
19
|
+
return std.in.readAsString(s);
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
data/stdlib/quickjs.rb
ADDED
data/stdlib/securerandom.rb
CHANGED
data/tasks/performance.rake
CHANGED
@@ -55,6 +55,7 @@ ASCIIDOCTOR_PREPARE = [
|
|
55
55
|
ASCIIDOCTOR_BUILD_OPAL = "bin/opal --no-cache -c " \
|
56
56
|
"-Itmp/performance/asciidoctor/lib " \
|
57
57
|
"-Itmp/performance/asciidoctor.js/packages/core/lib " \
|
58
|
+
"-sconcurrent/map -sslim/include " \
|
58
59
|
"tmp/performance/asciidoctor_test.rb > tmp/performance/asciidoctor_test.js"
|
59
60
|
ASCIIDOCTOR_RUN_RUBY = "bundle exec ruby -Itmp/performance/asciidoctor/lib tmp/performance/asciidoctor_test.rb"
|
60
61
|
ASCIIDOCTOR_RUN_OPAL = "node tmp/performance/asciidoctor_test.js"
|
@@ -70,7 +71,7 @@ performance_stat = ->(name) {
|
|
70
71
|
sh("#{NODE_OPTSTATUS} > tmp/performance/optstatus_#{name}")
|
71
72
|
|
72
73
|
puts "\n* Building AsciiDoctor with #{name}..."
|
73
|
-
stat[:compiler_time] = mean_time.(tries:
|
74
|
+
stat[:compiler_time] = mean_time.(tries: 7) { sh(ASCIIDOCTOR_BUILD_OPAL) }
|
74
75
|
|
75
76
|
puts "\n* Running AsciiDoctor with #{name}..."
|
76
77
|
stat[:run_time] = mean_time.(tries: 31) { sh("#{ASCIIDOCTOR_RUN_OPAL} > tmp/performance/opal_result_#{name}.html") }
|
data/tasks/testing.rake
CHANGED
@@ -284,7 +284,7 @@ Use PATTERN environment variable to manually set the glob for specs:
|
|
284
284
|
bundle exec rake mspec_nodejs PATTERN=spec/ruby/core/numeric/**_spec.rb
|
285
285
|
DESC
|
286
286
|
|
287
|
-
platforms = %w[nodejs server chrome gjs]
|
287
|
+
platforms = %w[nodejs server chrome gjs quickjs]
|
288
288
|
mspec_suites = %w[ruby opal]
|
289
289
|
minitest_suites = %w[cruby]
|
290
290
|
|
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.3.0.
|
4
|
+
version: 1.3.0.rc1
|
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-
|
13
|
+
date: 2021-10-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ast
|
@@ -406,6 +406,12 @@ files:
|
|
406
406
|
- docs/unsupported_features.md
|
407
407
|
- docs/upgrading.md
|
408
408
|
- docs/using_sprockets.md
|
409
|
+
- examples/rack-esm/.gitignore
|
410
|
+
- examples/rack-esm/Gemfile
|
411
|
+
- examples/rack-esm/app/application.rb
|
412
|
+
- examples/rack-esm/app/user.rb
|
413
|
+
- examples/rack-esm/config.ru
|
414
|
+
- examples/rack-esm/index.html.erb
|
409
415
|
- examples/rack/.gitignore
|
410
416
|
- examples/rack/Gemfile
|
411
417
|
- examples/rack/Gemfile.lock
|
@@ -432,7 +438,6 @@ files:
|
|
432
438
|
- lib/opal/cli_runners.rb
|
433
439
|
- lib/opal/cli_runners/applescript.rb
|
434
440
|
- lib/opal/cli_runners/chrome.rb
|
435
|
-
- lib/opal/cli_runners/chrome_cdp_interface.js
|
436
441
|
- lib/opal/cli_runners/chrome_cdp_interface.rb
|
437
442
|
- lib/opal/cli_runners/compiler.rb
|
438
443
|
- lib/opal/cli_runners/gjs.rb
|
@@ -477,6 +482,7 @@ files:
|
|
477
482
|
- lib/opal/cli_runners/node_modules/ws/package.json
|
478
483
|
- lib/opal/cli_runners/nodejs.rb
|
479
484
|
- lib/opal/cli_runners/package.json
|
485
|
+
- lib/opal/cli_runners/quickjs.rb
|
480
486
|
- lib/opal/cli_runners/server.rb
|
481
487
|
- lib/opal/cli_runners/source-map-support-browser.js
|
482
488
|
- lib/opal/cli_runners/source-map-support-node.js
|
@@ -592,6 +598,7 @@ files:
|
|
592
598
|
- opal/corelib/class.rb
|
593
599
|
- opal/corelib/comparable.rb
|
594
600
|
- opal/corelib/complex.rb
|
601
|
+
- opal/corelib/complex/base.rb
|
595
602
|
- opal/corelib/constants.rb
|
596
603
|
- opal/corelib/dir.rb
|
597
604
|
- opal/corelib/enumerable.rb
|
@@ -616,8 +623,10 @@ files:
|
|
616
623
|
- opal/corelib/object_space.rb
|
617
624
|
- opal/corelib/pack_unpack/format_string_parser.rb
|
618
625
|
- opal/corelib/pattern_matching.rb
|
626
|
+
- opal/corelib/pattern_matching/base.rb
|
619
627
|
- opal/corelib/proc.rb
|
620
628
|
- opal/corelib/process.rb
|
629
|
+
- opal/corelib/process/base.rb
|
621
630
|
- opal/corelib/random.rb
|
622
631
|
- opal/corelib/random/formatter.rb
|
623
632
|
- opal/corelib/random/math_random.js.rb
|
@@ -625,6 +634,7 @@ files:
|
|
625
634
|
- opal/corelib/random/seedrandom.js.rb
|
626
635
|
- opal/corelib/range.rb
|
627
636
|
- opal/corelib/rational.rb
|
637
|
+
- opal/corelib/rational/base.rb
|
628
638
|
- opal/corelib/regexp.rb
|
629
639
|
- opal/corelib/runtime.js
|
630
640
|
- opal/corelib/string.rb
|
@@ -947,6 +957,7 @@ files:
|
|
947
957
|
- stdlib/nashorn/io.rb
|
948
958
|
- stdlib/native.rb
|
949
959
|
- stdlib/nodejs.rb
|
960
|
+
- stdlib/nodejs/argf.rb
|
950
961
|
- stdlib/nodejs/dir.rb
|
951
962
|
- stdlib/nodejs/env.rb
|
952
963
|
- stdlib/nodejs/file.rb
|
@@ -1038,6 +1049,9 @@ files:
|
|
1038
1049
|
- stdlib/promise.rb
|
1039
1050
|
- stdlib/promise/v1.rb
|
1040
1051
|
- stdlib/promise/v2.rb
|
1052
|
+
- stdlib/quickjs.rb
|
1053
|
+
- stdlib/quickjs/io.rb
|
1054
|
+
- stdlib/quickjs/kernel.rb
|
1041
1055
|
- stdlib/racc/parser.rb
|
1042
1056
|
- stdlib/rbconfig.rb
|
1043
1057
|
- stdlib/rbconfig/sizeof.rb
|
@@ -1107,10 +1121,10 @@ licenses:
|
|
1107
1121
|
metadata:
|
1108
1122
|
homepage_uri: https://opalrb.com/
|
1109
1123
|
bug_tracker_uri: https://github.com/opal/opal/issues
|
1110
|
-
changelog_uri: https://github.com/opal/opal/blob/v1.3.0.
|
1111
|
-
readme_uri: https://github.com/opal/opal/blob/v1.3.0.
|
1112
|
-
api_documentation_uri: http://opalrb.com/docs/api/v1.3.0.
|
1113
|
-
guides_uri: http://opalrb.com/docs/guides/v1.3.0.
|
1124
|
+
changelog_uri: https://github.com/opal/opal/blob/v1.3.0.rc1/CHANGELOG.md
|
1125
|
+
readme_uri: https://github.com/opal/opal/blob/v1.3.0.rc1/README.md
|
1126
|
+
api_documentation_uri: http://opalrb.com/docs/api/v1.3.0.rc1/index.html
|
1127
|
+
guides_uri: http://opalrb.com/docs/guides/v1.3.0.rc1/index.html
|
1114
1128
|
chat_uri: https://gitter.im/opal/opal
|
1115
1129
|
source_code_uri: https://github.com/opal/opal
|
1116
1130
|
post_install_message:
|
@@ -1304,6 +1318,12 @@ test_files:
|
|
1304
1318
|
- docs/unsupported_features.md
|
1305
1319
|
- docs/upgrading.md
|
1306
1320
|
- docs/using_sprockets.md
|
1321
|
+
- examples/rack-esm/.gitignore
|
1322
|
+
- examples/rack-esm/Gemfile
|
1323
|
+
- examples/rack-esm/app/application.rb
|
1324
|
+
- examples/rack-esm/app/user.rb
|
1325
|
+
- examples/rack-esm/config.ru
|
1326
|
+
- examples/rack-esm/index.html.erb
|
1307
1327
|
- examples/rack/.gitignore
|
1308
1328
|
- examples/rack/Gemfile
|
1309
1329
|
- examples/rack/Gemfile.lock
|
@@ -1330,7 +1350,6 @@ test_files:
|
|
1330
1350
|
- lib/opal/cli_runners.rb
|
1331
1351
|
- lib/opal/cli_runners/applescript.rb
|
1332
1352
|
- lib/opal/cli_runners/chrome.rb
|
1333
|
-
- lib/opal/cli_runners/chrome_cdp_interface.js
|
1334
1353
|
- lib/opal/cli_runners/chrome_cdp_interface.rb
|
1335
1354
|
- lib/opal/cli_runners/compiler.rb
|
1336
1355
|
- lib/opal/cli_runners/gjs.rb
|
@@ -1375,6 +1394,7 @@ test_files:
|
|
1375
1394
|
- lib/opal/cli_runners/node_modules/ws/package.json
|
1376
1395
|
- lib/opal/cli_runners/nodejs.rb
|
1377
1396
|
- lib/opal/cli_runners/package.json
|
1397
|
+
- lib/opal/cli_runners/quickjs.rb
|
1378
1398
|
- lib/opal/cli_runners/server.rb
|
1379
1399
|
- lib/opal/cli_runners/source-map-support-browser.js
|
1380
1400
|
- lib/opal/cli_runners/source-map-support-node.js
|
@@ -1490,6 +1510,7 @@ test_files:
|
|
1490
1510
|
- opal/corelib/class.rb
|
1491
1511
|
- opal/corelib/comparable.rb
|
1492
1512
|
- opal/corelib/complex.rb
|
1513
|
+
- opal/corelib/complex/base.rb
|
1493
1514
|
- opal/corelib/constants.rb
|
1494
1515
|
- opal/corelib/dir.rb
|
1495
1516
|
- opal/corelib/enumerable.rb
|
@@ -1514,8 +1535,10 @@ test_files:
|
|
1514
1535
|
- opal/corelib/object_space.rb
|
1515
1536
|
- opal/corelib/pack_unpack/format_string_parser.rb
|
1516
1537
|
- opal/corelib/pattern_matching.rb
|
1538
|
+
- opal/corelib/pattern_matching/base.rb
|
1517
1539
|
- opal/corelib/proc.rb
|
1518
1540
|
- opal/corelib/process.rb
|
1541
|
+
- opal/corelib/process/base.rb
|
1519
1542
|
- opal/corelib/random.rb
|
1520
1543
|
- opal/corelib/random/formatter.rb
|
1521
1544
|
- opal/corelib/random/math_random.js.rb
|
@@ -1523,6 +1546,7 @@ test_files:
|
|
1523
1546
|
- opal/corelib/random/seedrandom.js.rb
|
1524
1547
|
- opal/corelib/range.rb
|
1525
1548
|
- opal/corelib/rational.rb
|
1549
|
+
- opal/corelib/rational/base.rb
|
1526
1550
|
- opal/corelib/regexp.rb
|
1527
1551
|
- opal/corelib/runtime.js
|
1528
1552
|
- opal/corelib/string.rb
|
@@ -1576,6 +1600,7 @@ test_files:
|
|
1576
1600
|
- stdlib/nashorn/io.rb
|
1577
1601
|
- stdlib/native.rb
|
1578
1602
|
- stdlib/nodejs.rb
|
1603
|
+
- stdlib/nodejs/argf.rb
|
1579
1604
|
- stdlib/nodejs/dir.rb
|
1580
1605
|
- stdlib/nodejs/env.rb
|
1581
1606
|
- stdlib/nodejs/file.rb
|
@@ -1667,6 +1692,9 @@ test_files:
|
|
1667
1692
|
- stdlib/promise.rb
|
1668
1693
|
- stdlib/promise/v1.rb
|
1669
1694
|
- stdlib/promise/v2.rb
|
1695
|
+
- stdlib/quickjs.rb
|
1696
|
+
- stdlib/quickjs/io.rb
|
1697
|
+
- stdlib/quickjs/kernel.rb
|
1670
1698
|
- stdlib/racc/parser.rb
|
1671
1699
|
- stdlib/rbconfig.rb
|
1672
1700
|
- stdlib/rbconfig/sizeof.rb
|