opal 1.6.0.rc1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +70 -0
- data/UNRELEASED.md +0 -46
- data/docs/async.md +5 -17
- data/docs/releasing.md +3 -4
- data/lib/opal/version.rb +1 -1
- data/opal/corelib/constants.rb +2 -2
- data/stdlib/await.rb +0 -7
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 849fd3ee9a34f471ea70ff0069aedfc41b66471e846b81c59e6fd17370e881a6
|
4
|
+
data.tar.gz: 71220b09662aef06681fadb4e0841eb110afa4a3e15b14e77de9a6e0666f0564
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62c5c2f184630d3fc92ec3792e5022434668d33023b89c36a49e128991a7aeea26d61f7ed7559e57e9def93577a94d784f6308c65a78c3ac83726d50942e3435
|
7
|
+
data.tar.gz: b7ede6f69220d31c0b8dc0f8350b3699c428d50471ef8d9df47a1a6c9b197116994d1b682681ee37a83b2a0c8547b93e059295c555074a093403ebe9d6ccf84a
|
data/CHANGELOG.md
CHANGED
@@ -10,11 +10,76 @@ Changes are grouped as follows:
|
|
10
10
|
- **Removed** for deprecated features removed in this release.
|
11
11
|
- **Fixed** for any bug fixes.
|
12
12
|
- **Security** to invite users to upgrade in case of vulnerabilities.
|
13
|
+
- **Performance** changes related to speed and efficiency.
|
13
14
|
|
14
15
|
|
15
16
|
|
16
17
|
|
17
18
|
|
19
|
+
## [1.6.0](https://github.com/opal/opal/compare/v1.5.1...v1.6.0) - 2022-11-24
|
20
|
+
|
21
|
+
|
22
|
+
<!--
|
23
|
+
### Internal
|
24
|
+
### Changed
|
25
|
+
### Added
|
26
|
+
### Removed
|
27
|
+
### Deprecated
|
28
|
+
### Performance
|
29
|
+
### Fixed
|
30
|
+
-->
|
31
|
+
|
32
|
+
### Changed
|
33
|
+
|
34
|
+
- No longer truncate stacktraces to 15 lines ([#2440](https://github.com/opal/opal/pull/2440))
|
35
|
+
- Mark async/await as non-experimental ([#2477](https://github.com/opal/opal/pull/2477))
|
36
|
+
|
37
|
+
### Performance
|
38
|
+
|
39
|
+
- Improve method block performance for runtime ([#2449](https://github.com/opal/opal/pull/2449))
|
40
|
+
- Uninline non-typical argument handling ([#2419](https://github.com/opal/opal/pull/2419))
|
41
|
+
- Logic optimization of runtime.js ([#2415](https://github.com/opal/opal/pull/2415))
|
42
|
+
- Windows support for `performance:compare` CI check ([#2450](https://github.com/opal/opal/pull/2450))
|
43
|
+
- Improve block performance for even more cases ([#2465](https://github.com/opal/opal/pull/2465))
|
44
|
+
|
45
|
+
### Added
|
46
|
+
|
47
|
+
- Added support for `#freeze` and `#frozen?` (#2444, #2468)
|
48
|
+
- Add CLI support for ESM, at least for Chrome, NodeJS, QuickJS and GJS ([#2435](https://github.com/opal/opal/pull/2435))
|
49
|
+
- Support exit in Chrome CLI Runner, both sync and async ([#2439](https://github.com/opal/opal/pull/2439))
|
50
|
+
- Make sure the Server CLI Runner can pick up changes in sources ([#2436](https://github.com/opal/opal/pull/2436))
|
51
|
+
- Delegate and ruby2_keywords ([#2446](https://github.com/opal/opal/pull/2446))
|
52
|
+
- Source code can now be embedded in the compiled file to improve development/debugging, e.g. RSpec reports, `Proc#source_location` ([#2440](https://github.com/opal/opal/pull/2440))
|
53
|
+
- Added `Kernel#caller_locations` ([#2440](https://github.com/opal/opal/pull/2440))
|
54
|
+
- `Opal::Builder::Prefork` for blazingly fast multicore compilation times (#2263, #2462, #2454, #2469, #2475)
|
55
|
+
- Add `Opal::BuilderProcessors::RubyERBProcessor` ([#2470](https://github.com/opal/opal/pull/2470))
|
56
|
+
|
57
|
+
### Fixed
|
58
|
+
|
59
|
+
- Closure tracking support fixes a whole array of bugs handling `break` / `next` / `retry` / … ([#2357](https://github.com/opal/opal/pull/2357))
|
60
|
+
- Fix an edge case of if in the most complex form not returning ([#2433](https://github.com/opal/opal/pull/2433))
|
61
|
+
- `String#length` is now available when using `opal/mini` ([#2438](https://github.com/opal/opal/pull/2438))
|
62
|
+
- Auto-await produced invalid code ([#2440](https://github.com/opal/opal/pull/2440))
|
63
|
+
- Fix `Enumerable#collect_concat` and `#flat_map` implementation ([#2440](https://github.com/opal/opal/pull/2440))
|
64
|
+
- Improved await support for PromiseV1 ([#2440](https://github.com/opal/opal/pull/2440))
|
65
|
+
- Compilation error occurs while compiling `being/end` returning a `case/when` ([#2459](https://github.com/opal/opal/pull/2459))
|
66
|
+
- Ensure UTF-8 encoding of `.sourcesContent` of source maps ([#2451](https://github.com/opal/opal/pull/2451))
|
67
|
+
- Benchmarks require string/unpack ([#2453](https://github.com/opal/opal/pull/2453))
|
68
|
+
- Fix compilation of a call: `gets&.chomp` ([#2473](https://github.com/opal/opal/pull/2473))
|
69
|
+
- Fix specs on Windows ([#2460](https://github.com/opal/opal/pull/2460))
|
70
|
+
- Make opal CLI tool work again with pipes ([#2474](https://github.com/opal/opal/pull/2474))
|
71
|
+
|
72
|
+
### Internal
|
73
|
+
|
74
|
+
- GitHub Workflows security hardening ([#2432](https://github.com/opal/opal/pull/2432))
|
75
|
+
- Retry if file cache write operation exits with Zlib::BufError ([#2463](https://github.com/opal/opal/pull/2463))
|
76
|
+
- Eliminate redundant `var constructor` in `allocate_class` ([#2452](https://github.com/opal/opal/pull/2452))
|
77
|
+
- Fix `performance:compare` asset size calculation ([#2457](https://github.com/opal/opal/pull/2457))
|
78
|
+
- Fix a few specs after the Opal RSpec 1.0 (alpha) release (#2471, #2472)
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
18
83
|
## [1.5.1](https://github.com/opal/opal/compare/v1.5.0...v1.5.1) - 2022-07-20
|
19
84
|
|
20
85
|
|
@@ -24,6 +89,11 @@ Changes are grouped as follows:
|
|
24
89
|
- Fix exception during `Hash#each_value` if keys get deleted during loop ([#2427](https://github.com/opal/opal/pull/2427))
|
25
90
|
- Fix scan_until and check_until implementation of StringScanner ([#2420](https://github.com/opal/opal/pull/2420))
|
26
91
|
|
92
|
+
## New Contributors
|
93
|
+
* @Leon0402 made their first contribution in https://github.com/opal/opal/pull/2420
|
94
|
+
|
95
|
+
**Full Changelog**: https://github.com/opal/opal/compare/v1.5.0...v1.5.1
|
96
|
+
|
27
97
|
|
28
98
|
|
29
99
|
|
data/UNRELEASED.md
CHANGED
@@ -8,49 +8,3 @@
|
|
8
8
|
### Fixed
|
9
9
|
-->
|
10
10
|
|
11
|
-
### Changed
|
12
|
-
|
13
|
-
- No longer truncate stacktraces to 15 lines (#2440)
|
14
|
-
|
15
|
-
### Performance
|
16
|
-
|
17
|
-
- Improve method block performance for runtime (#2449)
|
18
|
-
- Uninline non-typical argument handling (#2419)
|
19
|
-
- Logic optimization of runtime.js (#2415)
|
20
|
-
- Windows support for `performance:compare` CI check (#2450)
|
21
|
-
- Improve block performance for even more cases (#2465)
|
22
|
-
|
23
|
-
### Added
|
24
|
-
|
25
|
-
- Added support for `#freeze` and `#frozen?` (#2444, #2468)
|
26
|
-
- Add CLI support for ESM, at least for Chrome, NodeJS, QuickJS and GJS (#2435)
|
27
|
-
- Support exit in Chrome CLI Runner, both sync and async (#2439)
|
28
|
-
- Make sure the Server CLI Runner can pick up changes in sources (#2436)
|
29
|
-
- Delegate and ruby2_keywords (#2446)
|
30
|
-
- Source code can now be embedded in the compiled file to improve development/debugging, e.g. RSpec reports, `Proc#source_location` (#2440)
|
31
|
-
- Added `Kernel#caller_locations` (#2440)
|
32
|
-
- `Opal::Builder::Prefork` for blazingly fast multicore compilation times (#2263, #2462, #2454, #2469, #2475)
|
33
|
-
- Add `Opal::BuilderProcessors::RubyERBProcessor` (#2470)
|
34
|
-
|
35
|
-
### Fixed
|
36
|
-
|
37
|
-
- Closure tracking support fixes a whole array of bugs handling `break` / `next` / `retry` / … (#2357)
|
38
|
-
- Fix an edge case of if in the most complex form not returning (#2433)
|
39
|
-
- `String#length` is now available when using `opal/mini` (#2438)
|
40
|
-
- Auto-await produced invalid code (#2440)
|
41
|
-
- Fix `Enumerable#collect_concat` and `#flat_map` implementation (#2440)
|
42
|
-
- Improved await support for PromiseV1 (#2440)
|
43
|
-
- Compilation error occurs while compiling `being/end` returning a `case/when` (#2459)
|
44
|
-
- Ensure UTF-8 encoding of `.sourcesContent` of source maps (#2451)
|
45
|
-
- Benchmarks require string/unpack (#2453)
|
46
|
-
- Fix compilation of a call: `gets&.chomp` (#2473)
|
47
|
-
- Fix specs on Windows (#2460)
|
48
|
-
- Make opal CLI tool work again with pipes (#2474)
|
49
|
-
|
50
|
-
### Internal
|
51
|
-
|
52
|
-
- GitHub Workflows security hardening (#2432)
|
53
|
-
- Retry if file cache write operation exits with Zlib::BufError (#2463)
|
54
|
-
- Eliminate redundant `var constructor` in `allocate_class` (#2452)
|
55
|
-
- Fix `performance:compare` asset size calculation (#2457)
|
56
|
-
- Fix a few specs after the Opal RSpec 1.0 (alpha) release (#2471, #2472)
|
data/docs/async.md
CHANGED
@@ -1,16 +1,5 @@
|
|
1
1
|
# Asynchronous code (PromiseV2 / async / await)
|
2
2
|
|
3
|
-
Please be aware that this functionality is marked as experimental and may change
|
4
|
-
in the future.
|
5
|
-
|
6
|
-
In order to disable the warnings that will be shown if you use those experimental
|
7
|
-
features, add the following line before requiring `promise/v2` or `await` and after
|
8
|
-
requiring `opal`.
|
9
|
-
|
10
|
-
```ruby
|
11
|
-
`Opal.config.experimental_features_severity = 'ignore'`
|
12
|
-
```
|
13
|
-
|
14
3
|
## PromiseV2
|
15
4
|
|
16
5
|
In Opal 1.2 we introduced PromiseV2 which is to replace the default Promise in Opal 2.0
|
@@ -52,7 +41,7 @@ require "await"
|
|
52
41
|
|
53
42
|
def wait_5_seconds
|
54
43
|
puts "Let's wait 5 seconds..."
|
55
|
-
sleep(5).
|
44
|
+
sleep(5).__await__
|
56
45
|
puts "Done!"
|
57
46
|
end
|
58
47
|
|
@@ -60,14 +49,11 @@ wait_5_seconds.__await__
|
|
60
49
|
```
|
61
50
|
|
62
51
|
It's important to understand what happens under the hood: every scope in which `#__await__` is
|
63
|
-
encountered will become async, which means that it will return a
|
52
|
+
encountered will become async, which means that it will return a PromiseV2 that will resolve
|
64
53
|
to a value. This includes methods, blocks and the top scope. This means, that `#__await__` is
|
65
54
|
infectious and you need to remember to `#__await__` everything along the way, otherwise
|
66
55
|
a program will finish too early and the values may be incorrect.
|
67
56
|
|
68
|
-
[You can take a look at how we ported Minitest to support asynchronous tests.](https://github.com/opal/opal/pull/2221/commits/8383c7b45a94fe4628778f429508b9c08c8948b0) Take note, that
|
69
|
-
it was ported to use `#await` while the finally accepted version uses `#__await__`.
|
70
|
-
|
71
57
|
It is certainly correct to `#__await__` any value, including non-Promises, for instance
|
72
58
|
`5.__await__` will correctly resolve to `5` (except that it will make the scope an async
|
73
59
|
function, with all the limitations described above).
|
@@ -76,6 +62,8 @@ The `await` stdlib module includes a few useful functions, like async-aware `eac
|
|
76
62
|
function and `sleep` that doesn't block the thread. It also includes a method `#await`
|
77
63
|
which is an alias of `#itself` - it makes sense to auto-await that method.
|
78
64
|
|
65
|
+
[You can take a look at how we ported Minitest to support asynchronous tests.](https://github.com/opal/opal/pull/2221/files#diff-bdc8868ad4476bff7b25475f1b19059ac684d64c6531a645b3ba0aef0c466d0f).
|
66
|
+
|
79
67
|
This approach is certainly incompatible with what Ruby does, but due to a dynamic nature
|
80
68
|
of Ruby and a different model of JavaScript this was the least invasive way to catch up
|
81
69
|
with the latest JavaScript trends and support `Promise` heavy APIs and asynchronous code.
|
@@ -106,4 +94,4 @@ require "await"
|
|
106
94
|
p i
|
107
95
|
sleep i
|
108
96
|
end
|
109
|
-
```
|
97
|
+
```
|
data/docs/releasing.md
CHANGED
@@ -18,14 +18,14 @@ _This guide is a work-in-progress._
|
|
18
18
|
- Commit the updated changelog along with the version bump using this commit message:
|
19
19
|
"Release v1.2.3"
|
20
20
|
- Push the commit and run `bin/rake release` to release the new version to Rubygems
|
21
|
-
- Go to GitHub releases and create a new release from the latest tag pasting the contents from CHANGELOG.md
|
21
|
+
- Go to GitHub releases and create a new release from the latest tag pasting the contents from CHANGELOG.md (or UNRELEASED.md for pre-releases)
|
22
22
|
|
23
23
|
## Opal docs
|
24
24
|
|
25
25
|
- Open `opal-docs` and run `bin/build v1.2.3`
|
26
26
|
- Then run `bin/deploy`
|
27
27
|
|
28
|
-
## Opal site
|
28
|
+
## [skip for pre-releases] Opal site
|
29
29
|
|
30
30
|
- Open `opal.github.io` and update the opal version in the `Gemfile`
|
31
31
|
- run `bin/build`
|
@@ -35,9 +35,8 @@ _This guide is a work-in-progress._
|
|
35
35
|
|
36
36
|
- Run `bin/release v1.2.3`
|
37
37
|
|
38
|
-
## Prepare for the next release
|
38
|
+
## [skip for minor-releases] Prepare for the next release
|
39
39
|
|
40
|
-
- Skip this step if releasing a stable release
|
41
40
|
- Create a new pull request that:
|
42
41
|
- Updates a version to `v1.x.0.dev` in both `lib/opal/version.rb` and `opal/corelib/constants.rb`
|
43
42
|
- Remember to merge that PR before merging anything else next once we decide to not release any more point releases from `master`.
|
data/lib/opal/version.rb
CHANGED
data/opal/corelib/constants.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
::RUBY_PLATFORM = 'opal'
|
2
2
|
::RUBY_ENGINE = 'opal'
|
3
3
|
::RUBY_VERSION = '3.1.0'
|
4
|
-
::RUBY_ENGINE_VERSION = '1.6.0
|
5
|
-
::RUBY_RELEASE_DATE = '2022-11-
|
4
|
+
::RUBY_ENGINE_VERSION = '1.6.0'
|
5
|
+
::RUBY_RELEASE_DATE = '2022-11-24'
|
6
6
|
::RUBY_PATCHLEVEL = 0
|
7
7
|
::RUBY_REVISION = '0'
|
8
8
|
::RUBY_COPYRIGHT = 'opal - Copyright (C) 2013-2022 Adam Beynon and the Opal contributors'
|
data/stdlib/await.rb
CHANGED
@@ -1,13 +1,6 @@
|
|
1
1
|
# helpers: coerce_to
|
2
2
|
# await: await
|
3
3
|
|
4
|
-
if `Opal.config.experimental_features_severity == 'warning'`
|
5
|
-
warn 'Await functionality is a technology preview, which means it may change its behavior ' \
|
6
|
-
'in the future unless this warning is removed. If you are interested in this part, ' \
|
7
|
-
'please make sure you track the async/await/promises tag on Opal issues: ' \
|
8
|
-
'https://github.com/opal/opal/issues?q=label%3Aasync%2Fawait%2Fpromises'
|
9
|
-
end
|
10
|
-
|
11
4
|
%x{
|
12
5
|
var AsyncFunction = Object.getPrototypeOf(async function() {}).constructor;
|
13
6
|
}
|
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.6.0
|
4
|
+
version: 1.6.0
|
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: 2022-11-
|
13
|
+
date: 2022-11-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ast
|
@@ -1169,10 +1169,10 @@ licenses:
|
|
1169
1169
|
metadata:
|
1170
1170
|
homepage_uri: https://opalrb.com/
|
1171
1171
|
bug_tracker_uri: https://github.com/opal/opal/issues
|
1172
|
-
changelog_uri: https://github.com/opal/opal/blob/v1.6.0
|
1173
|
-
readme_uri: https://github.com/opal/opal/blob/v1.6.0
|
1174
|
-
api_documentation_uri: http://opalrb.com/docs/api/v1.6.0
|
1175
|
-
guides_uri: http://opalrb.com/docs/guides/v1.6.0
|
1172
|
+
changelog_uri: https://github.com/opal/opal/blob/v1.6.0/CHANGELOG.md
|
1173
|
+
readme_uri: https://github.com/opal/opal/blob/v1.6.0/README.md
|
1174
|
+
api_documentation_uri: http://opalrb.com/docs/api/v1.6.0/index.html
|
1175
|
+
guides_uri: http://opalrb.com/docs/guides/v1.6.0/index.html
|
1176
1176
|
chat_uri: https://gitter.im/opal/opal
|
1177
1177
|
source_code_uri: https://github.com/opal/opal
|
1178
1178
|
post_install_message:
|
@@ -1186,9 +1186,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1186
1186
|
version: '2.3'
|
1187
1187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1188
1188
|
requirements:
|
1189
|
-
- - "
|
1189
|
+
- - ">="
|
1190
1190
|
- !ruby/object:Gem::Version
|
1191
|
-
version:
|
1191
|
+
version: '0'
|
1192
1192
|
requirements: []
|
1193
1193
|
rubygems_version: 3.3.22
|
1194
1194
|
signing_key:
|