ruby-next 0.9.0.pre → 0.10.1

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/README.md +29 -8
  4. metadata +11 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3b24fea20ed62650b72a5588e4c3d64ddf19401225e92bb5080b12b358b2b66
4
- data.tar.gz: d9db7ac458b8c4d05d6badf8e49203162a849d11934900cb55606e014eddd9ff
3
+ metadata.gz: 89eb69603a927bdc03e9ace7594a7e13a37ceb38dc9b6493fc0d93256aa6ef62
4
+ data.tar.gz: 4184cf7e927622a85a56dd5583654ad6230b0d3fa9f3afcee10fd47f0d125d28
5
5
  SHA512:
6
- metadata.gz: d7f197f195b85df6e9743f74a26f68dc6415fdada1deadcce5a88d42d455e756351dda9eeab157fb458d6c2c0dc1e06201ca6a0b9321bf01d6c20cec5a6531b4
7
- data.tar.gz: 6ad83886980fd29b269947c251a65b5df88a71bb4d2935f1047a004db3282b85dfd04073bebd1fccd9a2302bf6beb71828d1db561ce11eade15bfeb15e5dd118
6
+ metadata.gz: ba86d164f5490740abacca5a0d01192b9841377ea99a895f7319fd5b1121de5138868277eff6bddf5bd7bb9b1ad34080fba54f49abc4e339b0e6d47a263b9023
7
+ data.tar.gz: 909d8bd492835aaa90bef0502704fe6bdbd201dba15c22c3c394ee85d6cd8d13081ba25abf1c50248ccd52794dbb83775ad43005a7a5a31176558c436a7912cc
@@ -2,6 +2,51 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 0.10.1 (2020-09-09)
6
+
7
+ - Fix regression when `nextify` produces incorrect files for 2.7. ([@palkan][])
8
+
9
+ ## 0.10.0 (2020-09-02)
10
+
11
+ - Add proposed shorthand Hash syntax. ([@palkan][])
12
+
13
+ You can try it: `x = 1; y = 2; data = {x, y}`.
14
+
15
+ - Add leading argument support to args forwarding. ([@palkan][])
16
+
17
+ `def a(...) b(1, ...); end`.
18
+
19
+ - Add `Hash#except`. ([@palkan][])
20
+
21
+ `{a: 1, b: 2}.except(:a) == {b: 2}`
22
+
23
+ - Add find pattern support. ([@palkan][])
24
+
25
+ Now you can do: `[0, 1, 2] in [*, 1 => a, *c]`.
26
+
27
+ - Add Ruby 2.2 support. ([@palkan][])
28
+
29
+ With support for safe navigation operator (`&.`) and squiggly heredocs (`<<~TXT`).
30
+
31
+ ## 0.9.2 (2020-06-24)
32
+
33
+ - Support passing rewriters to CLI. ([@sl4vr][])
34
+
35
+ Use `nextify --list-rewriters` to view all available rewriters.
36
+ Use `nextify` with `--rewrite=REWRITERS...` option to specify which particular rewriters to use.
37
+
38
+ ## 0.9.1 (2020-06-05)
39
+
40
+ - Keep `ruby-next` version in sync with `ruby-next-core`. ([@palkan][])
41
+
42
+ Require `ruby-next-core` of the same version as `ruby-next`.
43
+
44
+ ## 0.9.0 (2020-06-04)
45
+
46
+ - Add Ruby 2.3 support. ([@palkan][])
47
+
48
+ - Remove stale transpiled files when running `ruby-next nextify`. ([@palkan][])
49
+
5
50
  - Add Ruby 2.4 support. ([@palkan][])
6
51
 
7
52
  APIs for <2.5 must be backported via [backports][] gem. Refinements are not supported.
@@ -183,3 +228,4 @@ p a #=> 1
183
228
 
184
229
  [@palkan]: https://github.com/palkan
185
230
  [backports]: https://github.com/marcandre/backports
231
+ [@sl4vr]: https://github.com/sl4vr
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
+ [![Cult Of Martians](http://cultofmartians.com/assets/badges/badge.svg)](https://cultofmartians.com/tasks/ruby-next-cli-rewriters.html#task)
1
2
  [![Gem Version](https://badge.fury.io/rb/ruby-next.svg)](https://rubygems.org/gems/ruby-next) [![Build](https://github.com/ruby-next/ruby-next/workflows/Build/badge.svg)](https://github.com/ruby-next/ruby-next/actions)
2
- [![JRuby Build](https://github.com/ruby-next/ruby-next/workflows/JRuby%20Build/badge.svg)](https://github.com/ruby-next/ruby-next/actions)
3
+ [![JRuby Build](https://github.com/ruby-next/ruby-next/workflows/JRuby%20Build/badge.svg)](https://github.com/ruby-next/ruby-next/actions?query=workflow%3A%22TruffleRuby+Build%22)
4
+ [![TruffleRuby Build](https://github.com/ruby-next/ruby-next/workflows/TruffleRuby%20Build/badge.svg)](https://github.com/ruby-next/ruby-next/actions?query=workflow%3A%22TruffleRuby+Build%22)
3
5
 
4
6
  # Ruby Next
5
7
 
@@ -35,6 +37,8 @@ Read more about the motivation behind the Ruby Next in this post: [Ruby Next: Ma
35
37
  - Ruby gems
36
38
  - [anyway_config](https://github.com/palkan/anyway_config)
37
39
  - [graphql-fragment_cache](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache)
40
+ - Rails applications
41
+ - [anycable_rails_demo](https://github.com/anycable/anycable_rails_demo)
38
42
  - mruby
39
43
  - [ACLI](https://github.com/palkan/acli)
40
44
 
@@ -66,7 +70,7 @@ Core provides **polyfills** for Ruby core classes APIs via Refinements (default
66
70
  Language is responsible for **transpiling** edge Ruby syntax into older versions. It could be done
67
71
  programmatically or via CLI. It also could be done in runtime.
68
72
 
69
- Currently, Ruby Next supports Ruby versions 2.4+ (including JRuby 9.2.8+). Support for EOL versions (<2.5) slightly differs though ([see below](#using-with-eol-rubies)).
73
+ Currently, Ruby Next supports Ruby versions 2.2+, including JRuby 9.2.8+ and TruffleRuby 20.1+ (with some limitations). Support for EOL versions (<2.5) slightly differs though ([see below](#using-with-eol-rubies)).
70
74
 
71
75
  Please, [open an issue](https://github.com/ruby-next/ruby-next/issues/new/choose) or join the discussion in the existing ones if you would like us to support older Ruby versions.
72
76
 
@@ -137,6 +141,8 @@ The following _rule of thumb_ is recommended when choosing between refinements a
137
141
  - 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 🙂)
138
142
  - Use core extensions if refinements are not supported by your platform
139
143
 
144
+ **NOTE:** _Edge_ APIs (i.e., from the Ruby's master branch) are included by default.
145
+
140
146
  [**The list of supported APIs.**][features_core]
141
147
 
142
148
  ## Transpiling
@@ -197,12 +203,15 @@ It has the following interface:
197
203
  ```sh
198
204
  $ ruby-next nextify
199
205
  Usage: ruby-next nextify DIRECTORY_OR_FILE [options]
200
- -o, --output=OUTPUT Specify output directory or file or stdout (use -o stdout for that)
206
+ -o, --output=OUTPUT Specify output directory or file or stdout
201
207
  --min-version=VERSION Specify the minimum Ruby version to support
202
208
  --single-version Only create one version of a file (for the earliest Ruby version)
203
- --enable-method-reference Enable reverted method reference syntax (requires custom parser)
209
+ --edge Enable edge (master) Ruby features
210
+ --proposed Enable proposed/experimental Ruby features
204
211
  --transpile-mode=MODE Transpiler mode (ast or rewrite). Default: ast
205
212
  --[no-]refine Do not inject `using RubyNext`
213
+ --list-rewriters List available rewriters
214
+ --rewrite=REWRITERS... Specify particular Ruby features to rewrite
206
215
  -h, --help Print help
207
216
  -V Turn on verbose mode
208
217
  --dry-run Print verbose output without generating files
@@ -390,6 +399,12 @@ RUBYOPT="-ruby-next" ruby my_ruby_script.rb
390
399
  ruby -ruby-next -e "puts [2, 4, 5].tally"
391
400
  ```
392
401
 
402
+ **NOTE:** running Ruby scripts directly or executing code via `-e` option is not supported in TruffleRuby. You can still use `-ruby-next` to transpile required files, e.g.:
403
+
404
+ ```sh
405
+ ruby -ruby-next -r my_ruby_script.rb -e "puts my_method"
406
+ ```
407
+
393
408
  ## Logging and debugging
394
409
 
395
410
  Ruby Next prints some debugging information when fails to load a file in the runtime mode (and fallbacks to the built-in loading mechanism).
@@ -414,6 +429,8 @@ You must set `TargetRubyVersion: next` to make RuboCop use a Ruby Next parser.
414
429
 
415
430
  Alternatively, you can load the patch from the command line by running: `rubocop -r ruby-next/rubocop ...`.
416
431
 
432
+ We recommend using the latest RuboCop version, 'cause it has support for new nodes built-in.
433
+
417
434
  Also, when pre-transpiling source code with `ruby-next nextify`, we suggest ignoring the transpiled files:
418
435
 
419
436
  ```yml
@@ -426,9 +443,7 @@ AllCops:
426
443
 
427
444
  ## Using with EOL Rubies
428
445
 
429
- **NOTE:** Use Ruby Next `0.9.0.pre` to use this feature.
430
-
431
- We currently provide experimental support for Ruby 2.4. Work on older Rubies (down to 2.2) is in progress.
446
+ We currently provide support for Ruby 2.2, 2.3 and 2.4.
432
447
 
433
448
  Ruby Next itself relies on 2.5 features and contains polyfills only for version 2.5+ (and that won't change).
434
449
  Thus, to make it work with <2.5 we need to backport some APIs ourselves.
@@ -458,6 +473,8 @@ RUBY_NEXT_CORE_STRATEGY=backports ruby-next nextify lib/
458
473
 
459
474
  **NOTE:** Make sure you have `backports` gem installed globally or added to your bundle (if you're using `bundle exec ruby-next ...`).
460
475
 
476
+ **NOTE:** For Ruby 2.2, safe navigation operator (`&.`) and squiggly heredocs (`<<~TXT`) support is provided.
477
+
461
478
  ## Proposed and edge features
462
479
 
463
480
  Ruby Next aims to bring edge and proposed features to Ruby community before they (hopefully) reach an official Ruby release.
@@ -491,12 +508,16 @@ require "ruby-next/language/runtime"
491
508
 
492
509
  - "Endless" method definition (`def foo() = 42`) ([#16746](https://bugs.ruby-lang.org/issues/16746)).
493
510
 
494
- - Right-hand assignment (`13.divmod(5) => a,b`) ([#15921](https://bugs.ruby-lang.org/issues/15921))
511
+ - Right-hand assignment (`13.divmod(5) => a,b`) ([#15921](https://bugs.ruby-lang.org/issues/15921)).
512
+
513
+ - Find pattern (`[0, 1, 2] in [*, 1 => a, *c]`) ([#16828](https://bugs.ruby-lang.org/issues/16828)).
495
514
 
496
515
  ### Supported proposed features
497
516
 
498
517
  - _Method reference_ operator (`.:`) ([#13581](https://bugs.ruby-lang.org/issues/13581)).
499
518
 
519
+ - Shorthand Hash notation (`data = {x, y}`) ([#15236](https://bugs.ruby-lang.org/issues/15236)).
520
+
500
521
  ## Contributing
501
522
 
502
523
  Bug reports and pull requests are welcome on GitHub at [https://github.com/ruby-next/ruby-next](ttps://github.com/ruby-next/ruby-next).
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.9.0.pre
4
+ version: 0.10.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: 2020-05-19 00:00:00.000000000 Z
11
+ date: 2020-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-next-core
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.0.pre
19
+ version: 0.10.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.9.0.pre
26
+ version: 0.10.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: 2.8.0.4
33
+ version: 3.0.0.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: 2.8.0.4
40
+ version: 3.0.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: unparser
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.7
47
+ version: 0.4.8
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.4.7
54
+ version: 0.4.8
55
55
  description: "\n Ruby Next is a collection of polyfills and a transpiler for supporting
56
56
  latest and upcoming edge CRuby features\n in older versions and alternative implementations
57
57
  (such as mruby, JRuby, Opal, Artichoke, RubyMotion, etc.).\n "
@@ -81,12 +81,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
- version: 2.4.0
84
+ version: 2.2.0
85
85
  required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.3.1
89
+ version: '0'
90
90
  requirements: []
91
91
  rubygems_version: 3.0.6
92
92
  signing_key: