opal 0.11.4 → 1.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +42 -10
- data/.rubocop.yml +398 -0
- data/.rubocop_todo.yml +44 -0
- data/.travis.yml +28 -34
- data/CHANGELOG.md +363 -142
- data/CONTRIBUTING.md +3 -5
- data/Gemfile +17 -12
- data/Guardfile +0 -1
- data/HACKING.md +1 -35
- data/LICENSE +2 -2
- data/README.md +42 -13
- data/Rakefile +1 -4
- data/UNRELEASED.md +133 -0
- data/benchmark-ips/README.md +6 -0
- data/benchmark-ips/bm_block_vs_yield.rb +21 -0
- data/benchmark-ips/bm_js_symbols_vs_strings.rb +28 -0
- data/benchmark-ips/bm_while_true_vs_loop.rb +19 -0
- data/bin/console +14 -0
- data/bin/opal +0 -1
- data/bin/opal-benchmark-ips +8 -0
- data/bin/opal-mspec +9 -1
- data/bin/opal-repl +2 -1
- data/bin/rake +7 -0
- data/bin/setup +8 -0
- data/docs/compiled_ruby.md +89 -8
- data/docs/compiler.md +3 -20
- data/docs/jquery.md +44 -11
- data/docs/promises.md +1 -1
- data/docs/rails.md +16 -12
- data/docs/sinatra.md +15 -8
- data/docs/using_sprockets.md +16 -11
- data/examples/rack/config.ru +1 -0
- data/examples/sinatra/Gemfile +1 -0
- data/examples/sinatra/config.ru +2 -11
- data/exe/opal-repl +3 -11
- data/lib/opal.rb +1 -0
- data/lib/opal/ast/builder.rb +4 -1
- data/lib/opal/ast/node.rb +1 -0
- data/lib/opal/builder.rb +84 -63
- data/lib/opal/builder_processors.rb +41 -56
- data/lib/opal/cli.rb +33 -49
- data/lib/opal/cli_options.rb +27 -17
- data/lib/opal/cli_runners.rb +73 -16
- data/lib/opal/cli_runners/applescript.rb +4 -4
- data/lib/opal/cli_runners/chrome.rb +29 -17
- data/lib/opal/cli_runners/nashorn.rb +5 -4
- data/lib/opal/cli_runners/nodejs.rb +8 -6
- data/lib/opal/cli_runners/server.rb +12 -11
- data/lib/opal/compiler.rb +85 -103
- data/lib/opal/config.rb +3 -3
- data/lib/opal/deprecations.rb +2 -1
- data/lib/opal/eof_content.rb +2 -2
- data/lib/opal/erb.rb +8 -7
- data/lib/opal/errors.rb +72 -1
- data/lib/opal/fragment.rb +23 -3
- data/lib/opal/hike.rb +305 -0
- data/lib/opal/nodes.rb +5 -10
- data/lib/opal/nodes/arglist.rb +7 -6
- data/lib/opal/nodes/args.rb +36 -0
- data/lib/opal/nodes/args/arg.rb +22 -0
- data/lib/opal/nodes/args/arity_check.rb +151 -0
- data/lib/opal/nodes/args/ensure_kwargs_are_kwargs.rb +28 -0
- data/lib/opal/nodes/args/extract_block_arg.rb +34 -0
- data/lib/opal/nodes/args/extract_kwarg.rb +32 -0
- data/lib/opal/nodes/args/extract_kwargs.rb +28 -0
- data/lib/opal/nodes/args/extract_kwoptarg.rb +35 -0
- data/lib/opal/nodes/args/extract_kwrestarg.rb +35 -0
- data/lib/opal/nodes/args/extract_optarg.rb +35 -0
- data/lib/opal/nodes/args/extract_post_arg.rb +28 -0
- data/lib/opal/nodes/args/extract_post_optarg.rb +41 -0
- data/lib/opal/nodes/args/extract_restarg.rb +40 -0
- data/lib/opal/nodes/args/fake_arg.rb +26 -0
- data/lib/opal/nodes/args/initialize_iterarg.rb +28 -0
- data/lib/opal/nodes/args/initialize_shadowarg.rb +24 -0
- data/lib/opal/nodes/args/parameters.rb +63 -0
- data/lib/opal/nodes/args/prepare_post_args.rb +22 -0
- data/lib/opal/nodes/array.rb +9 -8
- data/lib/opal/nodes/base.rb +20 -11
- data/lib/opal/nodes/call.rb +24 -25
- data/lib/opal/nodes/call_special.rb +4 -3
- data/lib/opal/nodes/case.rb +24 -26
- data/lib/opal/nodes/class.rb +4 -5
- data/lib/opal/nodes/constants.rb +8 -7
- data/lib/opal/nodes/csend.rb +2 -3
- data/lib/opal/nodes/def.rb +28 -74
- data/lib/opal/nodes/defined.rb +36 -36
- data/lib/opal/nodes/definitions.rb +10 -7
- data/lib/opal/nodes/defs.rb +8 -16
- data/lib/opal/nodes/hash.rb +5 -4
- data/lib/opal/nodes/helpers.rb +8 -8
- data/lib/opal/nodes/if.rb +10 -8
- data/lib/opal/nodes/iter.rb +16 -103
- data/lib/opal/nodes/lambda.rb +18 -0
- data/lib/opal/nodes/literal.rb +29 -63
- data/lib/opal/nodes/logic.rb +25 -24
- data/lib/opal/nodes/masgn.rb +8 -6
- data/lib/opal/nodes/module.rb +4 -4
- data/lib/opal/nodes/node_with_args.rb +14 -208
- data/lib/opal/nodes/rescue.rb +32 -32
- data/lib/opal/nodes/runtime_helpers.rb +5 -4
- data/lib/opal/nodes/scope.rb +18 -29
- data/lib/opal/nodes/singleton_class.rb +3 -3
- data/lib/opal/nodes/super.rb +12 -18
- data/lib/opal/nodes/top.rb +10 -8
- data/lib/opal/nodes/variables.rb +6 -6
- data/lib/opal/nodes/while.rb +7 -6
- data/lib/opal/nodes/x_string.rb +139 -0
- data/lib/opal/nodes/yield.rb +10 -7
- data/lib/opal/parser.rb +9 -46
- data/lib/opal/parser/default_config.rb +50 -0
- data/lib/opal/parser/patch.rb +26 -0
- data/lib/opal/parser/source_buffer.rb +11 -0
- data/lib/opal/parser/with_c_lexer.rb +14 -0
- data/lib/opal/parser/with_ruby_lexer.rb +6 -0
- data/lib/opal/path_reader.rb +6 -5
- data/lib/opal/paths.rb +9 -6
- data/lib/opal/regexp_anchors.rb +6 -5
- data/lib/opal/rewriter.rb +7 -0
- data/lib/opal/rewriters/arguments.rb +58 -0
- data/lib/opal/rewriters/base.rb +32 -12
- data/lib/opal/rewriters/binary_operator_assignment.rb +20 -20
- data/lib/opal/rewriters/block_to_iter.rb +2 -1
- data/lib/opal/rewriters/break_finder.rb +2 -0
- data/lib/opal/rewriters/dot_js_syntax.rb +3 -2
- data/lib/opal/rewriters/dump_args.rb +28 -0
- data/lib/opal/rewriters/explicit_writer_return.rb +4 -3
- data/lib/opal/rewriters/for_rewriter.rb +12 -12
- data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +2 -1
- data/lib/opal/rewriters/inline_args.rb +220 -0
- data/lib/opal/rewriters/js_reserved_words.rb +21 -17
- data/lib/opal/rewriters/logical_operator_assignment.rb +24 -14
- data/lib/opal/rewriters/mlhs_args.rb +128 -0
- data/lib/opal/rewriters/opal_engine_check.rb +11 -6
- data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +3 -2
- data/lib/opal/server.rb +1 -0
- data/lib/opal/simple_server.rb +15 -23
- data/lib/opal/source_map.rb +7 -70
- data/lib/opal/source_map/file.rb +199 -0
- data/lib/opal/source_map/index.rb +83 -0
- data/lib/opal/source_map/map.rb +26 -0
- data/lib/opal/source_map/vlq.rb +98 -0
- data/lib/opal/util.rb +7 -5
- data/lib/opal/version.rb +2 -1
- data/lib/tilt/opal.rb +3 -3
- data/opal.gemspec +18 -9
- data/opal/corelib/array.rb +135 -117
- data/opal/corelib/array/pack.rb +446 -0
- data/opal/corelib/basic_object.rb +23 -9
- data/opal/corelib/boolean.rb +3 -3
- data/opal/corelib/class.rb +4 -10
- data/opal/corelib/comparable.rb +36 -23
- data/opal/corelib/complex.rb +108 -14
- data/opal/corelib/constants.rb +4 -4
- data/opal/corelib/enumerable.rb +132 -135
- data/opal/corelib/enumerator.rb +47 -50
- data/opal/corelib/error.rb +65 -8
- data/opal/corelib/file.rb +37 -32
- data/opal/corelib/hash.rb +90 -21
- data/opal/corelib/helpers.rb +7 -6
- data/opal/corelib/kernel.rb +53 -586
- data/opal/corelib/kernel/format.rb +544 -0
- data/opal/corelib/marshal.rb +1 -13
- data/opal/corelib/marshal/read_buffer.rb +20 -23
- data/opal/corelib/marshal/write_buffer.rb +23 -15
- data/opal/corelib/math.rb +12 -16
- data/opal/corelib/method.rb +5 -3
- data/opal/corelib/module.rb +80 -109
- data/opal/corelib/nil.rb +2 -2
- data/opal/corelib/number.rb +177 -43
- data/opal/corelib/numeric.rb +22 -16
- data/opal/corelib/pack_unpack/format_string_parser.rb +135 -0
- data/opal/corelib/proc.rb +3 -4
- data/opal/corelib/process.rb +1 -1
- data/opal/corelib/random.rb +24 -16
- data/opal/corelib/random/MersenneTwister.js +137 -0
- data/opal/corelib/random/math_random.js.rb +9 -0
- data/opal/corelib/random/mersenne_twister.js.rb +13 -0
- data/opal/corelib/random/seedrandom.js.rb +12 -0
- data/opal/corelib/range.rb +25 -26
- data/opal/corelib/rational.rb +57 -17
- data/opal/corelib/regexp.rb +39 -43
- data/opal/corelib/runtime.js +806 -683
- data/opal/corelib/string.rb +213 -112
- data/opal/corelib/string/encoding.rb +14 -17
- data/opal/corelib/string/unpack.rb +793 -0
- data/opal/corelib/struct.rb +40 -24
- data/opal/corelib/time.rb +14 -15
- data/opal/corelib/unsupported.rb +26 -4
- data/opal/opal.rb +2 -1
- data/opal/opal/full.rb +2 -0
- data/stdlib/base64.rb +1 -1
- data/stdlib/bigdecimal.rb +11 -13
- data/stdlib/buffer.rb +9 -8
- data/stdlib/buffer/array.rb +46 -48
- data/stdlib/buffer/view.rb +85 -47
- data/stdlib/console.rb +18 -18
- data/stdlib/date.rb +85 -66
- data/stdlib/delegate.rb +2 -2
- data/stdlib/e2mmap.rb +176 -0
- data/stdlib/encoding.rb +1 -1
- data/stdlib/erb.rb +1 -1
- data/stdlib/forwardable.rb +14 -14
- data/stdlib/json.rb +1 -2
- data/stdlib/logger.rb +112 -0
- data/stdlib/math.rb +1 -1
- data/stdlib/matrix.rb +2169 -0
- data/stdlib/matrix/eigenvalue_decomposition.rb +883 -0
- data/stdlib/matrix/lup_decomposition.rb +219 -0
- data/stdlib/nashorn/file.rb +7 -9
- data/stdlib/native.rb +69 -63
- data/stdlib/nodejs.rb +3 -0
- data/stdlib/nodejs/dir.rb +25 -4
- data/stdlib/nodejs/env.rb +40 -0
- data/stdlib/nodejs/file.rb +184 -34
- data/stdlib/nodejs/fileutils.rb +4 -4
- data/stdlib/nodejs/io.rb +4 -46
- data/stdlib/nodejs/irb.rb +27 -29
- data/stdlib/nodejs/kernel.rb +2 -11
- data/stdlib/nodejs/node_modules/balanced-match/.npmignore +5 -0
- data/stdlib/nodejs/node_modules/balanced-match/LICENSE.md +21 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +13 -2
- data/stdlib/nodejs/node_modules/balanced-match/index.js +59 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/package.json +46 -42
- data/stdlib/nodejs/node_modules/brace-expansion/LICENSE +21 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +9 -1
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +12 -2
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/package.json +48 -48
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -42
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
- data/stdlib/nodejs/node_modules/fs.realpath/LICENSE +43 -0
- data/stdlib/nodejs/node_modules/fs.realpath/README.md +33 -0
- data/stdlib/nodejs/node_modules/fs.realpath/index.js +66 -0
- data/stdlib/nodejs/node_modules/fs.realpath/old.js +303 -0
- data/stdlib/nodejs/node_modules/fs.realpath/package.json +59 -0
- data/stdlib/nodejs/node_modules/glob/README.md +57 -46
- data/stdlib/nodejs/node_modules/glob/changelog.md +67 -0
- data/stdlib/nodejs/node_modules/glob/common.js +91 -28
- data/stdlib/nodejs/node_modules/glob/glob.js +196 -55
- data/stdlib/nodejs/node_modules/glob/package.json +55 -51
- data/stdlib/nodejs/node_modules/glob/sync.js +116 -39
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/README.md +0 -0
- data/stdlib/nodejs/node_modules/inflight/inflight.js +54 -0
- data/stdlib/nodejs/node_modules/inflight/package.json +58 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/README.md +0 -0
- data/stdlib/nodejs/node_modules/inherits/inherits.js +7 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/inherits_browser.js +0 -0
- data/stdlib/nodejs/node_modules/inherits/package.json +61 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → minimatch}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/README.md +2 -9
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/minimatch.js +284 -206
- data/stdlib/nodejs/node_modules/minimatch/package.json +63 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/once → once}/README.md +28 -0
- data/stdlib/nodejs/node_modules/once/once.js +42 -0
- data/stdlib/nodejs/node_modules/once/package.json +67 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/index.js +20 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/license +21 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/package.json +75 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/readme.md +59 -0
- data/stdlib/nodejs/node_modules/unxhr/LICENSE +22 -0
- data/stdlib/nodejs/node_modules/unxhr/README.md +41 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/XMLHttpRequest.js +598 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/browser.js +2 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/request.js +63 -0
- data/stdlib/nodejs/node_modules/unxhr/package.json +75 -0
- data/stdlib/nodejs/node_modules/wrappy/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/README.md +0 -0
- data/stdlib/nodejs/node_modules/wrappy/package.json +59 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/wrappy.js +0 -0
- data/stdlib/nodejs/open-uri.rb +26 -0
- data/stdlib/nodejs/package-lock.json +88 -0
- data/stdlib/nodejs/package.json +2 -1
- data/stdlib/nodejs/pathname.rb +20 -0
- data/stdlib/nodejs/require.rb +3 -3
- data/stdlib/nodejs/stacktrace.rb +1 -1
- data/stdlib/nodejs/yaml.rb +1 -1
- data/stdlib/opal-builder.rb +1 -0
- data/stdlib/opal-parser.rb +4 -1
- data/stdlib/opal-platform.rb +8 -10
- data/stdlib/opal-source-maps.rb +0 -1
- data/stdlib/open-uri.rb +349 -0
- data/stdlib/ostruct.rb +19 -17
- data/stdlib/pathname.rb +22 -22
- data/stdlib/pp.rb +5 -5
- data/stdlib/promise.rb +30 -26
- data/stdlib/rbconfig/sizeof.rb +50 -0
- data/stdlib/securerandom.rb +1 -1
- data/stdlib/set.rb +21 -23
- data/stdlib/singleton.rb +3 -4
- data/stdlib/stringio.rb +33 -0
- data/stdlib/strscan.rb +55 -55
- data/stdlib/template.rb +1 -2
- data/stdlib/thread.rb +6 -7
- data/tasks/benchmarking.rake +1 -1
- data/tasks/building.rake +4 -12
- data/tasks/linting.rake +17 -2
- data/tasks/releasing.rake +84 -0
- data/tasks/testing.rake +57 -15
- data/tasks/testing/mspec_special_calls.rb +23 -4
- data/vendored-minitest/minitest.rb +1 -1
- metadata +169 -168
- data/bin/opal-build +0 -3
- data/exe/opal-mspec +0 -10
- data/lib/opal/nodes/args/initialize_kwargs.rb +0 -29
- data/lib/opal/nodes/args/kwarg.rb +0 -31
- data/lib/opal/nodes/args/kwoptarg.rb +0 -34
- data/lib/opal/nodes/args/kwrestarg.rb +0 -39
- data/lib/opal/nodes/args/mlhsarg.rb +0 -78
- data/lib/opal/nodes/args/normarg.rb +0 -29
- data/lib/opal/nodes/args/optarg.rb +0 -25
- data/lib/opal/nodes/args/post_args.rb +0 -201
- data/lib/opal/nodes/args/post_kwargs.rb +0 -32
- data/lib/opal/nodes/args/restarg.rb +0 -38
- data/lib/opal/nodes/inline_args.rb +0 -60
- data/opal/corelib/string/inheritance.rb +0 -123
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +0 -44
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -52
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +0 -61
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +0 -97
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +0 -1
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +0 -25
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +0 -1
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +0 -4
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +0 -23
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +0 -15
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +0 -1181
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -3
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -4
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -38
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -56
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -32
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -1075
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -182
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -9
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -10
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -24
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -15
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -16
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -10
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -13
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -7
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -50
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +0 -60
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +0 -399
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +0 -45
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +0 -274
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +0 -8
- data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +0 -27
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -52
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
- data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +0 -21
- data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +0 -60
- data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +0 -23
- data/stdlib/nodejs/rubygems.rb +0 -68
- data/stdlib/source_map.rb +0 -5
- data/stdlib/source_map/map.rb +0 -220
- data/stdlib/source_map/mapping.rb +0 -26
- data/stdlib/source_map/offset.rb +0 -88
- data/stdlib/source_map/version.rb +0 -3
- data/stdlib/source_map/vlq.rb +0 -99
- data/stdlib/sourcemap.rb +0 -1
data/CONTRIBUTING.md
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
# Contributing and Reporting
|
2
2
|
|
3
3
|
This is the issue tracker for Opal. If you have a more general question about
|
4
|
-
using Opal (or related libraries) then use the [stackoverflow tag (#opalrb)][SO], the
|
5
|
-
[#opal][freenode] irc channel on *FreeNode*, or the *Gitter* chatroom at [opal/opal][gitter]
|
4
|
+
using Opal (or related libraries) then use the [stackoverflow tag (#opalrb)][SO], or the *Gitter* chatroom at [opal/opal][gitter]
|
6
5
|
(also available as IRC at `irc.gitter.im`).
|
7
6
|
|
8
7
|
[SO]: http://stackoverflow.com/questions/ask?tags=opalrb
|
9
|
-
[freenode]: http://webchat.freenode.net/?channels=opal
|
10
8
|
[gitter]: https://gitter.im/opal/opal
|
11
9
|
|
12
10
|
What follows is a quick checklist you can before sending issues or pull-requests, for in-depth instructions on how to hack the internals of Opal and setup the development environment please see [`HACKING.md`][hacking].
|
@@ -35,10 +33,10 @@ What follows is a quick checklist you can before sending issues or pull-requests
|
|
35
33
|
|
36
34
|
3. Make sure to have updated all the relevant documentation, both for API (using _yardoc_ syntax) and the Guides
|
37
35
|
|
38
|
-
4. Add a Changelog entry at the top of `
|
36
|
+
4. Add a Changelog entry at the top of `UNRELEASED.md`
|
39
37
|
|
40
38
|
|
41
|
-
### A note on commits in
|
39
|
+
### A note on commits in PRs
|
42
40
|
|
43
41
|
You could be asked to squash your commits during a PR review. That doesn't mean there's a preference for a single commit for each PR, rather it's a request to have each commit focused on a specific group changes and avoid the sequence of changes, fixups and reverts that tell an interesting story but in the end make the use of `git blame` quite difficult.
|
44
42
|
|
data/Gemfile
CHANGED
@@ -9,25 +9,26 @@ tilt_version = ENV['TILT_VERSION']
|
|
9
9
|
rack_version = ENV['RACK_VERSION']
|
10
10
|
sprockets_version = ENV['SPROCKETS_VERSION']
|
11
11
|
|
12
|
-
# Stick with older racc until
|
13
|
-
# https://github.com/tenderlove/racc/issues/22
|
14
|
-
# is solved.
|
15
|
-
gem 'racc', '< 1.4.10', platform: :jruby
|
16
12
|
gem 'json', '< 1.8.1', platform: :ruby if ruby_version < v['2.2']
|
17
|
-
gem 'rack-test', '<
|
13
|
+
gem 'rack-test', '< 0.8' if ruby_version <= v['2.0']
|
18
14
|
gem 'rubysl', platform: :rbx
|
19
15
|
gem 'coveralls', platform: :mri
|
20
16
|
|
21
|
-
|
22
|
-
|
23
|
-
gem 'rack', rack_version if rack_version
|
24
|
-
gem 'tilt', tilt_version if tilt_version
|
17
|
+
# Some browsers have problems with WEBrick
|
18
|
+
gem 'puma' unless RUBY_ENGINE == 'truffleruby'
|
25
19
|
|
20
|
+
gem 'rack', rack_version if rack_version
|
21
|
+
gem 'tilt', tilt_version if tilt_version
|
26
22
|
gem 'sprockets', sprockets_version if sprockets_version
|
27
|
-
gem 'mspec', path: 'spec/mspec'
|
28
23
|
|
29
24
|
group :repl do
|
30
|
-
|
25
|
+
if RUBY_VERSION.to_f >= 2.3
|
26
|
+
gem 'mini_racer', platform: :mri, require: false
|
27
|
+
else
|
28
|
+
gem 'mini_racer', '< 0.2.0', platform: :mri, require: false
|
29
|
+
gem 'libv8', '~> 6.3.0', platform: :mri, require: false
|
30
|
+
end
|
31
|
+
|
31
32
|
gem 'therubyrhino', platform: :jruby, require: false
|
32
33
|
end
|
33
34
|
|
@@ -46,5 +47,9 @@ group :development do
|
|
46
47
|
end unless ENV['CI']
|
47
48
|
|
48
49
|
group :doc do
|
49
|
-
gem 'redcarpet'
|
50
|
+
gem 'redcarpet' unless RUBY_ENGINE == 'truffleruby'
|
51
|
+
end
|
52
|
+
|
53
|
+
platforms :ruby, :mswin, :mswin64, :mingw, :x64_mingw do
|
54
|
+
gem 'c_lexer', '2.5.3.0.0' unless RUBY_ENGINE == 'truffleruby'
|
50
55
|
end
|
data/Guardfile
CHANGED
@@ -49,7 +49,6 @@ class ::Guard::Opal < Plugin
|
|
49
49
|
path = m[0]
|
50
50
|
puts color("Searching specs for #{m[0]}...", :yellow)
|
51
51
|
case path
|
52
|
-
when %r{grammar\.y$} then system 'rake racc'
|
53
52
|
when %r{^spec/lib} then rspec path
|
54
53
|
when %r{^spec/ruby} then mspec path
|
55
54
|
when %r{^opal/corelib}
|
data/HACKING.md
CHANGED
@@ -195,38 +195,4 @@ Array#permutation_generates_from_a_defensive_copy,_ignoring_mutations
|
|
195
195
|
|
196
196
|
## Parser
|
197
197
|
|
198
|
-
|
199
|
-
|
200
|
-
To enable debug output in the Racc grammar set the `RACC_DEBUG` env var and recompile the grammar. While the env variable is set the parser will output the debug info for the parsing process.
|
201
|
-
|
202
|
-
```bash
|
203
|
-
$ export RACC_DEBUG=true
|
204
|
-
$ bundle exec rake racc # recompile the grammar
|
205
|
-
$ bundle exec exe/opal --sexp -e "42" # ask Opal for the SExp of some code
|
206
|
-
|
207
|
-
read :tINTEGER(tINTEGER) [42, [1, 0]]
|
208
|
-
|
209
|
-
shift tINTEGER
|
210
|
-
[ (tINTEGER [42, [1, 0]]) ]
|
211
|
-
|
212
|
-
…cut…
|
213
|
-
|
214
|
-
shift $end
|
215
|
-
[ (program (:int, 42)) ($end [false, [1, 2]]) ($end [false, [1, 2]]) ]
|
216
|
-
|
217
|
-
goto 403
|
218
|
-
[ 0 1 97 403 ]
|
219
|
-
|
220
|
-
accept
|
221
|
-
|
222
|
-
(:int, 42)
|
223
|
-
```
|
224
|
-
|
225
|
-
When done unset the env variable and recompile the grammar.
|
226
|
-
|
227
|
-
```bash
|
228
|
-
$ unset RACC_DEBUG
|
229
|
-
$ bundle exec rake racc # recompile the grammar
|
230
|
-
$ bundle exec exe/opal --sexp -e "42" # ask Opal for the SExp of some code
|
231
|
-
(:int, 42)
|
232
|
-
```
|
198
|
+
Opal relies on the `parser` gem, see debug/development documentation there to know more about its internals: https://whitequark.github.io/parser/.
|
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (C) 2013 by Adam Beynon
|
1
|
+
Copyright (C) 2013-2019 by Adam Beynon and the Opal contributors
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -16,4 +16,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
16
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
17
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
18
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
THE SOFTWARE.
|
19
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,25 +1,27 @@
|
|
1
1
|
# Opal
|
2
2
|
|
3
|
-
[![Build Status (Linux)](
|
3
|
+
[![Build Status (Linux)](https://img.shields.io/travis/opal/opal/master.svg?style=flat)](https://travis-ci.org/opal/opal)
|
4
4
|
[![Build Status (Windows)](https://ci.appveyor.com/api/projects/status/jtsvwl8tfgn3u67n/branch/master?svg=true)](https://ci.appveyor.com/project/elia/opal/branch/master)
|
5
|
-
[![Gem Version](
|
6
|
-
[![Code Climate](
|
5
|
+
[![Gem Version](https://img.shields.io/gem/v/opal.svg?style=flat)](https://badge.fury.io/rb/opal)
|
6
|
+
[![Code Climate](https://img.shields.io/codeclimate/github/opal/opal.svg?style=flat)](https://codeclimate.com/github/opal/opal)
|
7
7
|
[![Coverage Status](https://coveralls.io/repos/opal/opal/badge.svg?branch=master&service=github)](https://coveralls.io/github/opal/opal?branch=elia%2Fcoveralls)
|
8
8
|
|
9
9
|
|
10
10
|
Opal is a Ruby to JavaScript source-to-source compiler. It also has an
|
11
11
|
implementation of the Ruby corelib.
|
12
12
|
|
13
|
-
Opal is [hosted on GitHub](
|
14
|
-
Ask questions on [stackoverflow (tag #opalrb)](
|
13
|
+
Opal is [hosted on GitHub](https://github.com/opal/opal). Chat is available on *Gitter* at [opal/opal](https://gitter.im/opal/opal) (also available as IRC at `irc.gitter.im`).
|
14
|
+
Ask questions on [stackoverflow (tag #opalrb)](https://stackoverflow.com/questions/ask?tags=opalrb). Get the [Opalist newsletter](http://opalist.co) for updates and community news.
|
15
15
|
|
16
|
-
[![Inline docs](
|
16
|
+
[![Inline docs](https://inch-ci.org/github/opal/opal.svg?branch=master&style=flat)](https://opalrb.com/docs)
|
17
17
|
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/opal/opal?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
18
|
-
[![Stack Overflow](
|
18
|
+
[![Stack Overflow](https://img.shields.io/badge/stackoverflow-%23opalrb-orange.svg?style=flat)](https://stackoverflow.com/questions/ask?tags=opalrb)
|
19
|
+
[![Backers on Open Collective](https://opencollective.com/opal/backers/badge.svg)](#backers)
|
20
|
+
[![Sponsors on Open Collective](https://opencollective.com/opal/sponsors/badge.svg)](#sponsors)
|
19
21
|
|
20
22
|
## Usage
|
21
23
|
|
22
|
-
See the website for more detailed instructions and guides for Rails, jQuery, Sinatra, rack, CDN, etc. [
|
24
|
+
See the website for more detailed instructions and guides for Rails, jQuery, Sinatra, rack, CDN, etc. [https://opalrb.com](https://opalrb.com).
|
23
25
|
|
24
26
|
### Compiling Ruby code with the CLI (Command Line Interface)
|
25
27
|
|
@@ -102,9 +104,8 @@ your web applications.
|
|
102
104
|
<html>
|
103
105
|
<head>
|
104
106
|
<meta charset="utf-8">
|
105
|
-
<script src="
|
106
|
-
<script src="
|
107
|
-
<script type="text/javascript">Opal.load('opal-parser')</script>
|
107
|
+
<script src="https://cdn.opalrb.com/opal/current/opal.js" onload="Opal.load('opal')"></script>
|
108
|
+
<script src="https://cdn.opalrb.com/opal/current/opal-parser.js" onload="Opal.load('opal-parser')"></script>
|
108
109
|
|
109
110
|
<script type="text/ruby">
|
110
111
|
puts "hi"
|
@@ -204,13 +205,41 @@ version of a browser is 24.x, we support the 24.x and 23.x versions.
|
|
204
205
|
as the last 2 versions of Opera. For example, if the current Opera version is 20.x,
|
205
206
|
then we support Opera 12.1x, 19.x and 20.x but not Opera 15.x through 18.x.
|
206
207
|
|
207
|
-
Cross-browser testing is sponsored by [SauceLabs](
|
208
|
+
Cross-browser testing is sponsored by [SauceLabs](https://saucelabs.com).
|
209
|
+
|
210
|
+
## Contributors
|
211
|
+
|
212
|
+
This project exists thanks to all the people who contribute. [![contributors](https://opencollective.com/opal/contributors.svg?width=890&button=false")](https://github.com/opal/opal/graphs/contributors)
|
213
|
+
|
214
|
+
|
215
|
+
## Backers
|
216
|
+
|
217
|
+
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/opal#backer)]
|
218
|
+
|
219
|
+
<a href="https://opencollective.com/opal#backers" target="_blank"><img src="https://opencollective.com/opal/backers.svg?width=890"></a>
|
220
|
+
|
221
|
+
|
222
|
+
## Sponsors
|
223
|
+
|
224
|
+
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/opal#sponsor)]
|
225
|
+
|
226
|
+
<a href="https://opencollective.com/opal/sponsor/0/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/0/avatar.svg"></a>
|
227
|
+
<a href="https://opencollective.com/opal/sponsor/1/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/1/avatar.svg"></a>
|
228
|
+
<a href="https://opencollective.com/opal/sponsor/2/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/2/avatar.svg"></a>
|
229
|
+
<a href="https://opencollective.com/opal/sponsor/3/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/3/avatar.svg"></a>
|
230
|
+
<a href="https://opencollective.com/opal/sponsor/4/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/4/avatar.svg"></a>
|
231
|
+
<a href="https://opencollective.com/opal/sponsor/5/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/5/avatar.svg"></a>
|
232
|
+
<a href="https://opencollective.com/opal/sponsor/6/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/6/avatar.svg"></a>
|
233
|
+
<a href="https://opencollective.com/opal/sponsor/7/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/7/avatar.svg"></a>
|
234
|
+
<a href="https://opencollective.com/opal/sponsor/8/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/8/avatar.svg"></a>
|
235
|
+
<a href="https://opencollective.com/opal/sponsor/9/website" target="_blank"><img src="https://opencollective.com/opal/sponsor/9/avatar.svg"></a>
|
236
|
+
|
208
237
|
|
209
238
|
## License
|
210
239
|
|
211
240
|
(The MIT License)
|
212
241
|
|
213
|
-
Copyright (C) 2013-
|
242
|
+
Copyright (C) 2013-2019 by Adam Beynon and the Opal contributors
|
214
243
|
|
215
244
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
216
245
|
of this software and associated documentation files (the "Software"), to deal
|
data/Rakefile
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
# FIXME: there must be a better way
|
2
2
|
Encoding.default_external = 'utf-8'
|
3
3
|
|
4
|
-
require 'bundler'
|
5
|
-
Bundler.require
|
6
|
-
Bundler::GemHelper.install_tasks
|
7
|
-
|
8
4
|
import 'tasks/github.rake'
|
9
5
|
import 'tasks/testing.rake'
|
10
6
|
import 'tasks/building.rake'
|
11
7
|
import 'tasks/linting.rake'
|
12
8
|
import 'tasks/benchmarking.rake'
|
9
|
+
import 'tasks/releasing.rake'
|
13
10
|
|
14
11
|
task :default => [:rspec, :mspec, :minitest]
|
data/UNRELEASED.md
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
<!--
|
2
|
+
Whitespace conventions:
|
3
|
+
- 4 spaces before ## titles
|
4
|
+
- 2 spaces before ### titles
|
5
|
+
- 1 spaces before normal text
|
6
|
+
-->
|
7
|
+
|
8
|
+
### Added
|
9
|
+
|
10
|
+
- Added `Module#prepend` and completely overhauled the module and class inheritance system (#1826)
|
11
|
+
- Methods and properties are now assigned with `Object.defineProperty()` as non-enumerable (#1821)
|
12
|
+
- Backtrace now includes the location inside the source file for syntax errors (#1814)
|
13
|
+
- Added support for a faster C-implemented lexer, it's enough to add `gem 'c_lexer` to the `Gemfile` (#1806)
|
14
|
+
- Added `Date#to_n` that returns the JavaScript Date object (in native.rb). (#1779, #1792)
|
15
|
+
- Added `Array#pack` (supports only `C, S, L, Q, c, s, l, q, A, a` formats). (#1723)
|
16
|
+
- Added `String#unpack` (supports only `C, S, L, Q, S>, L>, Q>, c, s, l, q, n, N, v, V, U, w, A, a, Z, B, b, H, h, u, M, m` formats). (#1723)
|
17
|
+
- Added `File#symlink?` for Node.js. (#1725)
|
18
|
+
- Added `Dir#glob` for Node.js (does not support flags). (#1727)
|
19
|
+
- Added support for a static folder in the "server" CLI runner via the `OPAL_CLI_RUNNERS_SERVER_STATIC_FOLDER` env var
|
20
|
+
- Added the CLI option `--runner-options` that allows passing arbitrary options to the selected runner, currently the only runner making use of them is `server` accepting `port` and `static_folder`
|
21
|
+
- Added a short helper to navigate constants manually: E.g. `Opal.$$.Regexp.$$.IGNORECASE` (see docs for "Compiled Ruby")
|
22
|
+
- Added initial support for OpenURI module (using XMLHttpRequest on browser and [xmlhttprequest](https://www.npmjs.com/package/xmlhttprequest) on Node). (#1735)
|
23
|
+
- Added `String#prepend` to the list of unsupported methods (because String are immutable in JavaScript)
|
24
|
+
- Added methods (most introduced in 2.4/2.5):
|
25
|
+
* `Array#prepend` (#1757)
|
26
|
+
* `Array#append` (#1757)
|
27
|
+
* `Array#max` (#1757)
|
28
|
+
* `Array#min` (#1757)
|
29
|
+
* `Complex#finite?` (#1757)
|
30
|
+
* `Complex#infinite?` (#1757)
|
31
|
+
* `Complex#infinite?` (#1757)
|
32
|
+
* `Date#to_time` (#1757)
|
33
|
+
* `Date#next_year` (#1885)
|
34
|
+
* `Date#prev_year` (#1885)
|
35
|
+
* `Hash#slice` (#1757)
|
36
|
+
* `Hash#transform_keys` (#1757)
|
37
|
+
* `Hash#transform_keys!` (#1757)
|
38
|
+
* `Numeric#finite?` (#1757)
|
39
|
+
* `Numeric#infinite?` (#1757)
|
40
|
+
* `Numeric#infinite?` (#1757)
|
41
|
+
* `Integer#allbits?` (#1757)
|
42
|
+
* `Integer#anybits?` (#1757)
|
43
|
+
* `Integer#digits` (#1757)
|
44
|
+
* `Integer#nobits?` (#1757)
|
45
|
+
* `Integer#pow` (#1757)
|
46
|
+
* `Integer#remainder` (#1757)
|
47
|
+
* `Integer.sqrt` (#1757)
|
48
|
+
* `Random.urandom` (#1757)
|
49
|
+
* `String#delete_prefix` (#1757)
|
50
|
+
* `String#delete_suffix` (#1757)
|
51
|
+
* `String#casecmp?` (#1757)
|
52
|
+
* `Kernel#yield_self` (#1757)
|
53
|
+
* `String#unpack1` (#1757)
|
54
|
+
* `String#to_r` (#1842)
|
55
|
+
* `String#to_c` (#1842)
|
56
|
+
* `String#match?` (#1842)
|
57
|
+
* `String#unicode_normalize` returns self (#1842)
|
58
|
+
* `String#unicode_normalized?` returns true (#1842)
|
59
|
+
* `String#[]=` throws `NotImplementedError`(#1836)
|
60
|
+
|
61
|
+
- Added support of the `pattern` argument for `Enumerable#all?`, `Enumerable#any?`, `Enumerable#none?`. (#1757)
|
62
|
+
- Added `ndigits` option support to `Number#floor`, `Number#ceil`, `Number#truncate`. (#1757)
|
63
|
+
- Added `key` and `receiver` attributes to the `KeyError`. (#1757)
|
64
|
+
- Extended `Struct.new` to support `keyword_init` option. (#1757)
|
65
|
+
- Added a new `Opal::Config.missing_require_severity` option and relative `--missing-require` CLI flag. This option will command how the builder will behave when a required file is missing. Previously the behavior was undefined and partly controlled by `dynamic_require_severity`. Not to be confused with the runtime config option `Opal.config.missing_require_severity;` which controls the runtime behavior.
|
66
|
+
- Added `Matrix` (along with the internal MRI utility `E2MM`)
|
67
|
+
- Use shorter helpers for constant lookups, `$$` for relative (nesting) lookups and `$$$` for absolute (qualified) lookups
|
68
|
+
- Add support for the Mersenne Twister random generator, the same used by CRuby/MRI (#657 & #1891)
|
69
|
+
- [Nodejs] Added support for binary data in `OpenURI` (#1911, #1920)
|
70
|
+
- [Nodejs] Added support for binary data in `File#read` (#1919, #1921)
|
71
|
+
- [Nodejs] Added support for `File#readlines` (#1882)
|
72
|
+
- [Nodejs] Added support for `ENV#[]`, `ENV#[]=`, `ENV#key?`, `ENV#has_key?`, `ENV#include?`, `ENV#member?`, `ENV#empty?`, `ENV#keys`, `ENV#delete` and `ENV#to_s` (#1928)
|
73
|
+
|
74
|
+
|
75
|
+
### Changed
|
76
|
+
|
77
|
+
- **BREAKING** The dot (`.`) character is no longer replaced with [\s\S] in a multiline regexp passed to Regexp#match and Regexp#match? (#1796, #1795)
|
78
|
+
* You're advised to always use [\s\S] instead of . in a multiline regexp, which is portable between Ruby and JavaScript
|
79
|
+
- **BREAKING** `Kernel#format` (and `sprintf` alias) are now in a dedicated module `corelib/kernel/format` and available exclusively in `opal` (#1930)
|
80
|
+
* Previously the methods were part of the `corelib/kernel` module and available in both `opal` and `opal/mini`
|
81
|
+
- Filename extensions are no longer stripped from filenames internally, resulting in better error reporting (#1804)
|
82
|
+
- The internal API for CLI runners has changed, now it's just a callable object
|
83
|
+
- The `--map` CLI option now works only in conjunction with `--compile` (or `--runner compiler`)
|
84
|
+
- The `node` CLI runner now adds its `NODE_PATH` entry instead of replacing the ENV var altogether
|
85
|
+
- Added `--disable-web-security` option flag to the Chrome headless runner to be able to do `XMLHttpRequest`
|
86
|
+
- Migrated parser to 2.5. Bump RUBY_VERSION to 2.5.0.
|
87
|
+
- Exceptions raised during the compilation now add to the backtrace the current location of the opal file if available (#1814).
|
88
|
+
- Better use of `displayName` on functions and methods and more readable temp variable names (#1910)
|
89
|
+
- Source-maps are now inlined and already contain sources, incredibly more stable and precise (#1856)
|
90
|
+
|
91
|
+
|
92
|
+
### Deprecated
|
93
|
+
|
94
|
+
- The CLI `--server-port 1234` option is now deprecated in favor of using `--runner-options='{"port": 1234}'`
|
95
|
+
- Including `::Native` is now deprecated because it generates conflicts with core classes in constant lookups (both `Native::Object` and `Native::Array` exist). Instead `Native::Werapper` should be used.
|
96
|
+
- Using `node_require 'my_module'` to access the native `require()` function in Node.js is deprecated in favor of <code>\`require('my_module')\`</code> because static builders need to parse the call in order to function (#1886).
|
97
|
+
|
98
|
+
|
99
|
+
### Removed
|
100
|
+
|
101
|
+
- The `node` CLI runner no longer supports passing extra node options via the `NODE_OPT` env var, instead Node.js natively supports the `NODE_OPTIONS` env var.
|
102
|
+
- The gem "hike" is no longer an external dependency and is now an internal dependency available as `Opal::Hike` (#1881)
|
103
|
+
- Removed the internal Opal class `Marshal::BinaryString` (#1914)
|
104
|
+
- Removed Racc, as it's now replaced by the parser gem (#1880)
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
### Fixed
|
109
|
+
|
110
|
+
- Fix handling of trailing semicolons and JavaScript returns inside x-strings, the behavior is now well defined and covered by proper specs (#1776)
|
111
|
+
- Fixed singleton method definition to return method name. (#1757)
|
112
|
+
- Allow passing number of months to `Date#next_month` and `Date#prev_month`. (#1757)
|
113
|
+
- Fixed `pattern` argument handling for `Enumerable#grep` and `Enumerable#grep_v`. (#1757)
|
114
|
+
- Raise `ArgumentError` instead of `TypeError` from `Numeric#step` when step is not a number. (#1757)
|
115
|
+
- At run-time `LoadError` wasn't being raised even with `Opal.config.missing_require_severity;` set to `'error'`.
|
116
|
+
- Fixed `Kernel#public_methods` to return instance methods if the argument is set to false. (#1848)
|
117
|
+
- Fixed an issue in `String#gsub` that made it start an infinite loop when used recursively. (#1879)
|
118
|
+
- `Kernel#exit` was using status 0 when a number or a generic object was provided, now accepts numbers and tries to convert objects with `#to_int` (#1898, #1808).
|
119
|
+
- Fixed metaclass inheritance in subclasses of Module (#1901)
|
120
|
+
- `Method#to_proc` now correctly sets parameters and arity on the resulting Proc (#1903)
|
121
|
+
- Fixed bridged classes having their prototype removed from the original chain by separating them from the Ruby class (#1909)
|
122
|
+
- Improve `String#to_proc` performance (#1888)
|
123
|
+
- Fixed/updated the examples (#1887)
|
124
|
+
- `Opal.ancestors()` now returns false for when provided with JS-falsy objects (#1839)
|
125
|
+
- When subclassing now the constant is set before calling `::inherited` (#1838)
|
126
|
+
- `String#to_sym` now returns the string literal (#1835)
|
127
|
+
- `String#center` now correctly checks length (#1833)
|
128
|
+
- `redo` inside `while` now works properly (#1820)
|
129
|
+
- Fixed compilation of empty/whitespace-only x-strings (#1811)
|
130
|
+
- Fix `||=` assignments on constants when the constant is not yet defined (#1935)
|
131
|
+
- Fix `String#chomp` to return an empty String when `arg == self` (#1936)
|
132
|
+
- Fix methods of `Comparable` when `<=>` does not return Numeric (#1945)
|
133
|
+
- Fix Class#native_alias error message (#1946)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module BmBlockVsYield
|
2
|
+
def self._block(&block)
|
3
|
+
block.call
|
4
|
+
end
|
5
|
+
|
6
|
+
def self._yield
|
7
|
+
yield
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
Benchmark.ips do |x|
|
12
|
+
x.report('block') do
|
13
|
+
BmBlockVsYield._block { 1+1 }
|
14
|
+
end
|
15
|
+
|
16
|
+
x.report('yield') do
|
17
|
+
BmBlockVsYield._yield { 1+1 }
|
18
|
+
end
|
19
|
+
|
20
|
+
x.compare!
|
21
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Benchmark.ips do |x|
|
2
|
+
%x{
|
3
|
+
var o = {}
|
4
|
+
o[Symbol.for('foo')] = 123
|
5
|
+
o.foo = 123
|
6
|
+
var foo = Symbol('foo')
|
7
|
+
o[foo] = 123
|
8
|
+
var a = 0, b = 0, c = 0
|
9
|
+
}
|
10
|
+
|
11
|
+
x.report('global symbol') do
|
12
|
+
`a += o[Symbol.for('foo')]`
|
13
|
+
end
|
14
|
+
|
15
|
+
x.report('symbol') do
|
16
|
+
`a += o[foo]`
|
17
|
+
end
|
18
|
+
|
19
|
+
x.report('ident') do
|
20
|
+
`b += o.foo`
|
21
|
+
end
|
22
|
+
|
23
|
+
x.report('string') do
|
24
|
+
`c += o['foo']`
|
25
|
+
end
|
26
|
+
|
27
|
+
x.compare!
|
28
|
+
end
|