From dcc162426ed108ab3377156c440e5ee224532ba6 Mon Sep 17 00:00:00 2001 From: "NARUSE, Yui" Date: Tue, 22 Oct 2019 22:21:05 +0900 Subject: [PATCH] Ruby 2.7.0-preview2 Released --- _data/downloads.yml | 2 +- _data/releases.yml | 14 + ...2019-10-22-ruby-2-7-0-preview2-released.md | 244 ++++++++++++++++++ ...2019-10-22-ruby-2-7-0-preview2-released.md | 215 +++++++++++++++ 4 files changed, 474 insertions(+), 1 deletion(-) create mode 100644 en/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md create mode 100644 ja/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md diff --git a/_data/downloads.yml b/_data/downloads.yml index 82f60c2592..40f961b5bc 100644 --- a/_data/downloads.yml +++ b/_data/downloads.yml @@ -4,7 +4,7 @@ # optional preview: - - 2.7.0-preview1 + - 2.7.0-preview2 stable: diff --git a/_data/releases.yml b/_data/releases.yml index abb3db830c..03c02a0675 100644 --- a/_data/releases.yml +++ b/_data/releases.yml @@ -21,6 +21,20 @@ # 2.7 series +- version: 2.7.0-preview2 + date: 2019-10-22 + post: /en/news/2019/10/22/ruby-2-7-0-preview2-released/ + url: + gz: https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview2.tar.gz + zip: https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview2.zip + bz2: https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview2.tar.bz2 + xz: https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview2.tar.xz + sha256: + gz: bda4b8dc340fad425c8099400fe3ef8e7393837d7e6e1bfae41843d1d938ebc4 + zip: 81a240bead4438b064cb4cde562b483b82ec8e414bac057a6df43df5a247545c + bz2: 417c84346ba84d664a13833c94c6d9f888c89bb9bee9adf469580441eaede30b + xz: fa39f088331f6d505154aa9d025aab177fdffedfbbabccd900b8c02e745bc077 + - version: 2.7.0-preview1 date: 2019-05-30 post: /en/news/2019/05/30/ruby-2-7-0-preview1-released/ diff --git a/en/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md b/en/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md new file mode 100644 index 0000000000..d8b8d98acc --- /dev/null +++ b/en/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md @@ -0,0 +1,244 @@ +--- +layout: news_post +title: "Ruby 2.7.0-preview2 Released" +author: "naruse" +translator: +date: 2019-10-22 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.7.0-preview2. + +A preview version is released to gather feedback for the final release planned to release on December. It introduces a number of new features and performance improvements, most notably: + +* Compaction GC +* Pattern Matching +* REPL improvement +* Separation of positional and keyword arguments + +## Compaction GC + +This release introduces Compaction GC which can defragment a fragmented memory space. + +Some multi-threaded Ruby programs may cause memory fragmentation, leading to high memory usage and degraded speed. + +The `GC.compact` method is introduced for compacting the heap. This function compacts live objects in the heap so that fewer pages may be used, and the heap may be more CoW friendly. [#15626](https://bugs.ruby-lang.org/issues/15626) + +## Pattern Matching [Experimental] + +Pattern matching, widely used feature in functional programming languages, is introduced as an experimental feature. [#14912](https://bugs.ruby-lang.org/issues/14912) +It can traverse a given object and assign its value if it matches a pattern. + +```ruby +case JSON.parse('{...}', symbolize_names: true) +in {name: "Alice", children: [{name: "Bob", age: age}]} + p age + ... +end +``` + +For more details, please see [Pattern matching - New feature in Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7). + +## REPL improvement + +`irb`, bundled interactive environment (REPL; Read-Eval-Print-Loop), now supports multi-line editing. It's powered by `reline`, `readline`-compatible pure Ruby implementation. +It also provides rdoc integration. In `irb` you can display the reference for a given class, module, or method. [#14683](https://bugs.ruby-lang.org/issues/14683), [#14787](https://bugs.ruby-lang.org/issues/14787), [#14918](https://bugs.ruby-lang.org/issues/14918) +Besides, source lines shown at `binding.irb` and inspect results for core-class objects are now colorized. + + + +## Separation of positional and keyword arguments + +Automatic conversion of keyword arguments and positional arguments is +deprecated, and conversion will be removed in Ruby 3. [[Feature #14183]](https://bugs.ruby-lang.org/issues/14183) + + * When a method call passes a Hash at the last argument, and when it + passes no keywords, and when the called method accepts keywords, a + warning is emitted. To continue treating as keywords, add a double + splat operator to avoid the warning and ensure correct behavior in + Ruby 3. + + ```ruby + def foo(key: 42); end; foo({key: 42}) # warned + def foo(**kw); end; foo({key: 42}) # warned + def foo(key: 42); end; foo(**{key: 42}) # OK + def foo(**kw); end; foo(**{key: 42}) # OK + ``` + + * When a method call passes keywords to a method that accepts keywords, + but it does not pass enough required positional arguments, the + keywords are treated as a final required positional argument, and a + warning is emitted. Pass the argument as a hash instead of keywords + to avoid the warning and ensure correct behavior in Ruby 3. + + ```ruby + def foo(h, **kw); end; foo(key: 42) # warned + def foo(h, key: 42); end; foo(key: 42) # warned + def foo(h, **kw); end; foo({key: 42}) # OK + def foo(h, key: 42); end; foo({key: 42}) # OK + ``` + + * When a method accepts specific keywords but not a keyword splat, and + a hash or keywords splat is passed to the method that includes both + Symbol and non-Symbol keys, the hash will continue to be split, and + a warning will be emitted. You will need to update the calling code + to pass separate hashes to ensure correct behavior in Ruby 3. + + ```ruby + def foo(h={}, key: 42); end; foo("key" => 43, key: 42) # warned + def foo(h={}, key: 42); end; foo({"key" => 43, key: 42}) # warned + def foo(h={}, key: 42); end; foo({"key" => 43}, key: 42) # OK + def foo(h={}, key: 42); end; foo({"key" => 43}, key: 42) # OK + ``` + + * If a method does not accept keywords, and is called with keywords, + the keywords are still treated as a positional hash, with no warning. + This behavior will continue to work in Ruby 3. + + ```ruby + def foo(opt={}); end; foo( key: 42 ) # OK + ``` + +* Non-symbols are allowed as a keyword argument keys if method accepts + arbitrary keywords. [[Feature #14183]](https://bugs.ruby-lang.org/issues/14183) + + ```ruby + def foo(**kw); p kw; end; foo("str" => 1) #=> {"str"=>1} + ``` + +* **nil is allowed in method definitions to explicitly mark + that the method accepts no keywords. Calling such a method with keywords + will result in an ArgumentError. [[Feature #14183]](https://bugs.ruby-lang.org/issues/14183) + + ```ruby + def foo(h, **nil); end; foo(key: 1) # ArgumentError + def foo(h, **nil); end; foo(**{key: 1}) # ArgumentError + def foo(h, **nil); end; foo("str" => 1) # ArgumentError + def foo(h, **nil); end; foo({key: 1}) # OK + def foo(h, **nil); end; foo({"str" => 1}) # OK + ``` + +* Passing an empty keyword splat to a method that does not accept keywords + no longer passes an empty hash, unless the empty hash is necessary for + a required parameter, in which case a warning will be emitted. Remove + the double splat to continue passing a positional hash. [[Feature #14183]](https://bugs.ruby-lang.org/issues/14183) + + ```ruby + h = {}; def foo(*a) a end; foo(**h) # [] + h = {}; def foo(a) a end; foo(**h) # {} and warning + h = {}; def foo(*a) a end; foo(h) # [{}] + h = {}; def foo(a) a end; foo(h) # {} + ``` + +## Other Notable New Features + +* A method reference operator, .:, is introduced as an experimental feature. [#12125]( https://bugs.ruby-lang.org/issues/12125), [#13581]( https://bugs.ruby-lang.org/issues/13581) + +* Numbered parameter as the default block parameter is introduced as an experimental feature. [#4475](https://bugs.ruby-lang.org/issues/4475) + +* A beginless range is experimentally introduced. It might not be as useful + as an endless range, but would be good for DSL purpose. [#14799](https://bugs.ruby-lang.org/issues/14799) + + ary[..3] # identical to ary[0..3] + rel.where(sales: ..100) + +* `Enumerable#tally` is added. It counts the occurrence of each element. + + ["a", "b", "c", "b"].tally + #=> {"a"=>1, "b"=>2, "c"=>1} + +* Calling a private method on `self` is now allowed. [Feature #11297] [Feature #16123] + + def foo + end + private :foo + self.foo + +* `Enumerator::Lazy#eager` is added. It generates a non-lazy enumerator + from a lazy enumerator. [Feature #15901] + + a = %w(foo bar baz) + e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.eager + p e.class #=> Enumerator + p e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"] + +## Performance improvements + +* JIT [Experimental] + + * JIT-ed code is recompiled to less-optimized code when an optimization assumption is invalidated. + + * Method inlining is performed when a method is considered as pure. This optimization is still experimental and many methods are NOT considered as pure yet. + + * Default value of `--jit-min-calls` is changed from 5 to 10,000 + + * Default value of `--jit-max-cache` is changed from 1,000 to 100 + +* `Symbol#to_s`, `Module#name`, `true.to_s`, `false.to_s` and `nil.to_s` now always return a frozen String. The returned String is always the same for a given object. [Experimental] [[Feature #16150]](https://bugs.ruby-lang.org/issues/16150) + +* The performance of CGI.escapeHTML is improved. + * https://github.com/ruby/ruby/pull/2226 + +## Other notable changes since 2.6 + +* Some standard libraries are updated. + * Bundler 2.1.0.pre.1 + * RubyGems 3.1.0.pre.1 + * CSV 3.1.2 ([NEWS](https://github.com/ruby/csv/blob/master/NEWS.md)) + * Racc 1.4.15 + * REXML 3.2.3 ([NEWS](https://github.com/ruby/rexml/blob/master/NEWS.md)) + * RSS 0.2.8 ([NEWS](https://github.com/ruby/rss/blob/master/NEWS.md)) + * StringScanner 1.0.3 + * Some of other libraries that have no original version are also updated. + +* `Proc.new` and `proc` with no block in a method called with a block is warned now. + +* `lambda` with no block in a method called with a block errs. + +* Update Unicode version and Emoji version from 11.0.0 to 12.0.0. [[Feature #15321]](https://bugs.ruby-lang.org/issues/15321) + +* Update Unicode version to 12.1.0, adding support for U+32FF SQUARE ERA NAME REIWA. [[Feature #15195]](https://bugs.ruby-lang.org/issues/15195) + +* `Date.jisx0301`, `Date#jisx0301`, and `Date.parse` provisionally support the new Japanese era as an informal extension, until the new JIS X 0301 is issued. [[Feature #15742]](https://bugs.ruby-lang.org/issues/15742) + +* Require compilers to support C99 [[Misc #15347]](https://bugs.ruby-lang.org/issues/15347) + * Details of our dialect: + +See [NEWS](https://github.com/ruby/ruby/blob/v2_7_0_preview1/NEWS) or [commit logs](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) for more details. + +With those changes, [1727 files changed, 76022 insertions(+), 60286 deletions(-)](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) since Ruby 2.6.0! + +Enjoy programming with Ruby 2.7! + +## Download + +* + + SIZE: 14555229 bytes + SHA1: 7d9eed71115acfc8851747517904c1c6809872a9 + SHA256: 417c84346ba84d664a13833c94c6d9f888c89bb9bee9adf469580441eaede30b + SHA512: 7066ececebbbba4b2933ba1a4f70cdef373169910802259a3e52b4fc144ba298f3cffda4be5fe8a7be8ef769ed43076fa046a9ac2c13bb733475b9852112c6f0 +* + + SIZE: 16622499 bytes + SHA1: 5e998eb37ef54e650c0206184d56f506359d5477 + SHA256: bda4b8dc340fad425c8099400fe3ef8e7393837d7e6e1bfae41843d1d938ebc4 + SHA512: dbf05d6ddab59062f507342b25b8c21670b02bdd49e77bda947870607f4bf9049e5e7ddfde6bbce2e1749ca92568da9be3e5f30601b1eb450f10d8add952239a +* + + SIZE: 11874200 bytes + SHA1: 4356e1726027795a5c6b08572bb37bcb5a8c55d6 + SHA256: fa39f088331f6d505154aa9d025aab177fdffedfbbabccd900b8c02e745bc077 + SHA512: a057a186d85fcdf123abd69d584ef3adb20ad4397521e14306395d34102c3d818fe2d34a6476db01effcde479da9a77076cbb6d30bca40f1471ce3f5d3a995a9 +* + + SIZE: 20576618 bytes + SHA1: 891b70ec76e9e776774a49b3ce24832a944422b3 + SHA256: 81a240bead4438b064cb4cde562b483b82ec8e414bac057a6df43df5a247545c + SHA512: 1a8d4503374d31abf43182e2af6902ea6e5295f55d539415c8268b1d6a0fa83a975648c225ae986e687d5283dc2d180cf1e608841485506e4b0ac5efc154949a + +## What is Ruby + +Ruby was first developed by Matz (Yukihiro Matsumoto) in 1993, and is now developed as Open Source. It runs on multiple platforms and is used all over the world especially for web development. \ No newline at end of file diff --git a/ja/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md b/ja/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md new file mode 100644 index 0000000000..2aec1f71db --- /dev/null +++ b/ja/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md @@ -0,0 +1,215 @@ +--- +layout: news_post +title: "Ruby 2.7.0-preview2 リリース" +author: "naruse" +translator: +date: 2019-10-22 12:00:00 +0000 +lang: ja +--- + +Ruby 2.7シリーズのプレビュー版である、Ruby 2.7.0-preview2をリリースします。 + +プレビュー版は、年末の正式リリースに向け、新たな機能を試し、フィードバックを集めるために提供されています。 +Ruby 2.7.0-preview2では、多くの新しい機能やパフォーマンスの改善が含まれています。 その一部を以下に紹介します。 + +## Compaction GC + +断片化したメモリをデフラグするCompaction GCが導入されました。 + +一部のマルチスレッドなRubyプログラムを長期間動かし、マーク&スイープ型GCを何度も実行していると、メモリが断片化してメモリ使用量の増大や性能の劣化を招くことが知られています。 + +Ruby 2.7では`GC.compact` というメソッドを導入し、ヒープをコンパクションすることが出来るようになります。ヒープ内の生存しているオブジェクトを他のページに移動し、不要なページを解放できるようになるとともに、ヒープをCoW (Copy on Write) フレンドリーにすることが出来ます。 [#15626](https://bugs.ruby-lang.org/issues/15626) + +## Pattern Matching [Experimental] + +関数型言語で広く使われているパターンマッチという機能が実験的に導入されました。 +渡されたオブジェクトの構造がパターンと一致するかどうかを調べ、一致した場合にその値を変数に代入するといったことができるようになります。 [#14912](https://bugs.ruby-lang.org/issues/14912) + +```ruby +case JSON.parse('{...}', symbolize_names: true) +in {name: "Alice", children: [{name: "Bob", age: age}]} + p age + ... +end +``` + +詳細については [Pattern matching - New feature in Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7) を参照してください。 + +## REPL improvement + +Ruby に添付されている REPL (Read-Eval-Print-Loop) である `irb` で、複数行編集がサポートされました。これは `reline` という `readline` 互換のピュア Ruby 実装によるものです。 +また、rdoc 連携も提供されるようになっています。`irb` 内で、クラス、モジュール、メソッドのリファレンスをその場で確認できるようになりました。 [#14683](https://bugs.ruby-lang.org/issues/14683), [#14787](https://bugs.ruby-lang.org/issues/14787), [#14918](https://bugs.ruby-lang.org/issues/14918) +これに加え、`binding.irb`で表示される周辺のコードや、コアクラスのオブジェクトのinspect結果に色がつくようになっています。 + + + +## キーワード引数を通常の引数から分離 + +キーワード引数とpositionalな引数(ふつうの引数)の間の自動変換が非推奨となりました。この変換はRuby 3で除去される予定です。[[Feature #14183]](https://bugs.ruby-lang.org/issues/14183) + +* メソッド呼び出しにおいて最後の引数としてハッシュオブジェクトを渡し、他にキーワード引数を渡さず、かつ、呼ばれたメソッドがキーワード引数を受け取るとき、警告が表示されます。キーワード引数として扱いたい場合は、明示的にdouble splat演算子(`**`)を足すことで警告を回避できます。このように書けばRuby 3でも同じ意味で動きます。 + + ```ruby + def foo(key: 42); end; foo({key: 42}) # warned + def foo(**kw); end; foo({key: 42}) # warned + def foo(key: 42); end; foo(**{key: 42}) # OK + def foo(**kw); end; foo(**{key: 42}) # OK + ``` + +* キーワード引数を受け取るメソッドにキーワード引数を渡すが、必須引数が不足している場合に、キーワード引数は最後の必須引数として解釈され、警告が表示されます。警告を回避するには、キーワードではなく明示的にハッシュとして渡してください。このように書けばRuby 3でも同じ意味で動きます。 + + ```ruby + def foo(h, **kw); end; foo(key: 42) # warned + def foo(h, key: 42); end; foo(key: 42) # warned + def foo(h, **kw); end; foo({key: 42}) # OK + def foo(h, key: 42); end; foo({key: 42}) # OK + ``` + +* メソッドがキーワード引数を受け取るがdouble splat引数は受け取らず、かつ、メソッド呼び出しでSymbolと非Symbolの混ざったハッシュを渡す(もしくはハッシュをdouble splatでキーワードとして渡す)場合、ハッシュは分割され、警告が表示されます。Ruby 3でもハッシュの分割を続けたい場合は、呼び出し側で明示的に分けるようにしてください。 + + ```ruby + def foo(h={}, key: 42); end; foo("key" => 43, key: 42) # warned + def foo(h={}, key: 42); end; foo({"key" => 43, key: 42}) # warned + def foo(h={}, key: 42); end; foo({"key" => 43}, key: 42) # OK + def foo(h={}, key: 42); end; foo({"key" => 43}, key: 42) # OK + ``` + +* メソッドがキーワード引数を受け取らず、呼び出し側でキーワード引数を渡した場合、ハッシュの引数としてみなされる挙動は変わらず、警告も表示されません。Ruby 3でもこのコードは動き続ける予定です。 + + ```ruby + def foo(opt={}); end; foo( key: 42 ) # OK + ``` + +* メソッドが任意のキーワードを受け取る場合、非Symbolがキーワード引数のキーとして許容されるようになります。[[Feature #14183]](https://bugs.ruby-lang.org/issues/14183) + + ```ruby + def foo(**kw); p kw; end; foo("str" => 1) #=> {"str"=>1} + ``` + +* メソッド定義で**nilと書くことで、このメソッドがキーワードを受け取らないことを明示できるようになりました。このようなメソッドをキーワード引数付きで呼び出すとArgumentErrorになります。[[Feature #14183]](https://bugs.ruby-lang.org/issues/14183) + + ```ruby + def foo(h, **nil); end; foo(key: 1) # ArgumentError + def foo(h, **nil); end; foo(**{key: 1}) # ArgumentError + def foo(h, **nil); end; foo("str" => 1) # ArgumentError + def foo(h, **nil); end; foo({key: 1}) # OK + def foo(h, **nil); end; foo({"str" => 1}) # OK + ``` + +* キーワード引数を受け取らないメソッドに対して空のハッシュをdouble splatで渡すとき、空のハッシュが渡る挙動はなくなりました。ただし、必須引数が不足する場合は空のハッシュが渡され、警告が表示されます。ハッシュの引数として渡したい場合はdouble splatをつけないようにしてください。 + + ```ruby + h = {}; def foo(*a) a end; foo(**h) # [] + h = {}; def foo(a) a end; foo(**h) # {} and warning + h = {}; def foo(*a) a end; foo(h) # [{}] + h = {}; def foo(a) a end; foo(h) # {} + ``` + +## 主要な新機能 + +* メソッド参照演算子 .: が試験的に導入されました。[#12125](https://bugs.ruby-lang.org/issues/12125), [#13581](https://bugs.ruby-lang.org/issues/13581) + +* デフォルトのブロックの仮引数として番号指定パラメータが試験的に導入されました。[#4475](https://bugs.ruby-lang.org/issues/4475) + +* 開始値省略範囲式が試験的に導入されました。これは終了値省略範囲式ほど有用ではないと思われますが、しかし DSL のような目的には役立つかもしれません。 [#14799](https://bugs.ruby-lang.org/issues/14799) + + ary[..3] # identical to ary[0..3] + rel.where(sales: ..100) + +* `Enumerable#tally` が追加されました。各要素の出現回数を数えます。 + + ["a", "b", "c", "b"].tally + #=> {"a"=>1, "b"=>2, "c"=>1} + +* レシーバを`self`としてprivateメソッドを呼び出すことが許容されるようになりました。[Feature #11297] [Feature #16123] + + def foo + end + private :foo + self.foo + +* `Enumerator::Lazy#eager` が追加されました。lazyなEnumeratorを非lazyなEnumeratorに変換します。 + + a = %w(foo bar baz) + e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.eager + p e.class #=> Enumerator + p e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"] + +## パフォーマンスの改善 + +* JIT [Experimental] + + * 最適化の際の仮定が無効とされた場合、JIT 化されていたコードがより最適化度が低いコードに再コンパイルされるようになりました。 + + * あるメソッドが「純粋」であると判定された場合、メソッドのインライン化が行われるようになりました。この最適化はまだ実験的であり、また多数のメソッドが今はまだ「純粋」と判定されないままです。 + + * `--jit-min-calls` オプションのデフォルト値が 5 から 10,000 に変更されました。 + + * `--jit-max-cache` オプションのデフォルト値が 1,000 から 100 に変更されました。 + +* `Symbol#to_s`, `Module#name`, `true.to_s`, `false.to_s` `nil.to_s` は常にfrozenな文字列を返すようになりました。返された文字列は常に同じオブジェクトとなります。 [Experimental] [[Feature #16150]](https://bugs.ruby-lang.org/issues/16150) + +* CGI.escapeHTMLのパフォーマンスが改善されました。 + * https://github.com/ruby/ruby/pull/2226 + +## その他の注目すべき 2.6 からの変更点 + +* いくつかの標準ライブラリがアップデートされました。 + * Bundler 2.1.0.pre.1 + * RubyGems 3.1.0.pre.1 + * CSV 3.1.2 ([NEWS](https://github.com/ruby/csv/blob/master/NEWS.md)) + * Racc 1.4.15 + * REXML 3.2.3 ([NEWS](https://github.com/ruby/rexml/blob/master/NEWS.md)) + * RSS 0.2.8 ([NEWS](https://github.com/ruby/rss/blob/master/NEWS.md)) + * StringScanner 1.0.3 + * 独自のバージョン番号を持たないその他のライブラリの一部も更新されています。 + +* ブロックを渡すメソッド呼び出し中の、ブロックを伴わない `Proc.new` と `proc` が警告されるようになりました。 + +* ブロックを渡すメソッド呼び出し中の、ブロックを伴わない `lambda` はエラーとなるようになりました。 + +* Unicode および Emoji のバージョンが 11.0.0 から 12.0.0 になりました。[[Feature #15321]](https://bugs.ruby-lang.org/issues/15321) + +* Unicode のバージョンが 12.1.0 となり、新元号「令和」を表す合字 U+32FF がサポートされました。[[Feature #15195]](https://bugs.ruby-lang.org/issues/15195) + +* `Date.jisx0301`, `Date#jisx0301`, および `Date.parse` で非公式に新元号に仮対応しました。これは JIS X 0301 の新しい版で正式な仕様が決定されるまでの暫定的なものです。[[Feature #15742]](https://bugs.ruby-lang.org/issues/15742) + +* Ruby のビルドに C99 に対応したコンパイラが必要になりました。[[Misc #15347]](https://bugs.ruby-lang.org/issues/15347) + * 本件についての詳細: + +なお、こうした変更により、Ruby 2.6.0 以降では [1727 個のファイルに変更が加えられ、76022 行の追加と 60286 行の削除が行われました](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) ! + +Ruby 2.7 で楽しいプログラミングを! + +## Download + +* + + SIZE: 14555229 bytes + SHA1: 7d9eed71115acfc8851747517904c1c6809872a9 + SHA256: 417c84346ba84d664a13833c94c6d9f888c89bb9bee9adf469580441eaede30b + SHA512: 7066ececebbbba4b2933ba1a4f70cdef373169910802259a3e52b4fc144ba298f3cffda4be5fe8a7be8ef769ed43076fa046a9ac2c13bb733475b9852112c6f0 +* + + SIZE: 16622499 bytes + SHA1: 5e998eb37ef54e650c0206184d56f506359d5477 + SHA256: bda4b8dc340fad425c8099400fe3ef8e7393837d7e6e1bfae41843d1d938ebc4 + SHA512: dbf05d6ddab59062f507342b25b8c21670b02bdd49e77bda947870607f4bf9049e5e7ddfde6bbce2e1749ca92568da9be3e5f30601b1eb450f10d8add952239a +* + + SIZE: 11874200 bytes + SHA1: 4356e1726027795a5c6b08572bb37bcb5a8c55d6 + SHA256: fa39f088331f6d505154aa9d025aab177fdffedfbbabccd900b8c02e745bc077 + SHA512: a057a186d85fcdf123abd69d584ef3adb20ad4397521e14306395d34102c3d818fe2d34a6476db01effcde479da9a77076cbb6d30bca40f1471ce3f5d3a995a9 +* + + SIZE: 20576618 bytes + SHA1: 891b70ec76e9e776774a49b3ce24832a944422b3 + SHA256: 81a240bead4438b064cb4cde562b483b82ec8e414bac057a6df43df5a247545c + SHA512: 1a8d4503374d31abf43182e2af6902ea6e5295f55d539415c8268b1d6a0fa83a975648c225ae986e687d5283dc2d180cf1e608841485506e4b0ac5efc154949a + +## Ruby とは + +Rubyはまつもとゆきひろ (Matz) によって1993年に開発が始められ、今もオープンソースソフトウェアとして開発が続けられています。Rubyは様々なプラットフォームで動き、世界中で、特にWebアプリケーション開発のために使われています。 \ No newline at end of file