Change log

master

0.12.0 (2021-01-12)

Required kwargs were introduced in 2.1. Now we make them possible in 2.0.

Now it's possible to generate Ruby 2.0 compatible code from 2i + 1/3r.

See #68 and #69.

0.11.1 (2020-12-28)

Previously, we used the upcoming Ruby version number for proposed features (e.g., 3.0.0), which broke the load path setup, since transpiled files were not loaded anymore. Now that's fixed by using a virtual version number for proposals (1995.next.0).

0.11.0 (2020-12-24) 🎄

You can try it: x = 1; y = 2; foo(x:, y:) # => foo(x: x, y: y).

0.10.5 (2020-10-13)

0.10.4 (2020-10-09)

Unparser 0.5.0 is currently not supported.

0.10.3 (2020-09-28)

Parser 2.7.1.5 unified endless and normal methods and rightward and leftward assignments, thus, making some cops report false negatives.

0.10.2 (2020-09-09)

~0.10.1~

0.10.0 (2020-09-02)

You can try it: x = 1; y = 2; data = {x, y}.

def a(...) b(1, ...); end.

{a: 1, b: 2}.except(:a) == {b: 2}

Now you can do: [0, 1, 2] in [*, 1 => a, *c].

With support for safe navigation operator (&.) and squiggly heredocs (<<~TXT).

0.9.2 (2020-06-24)

Use nextify --list-rewriters to view all available rewriters. Use nextify with --rewrite=REWRITERS... option to specify which particular rewriters to use.

0.9.1 (2020-06-05)

Require ruby-next-core of the same version as ruby-next.

0.9.0 (2020-06-04)

APIs for <2.5 must be backported via backports gem. Refinements are not supported.

0.8.0 (2020-05-01) 🚩

It is real: 13.divmod(5) => a, b.

Now you can write def foo() = :bar.

0.7.0 (2020-04-29)

This would make it possible to install gems from source if transpiled files do not exist in the repository.

You can define CLI options in the configuration file to re-use them between environments or simply avoid typing every time:

# .rbnextrc
nextify: |
  --transpiler-mode=rewrite
  --edge

Previously, we let Parser to raise its Parser::SyntaxError but some exceptions are not reported by Parser and should be handled by transpiler (and we raised SyntaxError in that case, as MRI does).

This change unifies the exceptions raised during transpiling.

0.6.0 (2020-04-23)

Use --edge or --proposed flags for ruby-next nextify or require "ruby-next/language/{edge,proposed}" in your code.

See more in the Readme.

Make sure you use TargetRubyVersion: next in your RuboCop configuration.

It's no longer needed to use Parser gem from Ruby Next package registry.

0.5.3 (2020-03-25)

Use RUBY_NEXT_WARN=false to disable warnings. Use RUBY_NEXT_DEBUG=path.rb to display the transpiler output only for matching files in the runtime mode.

0.5.1 (2020-03-20)

Adds support for missing node types and fixes some bugs with 2.7.

0.5.0 (2020-03-20)

Add support for rewriting the source code instead of rebuilding it from scratch to preserve the original layout and improve the debugging experience.

0.4.0 (2020-03-09)

For array patterns, transpiled code is ~1.5-2x faster than native. For hash patterns it's about the same.

0.3.0 (2020-02-14) 💕

Add a method refinement to using RubyNext even if the backport is present. That helps to avoid the conflicts with invalid monkey-patches.

This command allows generating custom core extension files. Meant to be used in alternative Ruby implementations (mruby, Opal, etc.) not compatible with the ruby-next-core gem.

Now you can use core extensions (monkey-patches) instead of the refinements.

0.2.0 (2020-01-13) 🎄

Add require "ruby-next/language/bootsnap" after setting up Bootsnap to transpile the files on load (and cache the resulted iseq via Bootsnap as usually).

Eval support should be enabled explicitly via the RubyNext::Language::Eval refinement, 'cause we cannot handle all the edge cases easily (e.g., the usage caller's binding locals).

You can still use this feature by enabling it explicitly (see Readme).

{a: 1, b: 2} in {a:, **}
p a #=> 1

0.1.0 (2019-11-18)

0.1.0 (2019-11-16)