opal

Ruby ♥︎ JavaScript

MIT License

Downloads
203
Stars
4.8K
Committers
128

Bot releases are hidden (Show)

opal - v1.8.2 Latest Release

Published by hmdne 11 months ago

Performance

  • Optimize Hash#rehash for the common case, avoid calling $slice when no hash collision is present (#2571)

Fixed

  • String#{r,l,}strip: Make them work like in MRI for non-breaking white-space (#2612)
  • Compat regression fix: Hash#to_n should return a JS object (#2613)
opal -

Published by elia 11 months ago

Fixed

  • Array methods should handle elements inserted during the iteration (#2602)
  • Assign correct values to duplicated underscore parameters (#2606)

Added

  • Support an IO argument of Kernel.printf (#2605)

Performance

  • Fix a performance regression introduced by freezing support (#2609)
opal -

Published by elia 12 months ago

Highlights

Hash is now bridged to JavaScript Map

This change brings a lot of benefits, but also some incompatibilities. The main benefit is that Hash now is both more performant and relies on native JavaScript capabilities.
This improves interoperability with JavaScript. As a downside, applications reaching for internal Hash data structures will need to be updated.

Interacting with Hash from JavaScript is easier than ever:

hash = `new Map([['a', 1], ['b', 2]])`
hash # => {a: 1, b: 2}
`console.log(hash)` # => Map(2) {"a" => 1, "b" => 2}
`hash.get('a')` # => 1
`hash.set('c', 3)`
hash # => {a: 1, b: 2, c: 3}
hash.keys # => ["a", "b", "c"]
hash.values # => [1, 2, 3]

Performance improvements

This release brings a lot of performance improvements, our tests on Asciidoctor show a 25% improvement in performance, but we've seen up to 66% performance improvement on some applications.

Changelog

Deprecated

  • Deprecate using x-string to access JavaScript without an explicit magic-comment (#2543)

Compatibility

  • Add a magic-comment that will disable x-string compilation to JavaScript (#2543)
  • Pass value in PromiseV2#always just like PromiseV1#always does it (#2579)
  • #hash now returns integers (#2582)
  • Improve Range#include?/member?/cover?/=== (#2598)
  • Make Module#define_method more compatible with CRuby (#2593)
  • Hash#clone must freeze clone if original is frozen, but Hash#dup must not (#2603)

Fixed

  • Fix Kernel#Float with exception: option (#2532)
  • Fix Kernel#Integer with exception: option (#2531)
  • Fix String#split with limit and capturing regexp (#2544)
  • Fix switch with Object-wrapped values (#2542)
  • Fix non-direct subclasses of bridged classes not calling the original constructor (#2546)
  • Regexp.escape: Cast to String or drop exception (#2552)
  • Propagate removal of method from included/prepended modules (#2553)
  • Restore nodejs/yaml functionality (#2551)
  • Fix sine Range#size edge cases (#2541)
  • Use a Map instead of a POJO for the jsid_cache (#2584)
  • Fix String#object_id, String#__id__, String#hash to match CRuby's behavior (#2576)
  • Lowercase response headers in SimpleServer for rack 3.0 compatibility (#2578)
  • Fix Module#clone and Module#dup to properly copy methods (#2572)
  • Chrome runner fix: support code that contains </script> (#2581)
  • Do not skip $truthy when left hand side of a comparison is self (#2596)
  • Unexpected return/break should raise LocalJumpError (#2591)

Added

  • SourceMap support for Kernel#eval (#2534)
  • Add CGI::Util#escapeURIComponent and CGI::Util#unescapeURIComponent (#2566)
  • CGI::Util implement additional methods (#2601)

Changed

  • Change compilation of Regexp nodes that may contain advanced features, so if invalid that they would raise at runtime, not parse-time (#2548)
  • Hash is now bridged to JavaScript Map and support for non-symbol keys in keyword arguments (#2568)

Documentation

  • Bridging documentation (#2541)
  • Fix Typo in Running tests Section of README.md File (#2580)

Performance

  • Improve performance of Array#intersect? and #intersection (#2533)
  • Proc#call: Refactor for performance (#2541)
  • Opal.stub_for: optimize (#2541)
  • Hash: Optimize #to_a (#2541)
  • Array: Optimize #collect/#map (#2541)
  • Optimize argument slicing in runtime for performance (#2555)
  • Closure: Generate a JavaScript object, not an Error, gain up to 15% on Asciidoctor (#2556)
  • Optimize String#split and String#start_with (#2560)
  • Compute $@ dynamically (#2592)
  • Optimize the $prop helper (#2597)
  • Improve Array.push() performance when pushing many items (#2565)
  • Optimize Opal.instance_methods (#2600)

Internal

  • Update rubocop (#2535)
  • Match3Node Cleanup (#2541)
  • IFlipFlop/EFlipFlop: Refactor for readability (#2541)
  • ForRewriter: Refactor for readability (#2541)
opal -

Published by elia about 1 year ago

Highlights

Hash is now bridged to JavaScript Map

This change brings a lot of benefits, but also some incompatibilities. The main benefit is that Hash now is both more performant and relies on native JavaScript capabilities.
This improves interoperability with JavaScript. As a downside, applications reaching for internal Hash data structures will need to be updated.

Interacting with Hash from JavaScript is easier than ever:

hash = `new Map([['a', 1], ['b', 2]])`
hash # => {a: 1, b: 2}
`console.log(hash)` # => Map(2) {"a" => 1, "b" => 2}
`hash.get('a')` # => 1
`hash.set('c', 3)`
hash # => {a: 1, b: 2, c: 3}
hash.keys # => ["a", "b", "c"]
hash.values # => [1, 2, 3]

Performance improvements

This release brings a lot of performance improvements, our tests on Asciidoctor show a 25% improvement in performance, but we've seen up to 66% performance improvement on some applications.

Changelog

Deprecated

  • Deprecate using x-string to access JavaScript without an explicit magic-comment (#2543)

Compatibility

  • Add a magic-comment that will disable x-string compilation to JavaScript (#2543)
  • Pass value in PromiseV2#always just like PromiseV1#always does it (#2579)
  • #hash now returns integers #2582)

Fixed

  • Fix Kernel#Float with exception: option (#2532)
  • Fix Kernel#Integer with exception: option (#2531)
  • Fix String#split with limit and capturing regexp (#2544)
  • Fix switch with Object-wrapped values (#2542)
  • Fix non-direct subclasses of bridged classes not calling the original constructor (#2546)
  • Regexp.escape: Cast to String or drop exception (#2552)
  • Propagate removal of method from included/prepended modules (#2553)
  • Restore nodejs/yaml functionality (#2551)
  • Fix sine Range#size edge cases (#2541)
  • Use a Map instead of a POJO for the jsid_cache (#2584)
  • Fix String#object_id, String#__id__, String#hash to match CRuby's behavior (#2576)
  • Lowercase response headers in SimpleServer for rack 3.0 compatibility (#2578)
  • Fix Module#clone and Module#dup to properly copy methods (#2572)
  • Chrome runner fix: support code that contains </script> (#2581)
  • Do not skip $truthy when left hand side of a comparison is self (#2596)
  • Unexpected return/break should raise LocalJumpError (#2591)

Added

  • SourceMap support for Kernel#eval (#2534)
  • Add CGI::Util#escapeURIComponent and CGI::Util#unescapeURIComponent (#2566)

Changed

  • Change compilation of Regexp nodes that may contain advanced features, so if invalid that they would raise at runtime, not parse-time (#2548)
  • Hash is now bridged to JavaScript Map and support for non-symbol keys in keyword arguments (#2568)

Documentation

  • Bridging documentation (#2541)
  • Fix Typo in Running tests Section of README.md File (#2580)

Performance

  • Improve performance of Array#intersect? and #intersection (#2533)
  • Proc#call: Refactor for performance (#2541)
  • Opal.stub_for: optimize (#2541)
  • Hash: Optimize #to_a (#2541)
  • Array: Optimize #collect/#map (#2541)
  • Optimize argument slicing in runtime for performance (#2555)
  • Closure: Generate a JavaScript object, not an Error, gain up to 15% on Asciidoctor (#2556)
  • Optimize String#split and String#start_with (#2560)
  • Compute $@ dynamically (#2592)
  • Optimize the $prop helper (#2597)
  • Improve Array.push() performance when pushing many items (#2565)

Internal

  • Update rubocop (#2535)
  • Match3Node Cleanup (#2541)
  • IFlipFlop/EFlipFlop: Refactor for readability (#2541)
  • ForRewriter: Refactor for readability (#2541)
opal -

Published by elia about 1 year ago

Fixed

  • Use a Map instead of a POJO for the jsid_cache (#2584)
  • Lowercase response headers in SimpleServer for rack 3.0 compatibility (#2578)
  • Fix switch with Object-wrapped values (#2542)
  • Regexp.escape: Cast to String or drop exception (#2552)
  • Chrome runner fix: support code that contains </script> (#2581)
opal -

Published by elia about 1 year ago

Highlights

Hash is now bridged to JavaScript Map

This change brings a lot of benefits, but also some incompatibilities. The main benefit is that Hash now is both more performant and relies on native JavaScript capabilities.
This improves interoperability with JavaScript. As a downside, applications reaching for internal Hash data structures will need to be updated.

Interacting with Hash from JavaScript is easier than ever:

hash = `new Map([['a', 1], ['b', 2]])`
hash # => {a: 1, b: 2}
`console.log(hash)` # => Map(2) {"a" => 1, "b" => 2}
`hash.get('a')` # => 1
`hash.set('c', 3)`
hash # => {a: 1, b: 2, c: 3}
hash.keys # => ["a", "b", "c"]
hash.values # => [1, 2, 3]

Performance improvements

This release brings a lot of performance improvements, our tests on Asciidoctor show a 25% improvement in performance, but we've seen up to 66% performance improvement on some applications.

Changelog

Deprecated

  • Deprecate using x-string to access JavaScript without an explicit magic-comment (#2543)

Compatibility

  • Add a magic-comment that will disable x-string compilation to JavaScript (#2543)

Fixed

  • Fix Kernel#Float with exception: option (#2532)
  • Fix Kernel#Integer with exception: option (#2531)
  • Fix String#split with limit and capturing regexp (#2544)
  • Fix switch with Object-wrapped values (#2542)
  • Fix non-direct subclasses of bridged classes not calling the original constructor (#2546)
  • Regexp.escape: Cast to String or drop exception (#2552)
  • Propagate removal of method from included/prepended modules (#2553)
  • Restore nodejs/yaml functionality (#2551)
  • Fix sine Range#size edge cases (#2541)

Added

  • SourceMap support for Kernel#eval (#2534)
  • Add CGI::Util#escapeURIComponent and CGI::Util#unescapeURIComponent (#2566)

Changed

  • Change compilation of Regexp nodes that may contain advanced features, so if invalid that they would raise at runtime, not parse-time (#2548)
  • Hash is now bridged to JavaScript Map and support for non-symbol keys in keyword arguments (#2568)

Documentation

  • Bridging documentation (#2541)

Performance

  • Improve performance of Array#intersect? and #intersection (#2533)
  • Proc#call: Refactor for performance (#2541)
  • Opal.stub_for: optimize (#2541)
  • Hash: Optimize #to_a (#2541)
  • Array: Optimize #collect/#map (#2541)
  • Optimize argument slicing in runtime for performance (#2555)
  • Closure: Generate a JavaScript object, not an Error, gain up to 15% on Asciidoctor (#2556)
  • Optimize String#split and String#start_with (#2560)

Internal

  • Update rubocop (#2535)
  • Match3Node Cleanup (#2541)
  • IFlipFlop/EFlipFlop: Refactor for readability (#2541)
  • ForRewriter: Refactor for readability (#2541)
opal - v1.7.3

Published by elia over 1 year ago

Fixed

  • Disallow to define a singleton class for Number (#2521)
  • Fix eval with parser gem v3.2.1 (#2526)
  • Fix certain encoding issues when using Prefork (#2527)
  • Fix Chrome CDP interface connection (#2528)
  • Fix for Opal::Cache::FileCache.dir_writable? (#2529)
  • Fix Array#sample randomness (#2530)
opal -

Published by elia over 1 year ago

Fixed

  • Fix the --debug-source-map CLI option (#2520)
  • Fix links in docs/compiler.md (#2519)
opal -

Published by elia almost 2 years ago

Added

  • Add safari runner (#2513)

Fixed

  • Fix CLI file reading for macOS (#2510)
  • Make Date/Time.parse on Firefox more compatible with Chrome and Ruby (#2506)
  • Safari/WebKit can now parse code compiled with lookbehind regexps, failing at runtime instead (#2511)
  • Fix --watch ignoring some directories (e.g. tmp) (#2509)
  • Fix rake dist not generating libraries correctly for the CDN (#2515)
  • Prefork: output processed files in a correct, deterministic order (#2516)
  • Fix the handling of ARGV for the opal executable (#2518)

Internal

  • Platform specific spec filters (#2508)
  • Run Firefox specs by default (#2507)
  • Run Safari specs by default (#2513)
  • [mspec_opal] Avoid lookbehind Regexp for compatibility with various javascript engines (#2512)
opal - v1.7.0

Published by elia almost 2 years ago

Added

  • Update benchmarking and CLI runners, added support for Deno and Firefox (#2490, #2492, #2494, #2495, #2497, #2491, #2496)
  • Ruby 3.2 support branch (#2500)
    • Set now part of the corelib
    • Anonymous rest keyword and block arguments can be passed to calls: call(**, &)
    • Refinement#refined_class has been added
    • Module#refinements has been added
    • Module#const_added has been added
    • Proc#parameters now accepts lambda keyword
    • Class#attached_object has been added, inverse of singleton_class
    • Hash#shift now returns nil instead of passing nil to the default_proc
  • Added --watch and --output options to the CLI for live compilation (#2485)

Performance

  • Replace all occurences of '$'+name with a cached helper, saving about 2% in performance (#2481)
  • Optimize argument passing and arity checks (#2499)
  • Targeted patches for Opal-Parser, saves up to 12% during compilation (#2482)

Internal

  • MSpec & Ruby Spec update (#2486)

Fixed

  • Remove throws from runtime (#2484)
opal -

Published by elia almost 2 years ago

Added

  • Update benchmarking and CLI runners, added support for Deno and Firefox (#2490, #2492, #2494, #2495, #2497, #2491, #2496)
  • Ruby 3.2 support branch (#2500)
    • Set now part of the corelib
    • Anonymous rest keyword and block arguments can be passed to calls: call(**, &)
    • Refinement#refined_class has been added
    • Module#refinements has been added
    • Module#const_added has been added
    • Proc#parameters now accepts lambda keyword
    • Class#attached_object has been added, inverse of singleton_class
    • Hash#shift now returns nil instead of passing nil to the default_proc
  • Added --watch and --output options to the CLI for live compilation (#2485)

Performance

  • Replace all occurences of '$'+name with a cached helper, saving about 2% in performance (#2481)
  • Optimize argument passing and arity checks (#2499)
  • Targeted patches for Opal-Parser, saves up to 12% during compilation (#2482)

Internal

  • MSpec & Ruby Spec update (#2486)

Fixed

  • Remove throws from runtime (#2484)
opal -

Published by elia almost 2 years ago

Fixed

  • Fix builder.dup breaking Tilt support (#2479)

Changed

  • Build also opal variants for the CDN: opal/mini.js etc. (#2489)
opal -

Published by elia almost 2 years ago

Changed

  • No longer truncate stacktraces to 15 lines (#2440)
  • Mark async/await as non-experimental (#2477)

Performance

  • Improve method block performance for runtime (#2449)
  • Uninline non-typical argument handling (#2419)
  • Logic optimization of runtime.js (#2415)
  • Windows support for performance:compare CI check (#2450)
  • Improve block performance for even more cases (#2465)

Added

  • Added support for #freeze and #frozen? (#2444, #2468)
  • Add CLI support for ESM, at least for Chrome, NodeJS, QuickJS and GJS (#2435)
  • Support exit in Chrome CLI Runner, both sync and async (#2439)
  • Make sure the Server CLI Runner can pick up changes in sources (#2436)
  • Delegate and ruby2_keywords (#2446)
  • Source code can now be embedded in the compiled file to improve development/debugging, e.g. RSpec reports, Proc#source_location (#2440)
  • Added Kernel#caller_locations (#2440)
  • Opal::Builder::Prefork for blazingly fast multicore compilation times (#2263, #2462, #2454, #2469, #2475)
  • Add Opal::BuilderProcessors::RubyERBProcessor (#2470)

Fixed

  • Closure tracking support fixes a whole array of bugs handling break / next / retry / … (#2357)
  • Fix an edge case of if in the most complex form not returning (#2433)
  • String#length is now available when using opal/mini (#2438)
  • Auto-await produced invalid code (#2440)
  • Fix Enumerable#collect_concat and #flat_map implementation (#2440)
  • Improved await support for PromiseV1 (#2440)
  • Compilation error occurs while compiling being/end returning a case/when (#2459)
  • Ensure UTF-8 encoding of .sourcesContent of source maps (#2451)
  • Benchmarks require string/unpack (#2453)
  • Fix compilation of a call: gets&.chomp (#2473)
  • Fix specs on Windows (#2460)
  • Make opal CLI tool work again with pipes (#2474)

Internal

  • GitHub Workflows security hardening (#2432)
  • Retry if file cache write operation exits with Zlib::BufError (#2463)
  • Eliminate redundant var constructor in allocate_class (#2452)
  • Fix performance:compare asset size calculation (#2457)
  • Fix a few specs after the Opal RSpec 1.0 (alpha) release (#2471, #2472)
opal -

Published by elia almost 2 years ago

Changed

  • No longer truncate stacktraces to 15 lines (#2440)

Performance

  • Improve method block performance for runtime (#2449)
  • Uninline non-typical argument handling (#2419)
  • Logic optimization of runtime.js (#2415)
  • Windows support for performance:compare CI check (#2450)
  • Improve block performance for even more cases (#2465)

Added

  • Added support for #freeze and #frozen? (#2444, #2468)
  • Add CLI support for ESM, at least for Chrome, NodeJS, QuickJS and GJS (#2435)
  • Support exit in Chrome CLI Runner, both sync and async (#2439)
  • Make sure the Server CLI Runner can pick up changes in sources (#2436)
  • Delegate and ruby2_keywords (#2446)
  • Source code can now be embedded in the compiled file to improve development/debugging, e.g. RSpec reports, Proc#source_location (#2440)
  • Added Kernel#caller_locations (#2440)
  • Opal::Builder::Prefork for blazingly fast multicore compilation times (#2263, #2462, #2454, #2469, #2475)
  • Add Opal::BuilderProcessors::RubyERBProcessor (#2470)

Fixed

  • Closure tracking support fixes a whole array of bugs handling break / next / retry / … (#2357)
  • Fix an edge case of if in the most complex form not returning (#2433)
  • String#length is now available when using opal/mini (#2438)
  • Auto-await produced invalid code (#2440)
  • Fix Enumerable#collect_concat and #flat_map implementation (#2440)
  • Improved await support for PromiseV1 (#2440)
  • Compilation error occurs while compiling being/end returning a case/when (#2459)
  • Ensure UTF-8 encoding of .sourcesContent of source maps (#2451)
  • Benchmarks require string/unpack (#2453)
  • Fix compilation of a call: gets&.chomp (#2473)
  • Fix specs on Windows (#2460)
  • Make opal CLI tool work again with pipes (#2474)

Internal

  • GitHub Workflows security hardening (#2432)
  • Retry if file cache write operation exits with Zlib::BufError (#2463)
  • Eliminate redundant var constructor in allocate_class (#2452)
  • Fix performance:compare asset size calculation (#2457)
  • Fix a few specs after the Opal RSpec 1.0 (alpha) release (#2471, #2472)
opal -

Published by elia almost 2 years ago

Changed

  • No longer truncate stacktraces to 15 lines (#2440)

Performance

  • Improve method block performance for runtime (#2449)
  • Uninline non-typical argument handling (#2419)
  • Logic optimization of runtime.js (#2415)
  • Windows support for performance:compare CI check (#2450)
  • Improve block performance for even more cases (#2465)

Added

  • Added support for #freeze and #frozen? (#2444, #2468)
  • Add CLI support for ESM, at least for Chrome, NodeJS, QuickJS and GJS (#2435)
  • Support exit in Chrome CLI Runner, both sync and async (#2439)
  • Make sure the Server CLI Runner can pick up changes in sources (#2436)
  • Delegate and ruby2_keywords (#2446)
  • Source code can now be embedded in the compiled file to improve development/debugging, e.g. RSpec reports, Proc#source_location (#2440)
  • Added Kernel#caller_locations (#2440)
  • Opal::Builder::Prefork for blazingly fast multicore compilation times (#2263, #2462, #2454)

Fixed

  • Closure tracking support fixes a whole array of bugs handling break / next / retry / … (#2357)
  • Fix an edge case of if in the most complex form not returning (#2433)
  • String#length is now available when using opal/mini (#2438)
  • Auto-await produced invalid code (#2440)
  • Fix Enumerable#collect_concat and #flat_map implementation (#2440)
  • Improved await support for PromiseV1 (#2440)
  • Compilation error occurs while compiling being/end returning a case/when (#2459)
  • Ensure UTF-8 encoding of .sourcesContent of source maps (#2451)
  • Benchmarks require string/unpack (#2453)

Internal

  • GitHub Workflows security hardening (#2432)
  • Retry if file cache write operation exits with Zlib::BufError (#2463)
  • Eliminate redundant var constructor in allocate_class (#2452)
  • Fix performance:compare asset size calculation (#2457)
opal - v1.5.1

Published by elia about 2 years ago

Fixed

  • Make Time.new not depend on Date.prototype.getTimezoneOffset() (#2426)
  • Fix exception during Hash#each_value if keys get deleted during loop (#2427)
  • Fix scan_until and check_until implementation of StringScanner (#2420)

New Contributors

Full Changelog: https://github.com/opal/opal/compare/v1.5.0...v1.5.1

opal - v1.5.0

Published by elia over 2 years ago

Added

Changed

Performance

Fixed

Internal

New Contributors

Full Changelog: https://github.com/opal/opal/compare/v1.4.1...v1.5.0

opal -

Published by elia almost 3 years ago

Changed

  • PromiseV2 is now declared a stable interface! (#2380)

Fixed

  • Args named with JS reserved words weren't always renamed when zsuper was involved (#2385)
opal -

Published by elia almost 3 years ago

Added

  • Implement chomp: option for String#each_line and #lines (#2355)
  • Ruby 3.1 support and some older Ruby features we missed (#2347)
    • Use parser in 3.1 mode to support new language-level features like hashes/kwargs value omission, the pin operator for pattern matching
    • Array#intersect?
    • String#strip and String#lstrip to also remove NUL bytes
    • Integer.try_convert
    • public, private, protected, module_function now return their arguments
    • Class#descendants, Class#subclasses
    • (<=1.8) Kernel#local_variables
    • (<=2.3) Set local variables for regexp named captures (/(?<b>a)/ =~ 'a' => b = 'a')
    • Remove deprecated NIL, TRUE, FALSE constants
    • String#unpack and String#unpack1 to support an offset: kwarg
    • MatchData#match, MatchData#match_length
    • Enumerable modernization
      • Enumerable#tally to support an optional hash accumulator
      • Enumerable#each_{cons,slice} to return self
      • Enumerable#compact
    • Refinement becomes its own class now
    • Struct#keyword_init?
    • (pre-3.1) Large Enumerator rework
      • Introduce Enumerator::ArithmeticSequence
      • Introduce Enumerator::Chain
      • Introduce Enumerator#+ to create Enumerator::Chains
      • Enumerator#{rewind,peek,peek_values,next,next_values}
      • Improve corelib support for beginless/endless ranges and ArithmeticSequences
        • String#[], Array#[], Array#[]=, Array#fill, Array#values_at
      • Range#step and Numeric#step return an ArithmeticSequence when Numeric values are in play
      • Introduce Range#%
      • Enumerator::Yielder#to_proc
      • Fix #2367
    • (2.7) UnboundMethod#bind_call
    • (Opal) {Kernel,BasicObject}#{inspect,p,pp,method_missing} may work with JS native values now, also they now correctly report cycles
    • Enumerable#sum uses Kahan's summation algorithm to reduce error with floating point values
    • File.dirname supports a new level argument
  • Vendor in optparse and shellwords (#2326)
  • Preliminary support for compiling the whole bin/opal with Opal (#2326)

Fixed

  • Fix coertion for Array#drop (#2371)
  • Fix coertion for File.absolute_path (#2372)
  • Fix some IO#puts edge cases (no args, empty array, nested array, …) (#2372)
  • Preserve UNC path prefix on File.join (#2366)
  • Methods on Kernel, BasicObject, Boolean will never return boxed values anymore (#2293)
    • false.tap{} will now correctly return a JS value of false, not Object(false)
  • opal-parser doesn't break on <<~END strings anymore (#2364)
  • Fix error reporting at the early stage of loading (#2326)

Changed

  • Various outputted code size optimizations - 19% improvement for minified unmangled AsciiDoctor bundle - see: https://opalrb.com/blog/2021/11/24/optimizing-opal-output-for-size/ (#2356)
  • Second round of code size optimizations - 3% improvement for AsciiDoctor bundle on top of the first round - 23% total - see: https://github.com/opal/opal/pull/2365/commits (#2365)
    • The calls to ==, != and === changed their semantics slightly: it's impossible to monkey patch those calls for String and Number, but on other classes they can now return nil and it will be handled correctly
    • The calls to ! changed their semantics slightly: it's impossible to monkey patch this call for Boolean or NilClass.
  • Refactored the structure of the internal stdlib/nodejs folder (#2374)
    • Added nodejs/base with just I/O, exit, and ARGV management
    • Moved Process::Status to corelib
    • Fixed requires to be more robust

Removed

  • Removed nodejs/irb from stdlib as it's been broken for some time (#2374)
  • Removed Kernel#node_require from nodejs/kernel as it's been deprecated for a long time (#2374)
opal -

Published by elia almost 3 years ago

Please refer to UNRELEASED.md.