ruby-next 0.15.2 β 1.0.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -0
- data/README.md +118 -48
- metadata +42 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c57118128a653398bfda6dc32f72ea0b245f8d8d4ec057c8cf2b95d19ede0919
|
4
|
+
data.tar.gz: e09ae153a28a17082e7327feeab8a54dc3bc6c210f293c4290ce4980649b0e48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2761123b4887ba9d4a5b3cd757f0e920ac81b36819e1d01d9087769cec2a485003fcaa7e405b48b6246611691e2e905c7ad5e96db723c2230f6c36e11322a6bc
|
7
|
+
data.tar.gz: 2db78b6ebf7044aa800e12eadfc328316fd67de2b4c0735cf11e3f1564c99781ebe4210281dc04496fbbd5b7e2177a7b0f4649045cace35ff4ff4d361350521a
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,36 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
- Add `it` block parameter support. ([@palkan][])
|
6
|
+
|
7
|
+
- Deprecate AST transpiling mode. ([@palkan][])
|
8
|
+
|
9
|
+
- Add `Data` backport. ([@palkan][], [@saturnflyer][])
|
10
|
+
|
11
|
+
- Add `Time#deconstruct_keys` support. ([@palkan][])
|
12
|
+
|
13
|
+
- Add anonymous rest and keyword rest arguments forwarding support (`def foo(*, **); bar(*, **) end`). ([@palkan][])
|
14
|
+
|
15
|
+
- Add `MatchData#{deconstruct,deconstruct_keys}` and `#named_captures(symbolize_names: true)` support. ([@palkan][])
|
16
|
+
|
17
|
+
- Add stats to `nextify`. ([@palkan][])
|
18
|
+
|
19
|
+
- Add text rewriters and `--import-rewriter` option to `nextify`. ([@palkan][])
|
20
|
+
|
21
|
+
- Use `.rbnextrc` arguments for runtime transpiling and auto-transpiling gems. ([@palkan][])
|
22
|
+
|
23
|
+
- Stop testing Ruby <2.3. ([@palkan][])
|
24
|
+
|
25
|
+
- Extract `require-hooks`. ([@palkan][])
|
26
|
+
|
27
|
+
- Support passing --overwrite to CLI. ([@prog-supdex][])
|
28
|
+
|
29
|
+
Use `nextify original_file --single-version --overwrite` to overwrite the original file without create new one.
|
30
|
+
|
31
|
+
## 0.15.3 (2022-10-16)
|
32
|
+
|
33
|
+
- Fix handling nested const patterns. ([@palkan][])
|
34
|
+
|
5
35
|
## 0.15.2 (2022-08-02)
|
6
36
|
|
7
37
|
- Fix loading transpiled in TruffleRuby. ([@palkan][])
|
@@ -360,3 +390,5 @@ p a #=> 1
|
|
360
390
|
[backports]: https://github.com/marcandre/backports
|
361
391
|
[@sl4vr]: https://github.com/sl4vr
|
362
392
|
[@skryukov]: https://github.com/skryukov
|
393
|
+
[@prog-supdex]: https://github.com/prog-supdex
|
394
|
+
[@saturnflyer]: https://github.com/saturnflyer
|
data/README.md
CHANGED
@@ -14,11 +14,14 @@ Who might be interested in Ruby Next?
|
|
14
14
|
|
15
15
|
- **Ruby gems maintainers** who want to write code using the latest Ruby version but still support older ones.
|
16
16
|
- **Application developers** who want to give new features a try without waiting for the final release (or, more often, for the first patch).
|
17
|
-
- **Users of non-MRI implementations** such as [mruby][], [JRuby][], [TruffleRuby][], [Opal][], [RubyMotion][], [Artichoke][], [Prism][].
|
17
|
+
- **Users of non-MRI implementations** such as [mruby][], [JRuby][], [TruffleRuby][], [Natalie][], [Opal][], [RubyMotion][], [Artichoke][], [Prism][].
|
18
|
+
- **Ruby syntax enthusiasts** who want to experiment with [custom syntax extensions](#custom-syntax-rewriters) π©βπ¬π¨βπ¬.
|
18
19
|
|
19
20
|
Ruby Next also aims to help the community to assess new, _experimental_, MRI features by making it easier to play with them.
|
20
21
|
That's why Ruby Next implements the `master` features as fast as possible.
|
21
22
|
|
23
|
+
See also a companion library (extracted from Ruby Next) that provides **code loading hooks** for your needsβ[require-hooks][require-hooks].
|
24
|
+
|
22
25
|
Read more about the motivation behind the Ruby Next in this post: [Ruby Next: Make all Rubies quack alike](https://evilmartians.com/chronicles/ruby-next-make-all-rubies-quack-alike).
|
23
26
|
|
24
27
|
<table style="border:none;">
|
@@ -60,14 +63,13 @@ _Please, submit a PR to add your project to the list!_
|
|
60
63
|
## Table of contents
|
61
64
|
|
62
65
|
- [Overview](#overview)
|
63
|
-
- [Quick
|
66
|
+
- [Quick start](#quick-start)
|
64
67
|
- [Polyfills](#using-only-polyfills)
|
65
68
|
- [Transpiling](#transpiling)
|
66
69
|
- [Modes](#transpiler-modes)
|
67
70
|
- [CLI](#cli)
|
68
71
|
- [Using in gems](#integrating-into-a-gem-development)
|
69
72
|
- [Runtime usage](#runtime-usage)
|
70
|
-
- [Bootsnap integration](#using-with-bootsnap)
|
71
73
|
- [`ruby -ruby-next`](#uby-next)
|
72
74
|
- [Logging & Debugging](#logging-and-debugging)
|
73
75
|
- [RuboCop](#rubocop)
|
@@ -75,6 +77,7 @@ _Please, submit a PR to add your project to the list!_
|
|
75
77
|
- [Using with Pry](#pry)
|
76
78
|
- [Using with EOL Rubies](#using-with-eol-rubies)
|
77
79
|
- [Proposed & edge features](#proposed-and-edge-features)
|
80
|
+
- [Custom syntax rewriters](#custom-syntax-rewriters)
|
78
81
|
- [Known limitations](#known-limitations)
|
79
82
|
|
80
83
|
## Overview
|
@@ -86,9 +89,9 @@ Core provides **polyfills** for Ruby core classes APIs via Refinements (default
|
|
86
89
|
Language is responsible for **transpiling** edge Ruby syntax into older versions. It could be done
|
87
90
|
programmatically or via CLI. It also could be done in runtime.
|
88
91
|
|
89
|
-
Currently, Ruby Next supports Ruby versions 2.
|
92
|
+
Currently, Ruby Next supports Ruby versions 2.3+, including JRuby 9.2.8+ and TruffleRuby 20.1+ (with some limitations). Support for older versions (<2.5) slightly differs though ([see below](#using-with-eol-rubies)). Versions between 2.0 and 2.3 may work but we no longer test against them.
|
90
93
|
|
91
|
-
Please
|
94
|
+
Please [open an issue](https://github.com/ruby-next/ruby-next/issues/new/choose) or join the discussion in the existing issues if you would like us to support older Ruby versions.
|
92
95
|
|
93
96
|
## Quick start
|
94
97
|
|
@@ -100,15 +103,16 @@ $ gem install ruby-next
|
|
100
103
|
|
101
104
|
# Call ruby with -ruby-next flag
|
102
105
|
$ ruby -ruby-next -e "
|
103
|
-
|
104
|
-
case
|
106
|
+
greet = proc do
|
107
|
+
case it
|
105
108
|
in hello: hello if hello =~ /human/i
|
106
109
|
'π'
|
107
110
|
in hello: 'martian'
|
108
111
|
'π½'
|
109
112
|
end
|
113
|
+
end
|
110
114
|
|
111
|
-
puts greet(hello: 'martian')
|
115
|
+
puts greet.call(hello: 'martian')
|
112
116
|
"
|
113
117
|
|
114
118
|
=> π½
|
@@ -126,9 +130,9 @@ gem "ruby-next-core"
|
|
126
130
|
spec.add_dependency "ruby-next-core"
|
127
131
|
```
|
128
132
|
|
129
|
-
**NOTE:** we use
|
133
|
+
**NOTE:** we use a different gem for _distribution_, `ruby-next-core`, to provide a zero-dependency, polyfills-only version.
|
130
134
|
|
131
|
-
Then, all you need is to load
|
135
|
+
Then, all you need is to load Ruby Next:
|
132
136
|
|
133
137
|
```ruby
|
134
138
|
require "ruby-next"
|
@@ -140,9 +144,9 @@ And activate the refinement in every file where you want to use it\*:
|
|
140
144
|
using RubyNext
|
141
145
|
```
|
142
146
|
|
143
|
-
Ruby Next only refines core classes if necessary; thus, this line wouldn't have any effect in
|
147
|
+
Ruby Next only refines core classes if necessary; thus, this line wouldn't have any effect in edge Ruby.
|
144
148
|
|
145
|
-
**NOTE:** Even if the runtime already contains a monkey-patch with the backported functionality, we consider the method as _dirty_ and activate the refinement for it. Thus, you always have predictable behaviour. That's why we recommend using refinements for
|
149
|
+
**NOTE:** Even if the runtime already contains a monkey-patch with the backported functionality, we consider the method as _dirty_ and activate the refinement for it. Thus, you always have predictable behaviour. That's why we recommend using refinements for gem development.
|
146
150
|
|
147
151
|
Alternatively, you can go with monkey-patches. Just add this line:
|
148
152
|
|
@@ -152,7 +156,7 @@ require "ruby-next/core_ext"
|
|
152
156
|
|
153
157
|
The following _rule of thumb_ is recommended when choosing between refinements and monkey-patches:
|
154
158
|
|
155
|
-
- Use refinements for
|
159
|
+
- Use refinements for library development (to avoid conflicts with others' code)
|
156
160
|
- Using core extensions could be considered for application development (no need to think about `using RubyNext`); this approach could potentially lead to conflicts with dependencies (if these dependencies are not using refinements π)
|
157
161
|
- Use core extensions if refinements are not supported by your platform
|
158
162
|
|
@@ -160,6 +164,12 @@ The following _rule of thumb_ is recommended when choosing between refinements a
|
|
160
164
|
|
161
165
|
[**The list of supported APIs.**][features_core]
|
162
166
|
|
167
|
+
### Data backport
|
168
|
+
|
169
|
+
Ruby 3.2 has introduced a new core classβ[Data](https://bugs.ruby-lang.org/issues/16122). Ruby Next provides a backport functionality which is automatically activated when you `require "ruby-next"` **if and only if the constant is undefined**. If you want to use a custom backport, make sure you loaded it first.
|
170
|
+
|
171
|
+
If you want to opt-out from loading Data backport, you must set the `RUBY_NEXT_DISABLE_DATA` env variable to `true`.
|
172
|
+
|
163
173
|
## Transpiling
|
164
174
|
|
165
175
|
Ruby Next allows you to transpile\* edge Ruby syntax to older versions.
|
@@ -187,21 +197,11 @@ gem install ruby-next
|
|
187
197
|
|
188
198
|
### Transpiler modes
|
189
199
|
|
190
|
-
Ruby Next
|
191
|
-
|
192
|
-
In the AST mode, we parse the source code into AST, modifies this AST and **generate a new code from AST** (using [unparser][unparser]). Thus, the transpiled code being identical in terms of functionality has different formatting.
|
193
|
-
|
194
|
-
In the rewrite mode, we apply changes to the source code itself, thus, keeping the original formatting of the unaffected code (in a similar way to RuboCop's autocorrect feature).
|
200
|
+
Since v1.0, Ruby Next only support the _rewrite_ mode, i.e., the code transformations are applied directly to the original source code. This allows us to keep formatting as close as possible to the original code.
|
195
201
|
|
196
202
|
The main benefit of the rewrite mode is that it preserves the original code line numbers and layout, which is especially useful in debugging.
|
197
203
|
|
198
|
-
|
199
|
-
|
200
|
-
You can change the transpiler mode:
|
201
|
-
|
202
|
-
- From code by setting `RubyNext::Language.mode = :ast` or `RubyNext::Language.mode = :rewrite`.
|
203
|
-
- Via environmental variable `RUBY_NEXT_TRANSPILE_MODE=ast`.
|
204
|
-
- Via CLI option ([see below](#cli)).
|
204
|
+
The legacy AST mode (regenerating source code from the modified abstract syntax tree) is deprecated (though still supported).
|
205
205
|
|
206
206
|
## CLI
|
207
207
|
|
@@ -219,12 +219,14 @@ Usage: ruby-next nextify DIRECTORY_OR_FILE [options]
|
|
219
219
|
-o, --output=OUTPUT Specify output directory or file or stdout
|
220
220
|
--min-version=VERSION Specify the minimum Ruby version to support
|
221
221
|
--single-version Only create one version of a file (for the earliest Ruby version)
|
222
|
+
--overwrite Overwrites the original file with one version of --single-version (works only with --single-version or --rewrite)
|
222
223
|
--edge Enable edge (master) Ruby features
|
223
224
|
--proposed Enable proposed/experimental Ruby features
|
224
225
|
--transpile-mode=MODE Transpiler mode (ast or rewrite). Default: ast
|
225
226
|
--[no-]refine Do not inject `using RubyNext`
|
226
227
|
--list-rewriters List available rewriters
|
227
228
|
--rewrite=REWRITERS... Specify particular Ruby features to rewrite
|
229
|
+
--import-rewriter=PATHS... Specify the paths to custom rewriters to load
|
228
230
|
-h, --help Print help
|
229
231
|
-V Turn on verbose mode
|
230
232
|
--dry-run Print verbose output without generating files
|
@@ -302,6 +304,8 @@ nextify: |
|
|
302
304
|
--edge
|
303
305
|
```
|
304
306
|
|
307
|
+
**NOTE:** The `nextify` section is also used by auto-transpiling when installing the gem from source and by runtime transpiling.
|
308
|
+
|
305
309
|
## Integrating into a gem development
|
306
310
|
|
307
311
|
We recommend _pre-transpiling_ source code to work with older versions before releasing it.
|
@@ -361,19 +365,21 @@ This feature, _auto-transpiling_, is **disabled** by default (will likely be ena
|
|
361
365
|
|
362
366
|
It is also possible to transpile Ruby source code in run-time via Ruby Next.
|
363
367
|
|
364
|
-
All you need is to `require "ruby-next/language/runtime"`
|
365
|
-
You can also automatically inject `using RubyNext` to every\* loaded file by also adding `require "ruby-next/core/runtime"`.
|
368
|
+
All you need is to `require "ruby-next/language/runtime"` to hijack `Kernel#require` and friends before loading the files you want to transpile. You can also automatically inject `using RubyNext` to every\* loaded file by also adding `require "ruby-next/core/runtime"`.
|
366
369
|
|
367
|
-
|
370
|
+
Runtime mode is backed by [require-hooks][require-hooks]βa standalone gem which has been extracted from Ruby Next. Depending on the current runtime, it picks an optimal strategy for hijacking the loading mechanism. Please, refer to its documentation for more details.
|
368
371
|
|
369
|
-
|
372
|
+
\* Ruby Next doesn't hijack every required file but only the configured directories: `./app/`, `./lib/`, `./spec/`, `./test/` (relative to the `pwd`). It also excludes the `./vendor/bundle` directory by default.
|
370
373
|
|
371
|
-
|
374
|
+
You can customize target files via the `include_patterns` and `exclude_patterns` configuration options:
|
372
375
|
|
373
376
|
```ruby
|
374
|
-
RubyNext::Language.
|
377
|
+
RubyNext::Language.include_patterns << "path/to/other/dir/*.rb"
|
378
|
+
RubyNext::Language.exclude_patterns << "path/to/other/dir/subdir/*"
|
375
379
|
```
|
376
380
|
|
381
|
+
**NOTE:** Directories MUST be configured before requiring `ruby-next/language/runtime`.
|
382
|
+
|
377
383
|
### Eval & similar
|
378
384
|
|
379
385
|
By default, we do not hijack `Kernel.eval` and similar methods due to some limitations (e.g., there is no easy and efficient way to access the caller's scope, or _binding_, and some evaluations relies on local variables).
|
@@ -384,20 +390,6 @@ If you want to support transpiling in `eval`-like methods, opt-in explicitly by
|
|
384
390
|
using RubyNext::Language::Eval
|
385
391
|
```
|
386
392
|
|
387
|
-
## Using with Bootsnap
|
388
|
-
|
389
|
-
[Bootsnap][] is a great tool to speed-up your application load and it's included into the default Rails Gemfile. It patches Ruby mechanism of loading source files to make it possible to cache the intermediate representation (_iseq_).
|
390
|
-
|
391
|
-
Ruby Next provides a specific integration which allows to add a transpiling step to this process, thus making the transpiler overhead as small as possible, because the cached and **already transpiled** version is used if no changes were made.
|
392
|
-
|
393
|
-
To enable this integration, add the following line after the `require "bootsnap/setup"`:
|
394
|
-
|
395
|
-
```ruby
|
396
|
-
require "ruby-next/language/bootsnap"
|
397
|
-
```
|
398
|
-
|
399
|
-
**NOTE:** There is no way to invalidate the cache when you upgrade Ruby Next (e.g., due to the bug fixes), so you should do this manually.
|
400
|
-
|
401
393
|
## `uby-next`
|
402
394
|
|
403
395
|
_This is [not a typo](https://github.com/ruby-next/ruby-next/pull/8), thatβs the way `ruby -ruby-next` works: itβs equal to `ruby -r uby-next`, and [`uby-next.rb`](https://github.com/ruby-next/ruby-next/blob/master/lib/uby-next.rb) is a special file that activates the runtime mode._
|
@@ -490,7 +482,7 @@ pry -ruby-next/pry
|
|
490
482
|
|
491
483
|
## Using with EOL Rubies
|
492
484
|
|
493
|
-
We currently provide support for Ruby 2.
|
485
|
+
We currently provide support for Ruby 2.3+.
|
494
486
|
|
495
487
|
**NOTE:** By "support" here we mean using `ruby-next` CLI and runtime transpiling. Transpiled code may run on Ruby 2.0+.
|
496
488
|
|
@@ -557,13 +549,85 @@ require "ruby-next/language/runtime"
|
|
557
549
|
|
558
550
|
### Supported edge features
|
559
551
|
|
560
|
-
|
552
|
+
- Implicit `it` block parameter ([#19890](https://bugs.ruby-lang.org/issues/18980)).
|
561
553
|
|
562
554
|
### Supported proposed features
|
563
555
|
|
564
556
|
- _Method reference_ operator (`.:`) ([#13581](https://bugs.ruby-lang.org/issues/13581)).
|
565
557
|
- Binding non-local variables in pattern matching (`42 => @v`) ([#18408](https://bugs.ruby-lang.org/issues/18408)).
|
566
558
|
|
559
|
+
## Custom syntax rewriters
|
560
|
+
|
561
|
+
Wonder what would happen if Ruby get a null coalescing operator (`??=`) or some other syntactic feature you want to try out? Ruby Next is here to help you!
|
562
|
+
|
563
|
+
Ruby Next allows you to write your own syntax rewriters. Full-featured rewriters (used by Ruby Next itself) operate on AST and usually require parser modifications. However, we also support text-based rewriters which can be used to experiment with new syntax much quicker without dealing with grammars, parsers and syntax trees.
|
564
|
+
|
565
|
+
To implement a text-based rewriter, you need to create a new class inherited from `RubyNext::Language::Rewriters::Text` and implementing either `#rewrite` or `#safe_rewrite` method. For example, the method reference operator (`.:`) could be implemented as follows:
|
566
|
+
|
567
|
+
```ruby
|
568
|
+
class MethodReferenceRewriter < RubyNext::Language::Rewriters::Text
|
569
|
+
# Rewriter configuration includes its name, a syntax probe and a minimum supported Ruby version.
|
570
|
+
# The latter two are used to determine whether the rewriter should be activated for the current file in runtime or when running `ruby-next nextify`.
|
571
|
+
NAME = "method-reference"
|
572
|
+
SYNTAX_PROBE = "Language.:transform"
|
573
|
+
MIN_SUPPORTED_VERSION = Gem::Version.new(RubyNext::NEXT_VERSION)
|
574
|
+
|
575
|
+
def safe_rewrite(source)
|
576
|
+
source.gsub(/\.:([\w_]+)/) do |match|
|
577
|
+
context.track! self
|
578
|
+
|
579
|
+
".method(:#{$1})"
|
580
|
+
end
|
581
|
+
end
|
582
|
+
end
|
583
|
+
|
584
|
+
# Add the rewriter to the list of rewriters
|
585
|
+
RubyNext::Language.rewriters << MethodReferenceRewriter
|
586
|
+
```
|
587
|
+
|
588
|
+
The `context` object is responsible for tracking if the rewriter was used for the current file. You must call the `context.track!` method to mark the file as _dirty_ (i.e., it should be transpiled). The input parameter (`source`) is the Ruby source code of the file being transpiled and the output must be the transpiled source code.
|
589
|
+
|
590
|
+
The `#safe_rewrite` method operates on the normalized source code (i.e., without comments and string literals). It's useful when you want to avoid transpiling inside strings or comments. If you want to transpile the original contents, you can use the `#rewrite` method instead.
|
591
|
+
|
592
|
+
Under the hood, `#safe_rewrite` uses [Paco][] to parse the source and separate string literals from the rest of the code. You can also leverage [Paco][] in your text rewriters, if you want more control on the parsing process. For better experience, we provide a DSL to define a custom parser and the `#parse` method to use it. Here is an example of implementing the `.:` operator using a Paco parser:
|
593
|
+
|
594
|
+
```ruby
|
595
|
+
class MethodReferenceRewriter < RubyNext::Language::Rewriters::Text
|
596
|
+
NAME = "method-reference"
|
597
|
+
SYNTAX_PROBE = "Language.:transform"
|
598
|
+
|
599
|
+
parser do
|
600
|
+
def default
|
601
|
+
many(
|
602
|
+
alt(
|
603
|
+
method_ref,
|
604
|
+
any_char
|
605
|
+
)
|
606
|
+
)
|
607
|
+
end
|
608
|
+
|
609
|
+
def method_ref
|
610
|
+
seq(
|
611
|
+
string(".:").result(""),
|
612
|
+
method_name
|
613
|
+
# IMPORTANT: Use `#track!` method to mark the file as dirty
|
614
|
+
).fmap { track! }.fmap { ".method(:#{_1})" }
|
615
|
+
end
|
616
|
+
|
617
|
+
def method_name = regexp(/[\w_]+/)
|
618
|
+
end
|
619
|
+
|
620
|
+
def safe_rewrite(source)
|
621
|
+
parse(source).join
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
# Add the rewriter to the list of rewriters
|
626
|
+
RubyNext::Language.rewriters << MethodReferenceRewriter
|
627
|
+
```
|
628
|
+
|
629
|
+
When using the `ruby-next nextify` command, you can load custom rewriters via the `--import-rewriter` option.
|
630
|
+
|
567
631
|
## Known limitations
|
568
632
|
|
569
633
|
Ruby Next aims to be _reasonably compatible_ with MRI. That means, some edge cases could be uncovered. Below is the list of known limitations.
|
@@ -596,6 +660,10 @@ Bug reports and pull requests are welcome on GitHub at [https://github.com/ruby-
|
|
596
660
|
|
597
661
|
See also the [development guide](./DEVELOPMENT.md).
|
598
662
|
|
663
|
+
## Acknowledgments
|
664
|
+
|
665
|
+
- Thanks to [Jim Gay](https://github.com/saturnflyer) for the original Data polyfill implementation ([polyfill-data](https://github.com/saturnflyer/polyfill-data))
|
666
|
+
|
599
667
|
## License
|
600
668
|
|
601
669
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -613,6 +681,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
613
681
|
[parser]: https://github.com/whitequark/parser
|
614
682
|
[unparser]: https://github.com/mbj/unparser
|
615
683
|
[next_parser]: https://github.com/ruby-next/parser
|
616
|
-
[Bootsnap]: https://github.com/Shopify/bootsnap
|
617
684
|
[rubocop]: https://github.com/rubocop-hq/rubocop
|
618
685
|
[backports]: https://github.com/marcandre/backports
|
686
|
+
[require-hooks]: https://github.com/ruby-next/require-hooks
|
687
|
+
[Natalie]: https://natalie-lang.org
|
688
|
+
[Paco]: https://github.com/ruby-next/paco
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-next
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Dementyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-next-core
|
@@ -16,28 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 1.0.0.rc.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 1.0.0.rc.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: ruby-next-parser
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
33
|
+
version: 3.2.2.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.
|
40
|
+
version: 3.2.2.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: require-hooks
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.2'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.2'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: unparser
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: 0.6.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: paco
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.2'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.2'
|
55
83
|
description: "\n Ruby Next is a collection of polyfills and a transpiler for supporting
|
56
84
|
latest and upcoming edge CRuby features\n in older versions and alternative implementations
|
57
85
|
(such as mruby, JRuby, Opal, Artichoke, RubyMotion, etc.).\n "
|
@@ -64,15 +92,15 @@ files:
|
|
64
92
|
- CHANGELOG.md
|
65
93
|
- LICENSE.txt
|
66
94
|
- README.md
|
67
|
-
homepage:
|
95
|
+
homepage: https://github.com/ruby-next/ruby-next
|
68
96
|
licenses:
|
69
97
|
- MIT
|
70
98
|
metadata:
|
71
|
-
bug_tracker_uri:
|
99
|
+
bug_tracker_uri: https://github.com/ruby-next/ruby-next/issues
|
72
100
|
changelog_uri: https://github.com/ruby-next/ruby-next/blob/master/CHANGELOG.md
|
73
|
-
documentation_uri:
|
74
|
-
homepage_uri:
|
75
|
-
source_code_uri:
|
101
|
+
documentation_uri: https://github.com/ruby-next/ruby-next/blob/master/README.md
|
102
|
+
homepage_uri: https://github.com/ruby-next/ruby-next
|
103
|
+
source_code_uri: https://github.com/ruby-next/ruby-next
|
76
104
|
post_install_message:
|
77
105
|
rdoc_options: []
|
78
106
|
require_paths:
|
@@ -84,11 +112,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
112
|
version: 2.2.0
|
85
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
|
-
- - "
|
115
|
+
- - ">"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
117
|
+
version: 1.3.1
|
90
118
|
requirements: []
|
91
|
-
rubygems_version: 3.
|
119
|
+
rubygems_version: 3.4.20
|
92
120
|
signing_key:
|
93
121
|
specification_version: 4
|
94
122
|
summary: Make older Rubies quack like edge Ruby
|