[ANN] opal 1.5.0 released

Happy Easter everyone!

opal version 1.5.0 has been released! (It's a re-release of previously announced 1.5.0.rc1)

* home: https://opalrb.com/
* github: GitHub - opal/opal: Ruby ♥︎ JavaScript
* chat: https://slack.opalrb.com/

Opal is a Ruby (3.1) to JavaScript (ES5) compiler allowing you to write frontend code in pure Ruby and have it translated to clean and efficient JavaScript. It also includes a highly compatible core library that includes all the methods you've come to love.

This release is mostly focused on performance improvements. In fact, in our tests, we got a 2x performance bump for the Opal Ruby compiler running in V8! As always, we have some new features, some compatibility improvements and a bunch of bugfixes.

This release was also focused on getting|binding.irb| work in Opal. We decided to include this feature by default, so you can start debugging issues without needing to do anything. This barely has a performance or load time impact, since most of the logic is loaded dynamically from Opal CDN only when needed (including the Ruby parser and Opal compiler). In fact, because of the other improvements in this release, your bundle size may be even smaller than in Opal 1.4.

Try it now on Try Opal: Browser compiler and REPL

Read more release notes on: Opal 1.5: binding.irb in a web browser

Changelog:

### Added

- Introduce timezone support for Time ([#2394](Introduce timezone support for Time by hmdne · Pull Request #2394 · opal/opal · GitHub))
- DateTime and Date refactor ([#2398](DateTime and Date refactor by hmdne · Pull Request #2398 · opal/opal · GitHub))
- Implement `Number#prev_float`/`#next_float` ([#2404](Implement Number#prev_float/next_float by takaram · Pull Request #2404 · opal/opal · GitHub))
- Support `binding.irb` anywhere in the code, for both browsers and node ([#2392](Support binding.irb by hmdne · Pull Request #2392 · opal/opal · GitHub))
- Added `URI.decode_www_form` ([#2387](Added `URI.decode_www_form` by HoneyryderChuck · Pull Request #2387 · opal/opal · GitHub))

### Changed

- Move Math IE11-supporting polyfills to a separate file ([#2395](Move `Math` IE11-supporting polyfills to a separate file by hmdne · Pull Request #2395 · opal/opal · GitHub))
- String methods always return Strings even when overloaded ([#2413](String methods always return Strings even when overloaded by hmdne · Pull Request #2413 · opal/opal · GitHub))
- `alias` calls will not add the "old name" method to the list of stubs for method missing ([#2414](Misc changes extracted from DCE work by elia · Pull Request #2414 · opal/opal · GitHub))
- Optimize writer/setter methods, up to 4% performance gain ([#2402](Optimize writer by hmdne · Pull Request #2402 · opal/opal · GitHub))

### Performance

- Improve performance of argument coertion, fast-track `Integer`, `String`, and calling the designed coertion method ([#2383](Runtime optimization by hmdne · Pull Request #2383 · opal/opal · GitHub))
- Optimize `Array#[]=` by moving the implementation to JavaScript and inlining type checks ([#2383](Runtime optimization by hmdne · Pull Request #2383 · opal/opal · GitHub))
- Optimize internal runtime passing of block-options ([#2383](Runtime optimization by hmdne · Pull Request #2383 · opal/opal · GitHub))
- Compile `case` statements as `switch` whenever possible ([#2411](Compile `case` statements as `switch` whenever possible by hmdne · Pull Request #2411 · opal/opal · GitHub))
- Improve performance with optimized common method/iter implementation shortcuts ([#2401](Improve performance with optimized common method/iter implementation shortcuts by hmdne · Pull Request #2401 · opal/opal · GitHub))

### Fixed

- Fix `Regexp.new`, previously `\A` and `\z` didn't match beginning and end of input ([#2079](Fix Regexp.new, replace \A to ^ and \z to $ by ysakasin · Pull Request #2079 · opal/opal · GitHub))
- Fix exception during `Hash#each` and `Hash#each_key` if keys get deleted during the loop ([#2403](Fix exception during Hash#each and Hash#each_key if keys get deleted during loop by janbiedermann · Pull Request #2403 · opal/opal · GitHub))
- Fix defining multiple methods with the same block ([#2397](Restore "Fix defining multiple methods with the same block" by elia · Pull Request #2397 · opal/opal · GitHub))
- A few edge cases of conditional calls combined with setters, e.g. `foo&.bar = 123` ([#2402](Optimize writer by hmdne · Pull Request #2402 · opal/opal · GitHub))
- Correct String#to_proc and method_missing compatibility ([#2418](Correct String#to_proc and method_missing compatibility by hmdne · Pull Request #2418 · opal/opal · GitHub))
- Exit REPL respecting the exit status number ([#2396](Exit REPL respecting the exit status number by janbiedermann · Pull Request #2396 · opal/opal · GitHub))

### Internal

- Rewriters refactor, fix interaction between cache and inverted runner ([#2400](Rewriters refactor by hmdne · Pull Request #2400 · opal/opal · GitHub))