opal 1.0.0.beta1 → 1.0.4
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/.github/FUNDING.yml +1 -0
- data/.github/workflows/build.yml +77 -0
- data/CHANGELOG.md +49 -7
- data/Gemfile +2 -2
- data/README.md +28 -20
- data/UNRELEASED.md +1 -131
- data/bin/git-submodule-fast-install +49 -0
- data/bin/setup +4 -0
- data/bin/yarn +11 -0
- data/docs/releasing.md +18 -0
- data/lib/opal/cli_options.rb +1 -0
- data/lib/opal/cli_runners/chrome.js +2 -2
- data/lib/opal/cli_runners/chrome.rb +2 -2
- data/lib/opal/parser/patch.rb +15 -0
- data/lib/opal/util.rb +11 -48
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +2 -2
- data/opal/corelib/constants.rb +4 -4
- data/opal/corelib/error.rb +4 -0
- data/opal/corelib/runtime.js +33 -33
- data/opal/corelib/string.rb +12 -1
- data/opal/corelib/string/encoding.rb +16 -0
- data/opal/corelib/time.rb +1 -1
- data/package.json +15 -0
- data/stdlib/native.rb +1 -2
- data/stdlib/nodejs/stacktrace.rb +1 -1
- data/tasks/linting.rake +3 -5
- data/tasks/releasing.rake +2 -2
- data/tasks/testing.rake +1 -0
- data/yarn.lock +244 -0
- metadata +24 -19
- data/.travis.yml +0 -109
- data/appveyor.yml +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac47d199e5b2b08d136d657bd37057499f8cd33a54f0425a7c38bc22b38edfc6
|
4
|
+
data.tar.gz: 033f276409e5eb6fb23230122219a7c421b8f1cb5dbb55170895037069e384b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ce98841f00d27ee8265120b794ab27c08d1d54e66327a5767aeffe27299d95211a0222f075d7e279603b5c0136750baf90b76b99667e234c0af8025284a160b
|
7
|
+
data.tar.gz: bce1e56997d1803f9443e3cd4e889e709f5d0f8c15e69729206e893599524df504d453de8b2d16e4b4c015d9e7b39dab74ebeba7314d60243a9512ad883fb903
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
open_collective: opal
|
@@ -0,0 +1,77 @@
|
|
1
|
+
name: build
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
- "*-stable"
|
8
|
+
- "*/ci-check"
|
9
|
+
pull_request:
|
10
|
+
branches:
|
11
|
+
- master
|
12
|
+
|
13
|
+
jobs:
|
14
|
+
rake:
|
15
|
+
name: ${{ matrix.combo.name || matrix.combo.ruby }}
|
16
|
+
strategy:
|
17
|
+
fail-fast: false
|
18
|
+
matrix:
|
19
|
+
combo:
|
20
|
+
- name: current-ruby
|
21
|
+
command: bin/rake
|
22
|
+
ruby: 2.7
|
23
|
+
- name: previous-ruby
|
24
|
+
ruby: 2.6
|
25
|
+
- name: older-ruby
|
26
|
+
ruby: 2.5
|
27
|
+
- name: windows
|
28
|
+
# These two fail because of broken stacktraces on windows: minitest_node_nodejs mspec_nodejs
|
29
|
+
command: bundle exec rake rspec minitest_nodejs
|
30
|
+
ruby: 2.7
|
31
|
+
os: windows-latest
|
32
|
+
- name: lint
|
33
|
+
command: bin/rake lint
|
34
|
+
ruby: 2.7
|
35
|
+
- name: timezone
|
36
|
+
ruby: 2.7
|
37
|
+
|
38
|
+
# Currently failing:
|
39
|
+
# - ruby: truffleruby
|
40
|
+
# - ruby: jruby
|
41
|
+
# - ruby: ruby-head
|
42
|
+
|
43
|
+
runs-on: ${{ matrix.combo.os || 'ubuntu-latest' }}
|
44
|
+
steps:
|
45
|
+
- uses: actions/checkout@v2
|
46
|
+
- uses: ruby/setup-ruby@v1
|
47
|
+
with:
|
48
|
+
ruby-version: ${{ matrix.combo.ruby }}
|
49
|
+
# NOTE: Bundler 2.2.0 fails to install libv8
|
50
|
+
# https://github.com/rubyjs/libv8/issues/310
|
51
|
+
bundler: "2.1.4"
|
52
|
+
bundler-cache: true
|
53
|
+
- run: ruby bin/git-submodule-fast-install
|
54
|
+
- run: bundle lock
|
55
|
+
- uses: actions/cache@v2
|
56
|
+
with:
|
57
|
+
path: vendor/bundle
|
58
|
+
key: ${{ runner.os }}-${{ matrix.combo.ruby }}-gems-${{ github.ref }}-${{ hashFiles('**/Gemfile.lock') }}
|
59
|
+
restore-keys: |
|
60
|
+
${{ runner.os }}-${{ matrix.combo.ruby }}-gems-${{ github.ref }}
|
61
|
+
${{ runner.os }}-${{ matrix.combo.ruby }}-gems-master
|
62
|
+
${{ runner.os }}-${{ matrix.combo.ruby }}-gems-
|
63
|
+
- uses: actions/cache@v2
|
64
|
+
with:
|
65
|
+
path: node_modules
|
66
|
+
key: ${{ runner.os }}-npm-${{ github.ref }}-${{ hashFiles('**/yarn.lock') }}
|
67
|
+
restore-keys: |
|
68
|
+
${{ runner.os }}-npm-${{ github.ref }}
|
69
|
+
${{ runner.os }}-npm-master
|
70
|
+
${{ runner.os }}-npm-
|
71
|
+
- run: yarn install
|
72
|
+
- name: bundle install
|
73
|
+
run: |
|
74
|
+
bundle config path vendor/bundle
|
75
|
+
bundle install --jobs 4 --retry 3
|
76
|
+
bundle clean
|
77
|
+
- run: ${{ matrix.combo.command || 'bin/rake rspec' }}
|
data/CHANGELOG.md
CHANGED
@@ -15,15 +15,47 @@ Changes are grouped as follows:
|
|
15
15
|
|
16
16
|
|
17
17
|
|
18
|
-
## [
|
18
|
+
## [1.0.4](https://github.com/opal/opal/compare/v1.0.3...1.0.4) - 2020-12-13
|
19
19
|
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
### Fixed
|
22
|
+
|
23
|
+
- [Backported] Using the `--map` / `-P` CLI option was only working in conjunction with other options ([#1974](https://github.com/opal/opal/pull/1974))
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
## [1.0.3](https://github.com/opal/opal/compare/v1.0.2...v1.0.3) - 2020-02-01
|
29
|
+
|
30
|
+
|
31
|
+
### Fixed
|
32
|
+
|
33
|
+
- Fixed compiling code with Unicode chars from Opal with opal-parser ([#2074](https://github.com/opal/opal/pull/2074))
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
## [1.0.2](https://github.com/opal/opal/compare/v1.0.1...v1.0.2) - 2019-12-15
|
39
|
+
|
40
|
+
|
41
|
+
- Increase the timeout for starting Chrome within the Chrome runner ([#2037](https://github.com/opal/opal/pull/2037))
|
42
|
+
- Run the Opal code within the body inside Chrome runner, it fixes an issue in opal-rspec ([#2037](https://github.com/opal/opal/pull/2037))
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
## [1.0.1](https://github.com/opal/opal/compare/v1.0.0...v1.0.1) - 2019-12-08
|
48
|
+
|
49
|
+
|
50
|
+
### Changed
|
51
|
+
|
52
|
+
- Relaxed parser version requirement ([#2013](https://github.com/opal/opal/pull/2013))
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
## [1.0.0](https://github.com/opal/opal/compare/v0.11.4...v1.0.0) - 2019-05-12
|
58
|
+
|
27
59
|
|
28
60
|
### Added
|
29
61
|
|
@@ -149,6 +181,16 @@ Whitespace conventions:
|
|
149
181
|
- Fixed compilation of empty/whitespace-only x-strings ([#1811](https://github.com/opal/opal/pull/1811))
|
150
182
|
- Fix `||=` assignments on constants when the constant is not yet defined ([#1935](https://github.com/opal/opal/pull/1935))
|
151
183
|
- Fix `String#chomp` to return an empty String when `arg == self` ([#1936](https://github.com/opal/opal/pull/1936))
|
184
|
+
- Fix methods of `Comparable` when `<=>` does not return Numeric ([#1945](https://github.com/opal/opal/pull/1945))
|
185
|
+
- Fix `Class#native_alias` error message ([#1946](https://github.com/opal/opal/pull/1946))
|
186
|
+
- Fix `gmt_offset` (alias `utc_offset`) should return 0 if the date is UTC ([#1941](https://github.com/opal/opal/pull/1941))
|
187
|
+
- `exceptionDetails.stackTrace` can be undefined ([#1955](https://github.com/opal/opal/pull/1955))
|
188
|
+
- Implement `String#each_codepoint` and `String#codepoints` (#1944, #1947)
|
189
|
+
- [internal] Terminate statement with semi-colon and remove unecessary semi-colon ([#1948](https://github.com/opal/opal/pull/1948))
|
190
|
+
- Some steps toward "strict mode" ([#1953](https://github.com/opal/opal/pull/1953))
|
191
|
+
- Preserve `Exception.stack`, in some cases the backtrace was lost ([#1963](https://github.com/opal/opal/pull/1963))
|
192
|
+
- Make `String#ascii_only?` a little less wrong ([#1951](https://github.com/opal/opal/pull/1951))
|
193
|
+
- Minor fixes to `::Native` ([#1957](https://github.com/opal/opal/pull/1957))
|
152
194
|
|
153
195
|
|
154
196
|
|
data/Gemfile
CHANGED
@@ -48,8 +48,8 @@ end unless ENV['CI']
|
|
48
48
|
|
49
49
|
group :doc do
|
50
50
|
gem 'redcarpet' unless RUBY_ENGINE == 'truffleruby'
|
51
|
-
end
|
51
|
+
end unless ENV['CI']
|
52
52
|
|
53
53
|
platforms :ruby, :mswin, :mswin64, :mingw, :x64_mingw do
|
54
|
-
gem 'c_lexer', '2.
|
54
|
+
gem 'c_lexer', '~> 2.6' unless RUBY_ENGINE == 'truffleruby'
|
55
55
|
end
|
data/README.md
CHANGED
@@ -1,23 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
Opal is a Ruby to JavaScript source-to-source compiler
|
11
|
-
implementation of the Ruby corelib
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
1
|
+
<h1 align="center">
|
2
|
+
<img src="https://secure.gravatar.com/avatar/88298620949a6534d403da2e356c9339?s=420"
|
3
|
+
align="center" title="Opal logo by Elia Schito" width="105" height="105" />
|
4
|
+
<br/>
|
5
|
+
Opal <br/>
|
6
|
+
<img src="https://img.shields.io/badge/Opal-Ruby%20💛%20JavaScript-yellow.svg?logo=ruby&style=social&logoColor=777"/>
|
7
|
+
</h1>
|
8
|
+
|
9
|
+
<p align="center">
|
10
|
+
<em><strong>Opal</strong> is a Ruby to JavaScript source-to-source compiler.<br>
|
11
|
+
It also has an implementation of the Ruby <code>corelib</code> and <code>stdlib</code>.</em>
|
12
|
+
</p>
|
13
|
+
|
14
|
+
<p align="center">
|
15
|
+
<strong>Community:</strong><br>
|
16
|
+
<a href="https://stackoverflow.com/questions/ask?tags=opalrb"><img src="https://img.shields.io/badge/stackoverflow-%23opalrb-orange.svg?style=flat" alt="Stack Overflow" title="" /></a>
|
17
|
+
<a href="#backers"><img src="https://opencollective.com/opal/backers/badge.svg" alt="Backers on Open Collective" title="" /></a>
|
18
|
+
<a href="#sponsors"><img src="https://opencollective.com/opal/sponsors/badge.svg" alt="Sponsors on Open Collective" title="" /></a>
|
19
|
+
<a href="https://gitter.im/opal/opal?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge"><img src="https://badges.gitter.im/Join%20Chat.svg" alt="Gitter" title="" /></a>
|
20
|
+
<a href="https://opalrb.com/docs"><img src="https://img.shields.io/badge/docs-updated-blue.svg" alt="Documentation" title="" /></a>
|
21
|
+
<br>
|
22
|
+
<strong>Code:</strong><br>
|
23
|
+
<a href="https://badge.fury.io/rb/opal"><img src="https://img.shields.io/gem/v/opal.svg?style=flat" alt="Gem Version" title="" /></a>
|
24
|
+
<a href="https://travis-ci.org/opal/opal"><img src="https://img.shields.io/travis/opal/opal/master.svg?style=flat" alt="Build Status (Linux)" title="" /></a>
|
25
|
+
<a href="https://ci.appveyor.com/project/elia/opal/branch/master"><img src="https://ci.appveyor.com/api/projects/status/jtsvwl8tfgn3u67n/branch/master?svg=true" alt="Build Status (Windows)" title="" /></a>
|
26
|
+
<a href="https://codeclimate.com/github/opal/opal"><img src="https://img.shields.io/codeclimate/maintainability-percentage/opal/opal.svg" alt="Code Climate" title="" /></a>
|
27
|
+
<a href="https://coveralls.io/github/opal/opal?branch=elia%2Fcoveralls"><img src="https://coveralls.io/repos/opal/opal/badge.svg?branch=master&service=github" alt="Coverage Status" title="" /></a>
|
28
|
+
</p>
|
21
29
|
|
22
30
|
## Usage
|
23
31
|
|
data/UNRELEASED.md
CHANGED
@@ -1,133 +1,3 @@
|
|
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
1
|
### Fixed
|
109
2
|
|
110
|
-
-
|
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)
|
3
|
+
- [Backported] Using the `--map` / `-P` CLI option was only working in conjunction with other options (#1974)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
def system(*args)
|
4
|
+
puts "== command: #{args.inspect}"
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def system!(*args)
|
9
|
+
system(*args) or raise "== command failed: #{args.inspect}"
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
Dir.chdir "#{__dir__}/.."
|
14
|
+
Dir.mkdir 'tmp' unless File.directory? 'tmp'
|
15
|
+
|
16
|
+
system 'git submodule --quiet deinit --all -f 2> /dev/null'
|
17
|
+
|
18
|
+
modules = {}
|
19
|
+
`git config -f #{__dir__}/../.gitmodules --list`.lines.each do |line|
|
20
|
+
fullkey, value = line.split('=', 2)
|
21
|
+
_, name, key = fullkey.split('.', 3)
|
22
|
+
modules[name] ||= {}
|
23
|
+
modules[name][key.to_sym] = value.strip
|
24
|
+
end
|
25
|
+
|
26
|
+
`git submodule`.lines.each do |line|
|
27
|
+
sha1, name = line[1..-1].scan(/^(?<sha1>\w+) (?<name>\S+)/).first
|
28
|
+
modules[name][:sha1] = sha1
|
29
|
+
end
|
30
|
+
|
31
|
+
modules.map do |name, config|
|
32
|
+
puts "== installing #{name}..."
|
33
|
+
url, sha1, path = config.values_at(:url, :sha1, :path)
|
34
|
+
dir = File.dirname(path)
|
35
|
+
url.sub!(/\.git$/, '')
|
36
|
+
|
37
|
+
Thread.new do
|
38
|
+
system! "curl -L #{url}/archive/#{sha1}.zip -o #{sha1}.zip"
|
39
|
+
|
40
|
+
system! "unzip -q #{sha1}.zip -d #{dir}"
|
41
|
+
system! "rm #{sha1}.zip"
|
42
|
+
|
43
|
+
system! "rm -rf #{path}" if File.directory? path
|
44
|
+
system! "mv #{dir}/*-#{sha1} #{path}"
|
45
|
+
print "== completed installing #{name}.\n"
|
46
|
+
end
|
47
|
+
end.each(&:join)
|
48
|
+
|
49
|
+
system! 'git submodule init'
|
data/bin/setup
CHANGED
data/bin/yarn
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
APP_ROOT = File.expand_path('..', __dir__)
|
3
|
+
Dir.chdir(APP_ROOT) do
|
4
|
+
begin
|
5
|
+
exec "yarnpkg", *ARGV
|
6
|
+
rescue Errno::ENOENT
|
7
|
+
$stderr.puts "Yarn executable was not detected in the system."
|
8
|
+
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
|
9
|
+
exit 1
|
10
|
+
end
|
11
|
+
end
|
data/docs/releasing.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Releasing
|
2
|
+
|
3
|
+
_This guide is a work-in-progress._
|
4
|
+
|
5
|
+
## Updating the version
|
6
|
+
|
7
|
+
- Update `lib/opal/version.rb`
|
8
|
+
- Update `opal/corelib/constants.rb` with the same version number along with release dates
|
9
|
+
|
10
|
+
## Updating the changelog
|
11
|
+
|
12
|
+
- Ensure all the unreleased changes are documented in UNRELEASED.md
|
13
|
+
- Run `bin/rake changelog VERSION=v1.2.3` specifying the version number you're about to release
|
14
|
+
|
15
|
+
## The commit
|
16
|
+
|
17
|
+
- Commit the updated changelog along with the version bump using this commmit message:
|
18
|
+
"Release v1.2.3"
|