` ([#2581](https://github.com/opal/opal/pull/2581))\r\n- Do not skip `$truthy` when left hand side of a comparison is `self` ([#2596](https://github.com/opal/opal/pull/2596))\r\n- Unexpected `return`/`break` should raise `LocalJumpError` ([#2591](https://github.com/opal/opal/pull/2591))\r\n\r\n### Added\r\n\r\n- SourceMap support for `Kernel#eval` ([#2534](https://github.com/opal/opal/pull/2534))\r\n- Add `CGI::Util#escapeURIComponent` and `CGI::Util#unescapeURIComponent` ([#2566](https://github.com/opal/opal/pull/2566))\r\n- `CGI::Util` implement additional methods ([#2601](https://github.com/opal/opal/pull/2601))\r\n\r\n### Changed\r\n\r\n- Change compilation of Regexp nodes that may contain advanced features, so if invalid that they would raise at runtime, not parse-time ([#2548](https://github.com/opal/opal/pull/2548))\r\n- `Hash` is now bridged to JavaScript `Map` and support for non-symbol keys in keyword arguments ([#2568](https://github.com/opal/opal/pull/2568))\r\n\r\n### Documentation\r\n\r\n- Bridging documentation ([#2541](https://github.com/opal/opal/pull/2541))\r\n- Fix Typo in Running tests Section of README.md File ([#2580](https://github.com/opal/opal/pull/2580))\r\n\r\n### Performance\r\n\r\n- Improve performance of `Array#intersect?` and `#intersection` ([#2533](https://github.com/opal/opal/pull/2533))\r\n- `Proc#call`: Refactor for performance ([#2541](https://github.com/opal/opal/pull/2541))\r\n- Opal.stub_for: optimize ([#2541](https://github.com/opal/opal/pull/2541))\r\n- Hash: Optimize `#to_a` ([#2541](https://github.com/opal/opal/pull/2541))\r\n- Array: Optimize `#collect`/`#map` ([#2541](https://github.com/opal/opal/pull/2541))\r\n- Optimize argument slicing in runtime for performance ([#2555](https://github.com/opal/opal/pull/2555))\r\n- Closure: Generate a JavaScript object, not an Error, gain up to 15% on Asciidoctor ([#2556](https://github.com/opal/opal/pull/2556))\r\n- Optimize `String#split` and `String#start_with` ([#2560](https://github.com/opal/opal/pull/2560))\r\n- Compute `$@` dynamically ([#2592](https://github.com/opal/opal/pull/2592))\r\n- Optimize the `$prop` helper ([#2597](https://github.com/opal/opal/pull/2597))\r\n- Improve `Array.push()` performance when pushing many items ([#2565](https://github.com/opal/opal/pull/2565))\r\n- Optimize `Opal.instance_methods` ([#2600](https://github.com/opal/opal/pull/2600))\r\n\r\n### Internal\r\n\r\n- Update rubocop ([#2535](https://github.com/opal/opal/pull/2535))\r\n- Match3Node Cleanup ([#2541](https://github.com/opal/opal/pull/2541))\r\n- IFlipFlop/EFlipFlop: Refactor for readability ([#2541](https://github.com/opal/opal/pull/2541))\r\n- ForRewriter: Refactor for readability ([#2541](https://github.com/opal/opal/pull/2541))\r\n\r\n","url":"https://announcehq.com/opal/8f1ac413-60d6-44d2-81cf-772af3ac7273","datePublished":"2023-10-26T09:22:15.000Z","dateModified":"2023-10-26T09:22:15.000Z","author":{"@type":"Organization","name":"opal","url":"https://github.com/opal/opal"},"publisher":{"@type":"Organization","name":"AnnounceHQ","url":"https://announcehq.com","logo":{"@type":"ImageObject","url":"https://announcehq.com/logo.png"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://announcehq.com/opal/8f1ac413-60d6-44d2-81cf-772af3ac7273"},"isPartOf":{"@type":"WebPage","@id":"https://announcehq.com/opal","name":"opal Changelog"},"about":{"@type":"SoftwareApplication","name":"opal"},"keywords":"opal, release notes, changelog, new, software update"}Back to changelog
New
v1.8.0
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:
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)