|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Ruby 3.4.0 preview2 リリース" |
| 4 | +author: "naruse" |
| 5 | +translator: "motohiro-mm" |
| 6 | +date: 2024-10-07 00:00:00 +0000 |
| 7 | +lang: ja |
| 8 | +--- |
| 9 | + |
| 10 | +{% assign release = site.data.releases | where: "version", "3.4.0-preview2" | first %} |
| 11 | +Ruby {{ release.version }}がリリースされました。 |
| 12 | + |
| 13 | +## Prism |
| 14 | + |
| 15 | +デフォルトのパーサーを parse.y から Prism に変更しました。 [[Feature #20564]] |
| 16 | + |
| 17 | +## 言語機能の変更 |
| 18 | + |
| 19 | +* `frozen_string_literal`のコメントがないファイルで文字列リテラルが凍結されたように振る舞うようになりました。 |
| 20 | + 文字列リテラルが破壊的に変更された場合、非推奨の警告が表示されます。 |
| 21 | + この警告は `-W:deprecated` または `Warning[:deprecated] = true` で有効にすることができます。 |
| 22 | + コマンドライン引数で`--disable-frozen-string-literal` を指定してRubyを実行すると、この変更を無効にできます。 [[Feature #20205]] |
| 23 | + |
| 24 | +* `it`がブロックパラメータを参照するために追加されました。 [[Feature #18980]] |
| 25 | + |
| 26 | +* メソッド呼び出し時のnilのキーワードスプラットが使えるようになりました。 |
| 27 | + `**nil`は`**{}`と同様に扱われ、キーワードは渡されず、変換メソッドも呼び出されません。 [[Bug #20064]] |
| 28 | + |
| 29 | +* インデックスにブロックを渡せなくなりました。 [[Bug #19918]] |
| 30 | + |
| 31 | +* インデックスにキーワード引数が使えなくなりました。 [[Bug #20218]] |
| 32 | + |
| 33 | +## コアクラスの更新 |
| 34 | +注:特に重要なクラスアップデートのみを掲載しています。 |
| 35 | + |
| 36 | +* Exception |
| 37 | + |
| 38 | + * Exception#set_backtraceが`Thread::Backtrace::Location`の配列を受け付けるようになりました。 |
| 39 | + `Kernel#raise`と`Thread#raise`、`Fiber#raise`も同様に新しいフォーマットを受け付けます。[[Feature #13557]] |
| 40 | + |
| 41 | +* Range |
| 42 | + |
| 43 | + * rangeが列挙可能でない場合、`Range#size`がTypeErrorを発生させるようになりました。[[Misc #18984]] |
| 44 | + |
| 45 | + |
| 46 | +## 互換性に関する変更 |
| 47 | + |
| 48 | +注:バグフィックスは掲載していません。 |
| 49 | + |
| 50 | +* エラーメッセージとバックトレースの表示が変更されました。 |
| 51 | + * 冒頭の引用符にはバッククォートの代わりにシングルクォートを使用します。 [[Feature #16495]] |
| 52 | + * メソッド名の前にクラス名を表示します(クラスが永続的な名前を持つ場合のみ)。 [[Feature #19117]] |
| 53 | + * `Kernel#caller`、`Thread::Backtrace::Location`のメソッドなどがそれに応じて変更されました。 |
| 54 | + |
| 55 | + ``` |
| 56 | + Old: |
| 57 | + test.rb:1:in `foo': undefined method `time' for an instance of Integer |
| 58 | + from test.rb:2:in `<main>' |
| 59 | + New: |
| 60 | + test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer |
| 61 | + from test.rb:2:in '<main>' |
| 62 | + ``` |
| 63 | + |
| 64 | +* `Hash#inspect`の出力を変更しました。 [[Bug #20433]] |
| 65 | + * キーがシンボルの場合は、コロン形式を使用するようになりました。`"{user: 1}"` |
| 66 | + * キーがシンボルでない場合は、`=>`の前後にスペースを追加します。`'{"user" => 1}'` |
| 67 | + 以前:`'{"user"=>1}'` |
| 68 | + |
| 69 | + |
| 70 | +## C API更新 |
| 71 | + |
| 72 | +* `rb_newobj`と`rb_newobj_of` (および対応するマクロ `RB_NEWOBJ`、`RB_NEWOBJ_OF`、`NEWOBJ`、`NEWOBJ_OF`)が削除されました。 [[Feature #20265]] |
| 73 | +* 廃止予定だった関数`rb_gc_force_recycle`が削除されました。 [[Feature #18290]] |
| 74 | + |
| 75 | +## 実装の改善 |
| 76 | + |
| 77 | +* `Array#each`がRubyで書き直され、パフォーマンスが改善されました。 [[Feature #20182]]. |
| 78 | + |
| 79 | +## その他の変更 |
| 80 | + |
| 81 | +* 渡されたブロックを使用しないメソッドにブロックを渡すと、verboseモード (`-w`) で警告が表示されるようになりました。 [[Feature #15554]] |
| 82 | + |
| 83 | +* `String.freeze`や`Integer#+`のようなインタプリタやJITによって特別に最適化されたコアメソッドを再定義すると、パフォーマンスクラスの警告(`-W:performance`または`Warning[:performance] = true`)が出るようになりました。 [[Feature #20429]] |
| 84 | + |
| 85 | +default gemやbundled gemの詳細については、[Logger](https://github.com/ruby/logger/releases)などのGitHubのリリースやchangelogを参照してください。 |
| 86 | + |
| 87 | +詳細は[NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) |
| 88 | +か[commit logs](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }})を参照してください。 |
| 89 | + |
| 90 | +これらの変更により、Ruby 3.3.0から[{{ release.stats.files_changed }} ファイルが変更され、{{ release.stats.insertions }} 行が追加され、 {{ release.stats.deletions }} 行が削除されました!](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}#file_bucket) |
| 91 | + |
| 92 | + |
| 93 | +## ダウンロード |
| 94 | + |
| 95 | +* <{{ release.url.gz }}> |
| 96 | + |
| 97 | + SIZE: {{ release.size.gz }} |
| 98 | + SHA1: {{ release.sha1.gz }} |
| 99 | + SHA256: {{ release.sha256.gz }} |
| 100 | + SHA512: {{ release.sha512.gz }} |
| 101 | + |
| 102 | +* <{{ release.url.xz }}> |
| 103 | + |
| 104 | + SIZE: {{ release.size.xz }} |
| 105 | + SHA1: {{ release.sha1.xz }} |
| 106 | + SHA256: {{ release.sha256.xz }} |
| 107 | + SHA512: {{ release.sha512.xz }} |
| 108 | + |
| 109 | +* <{{ release.url.zip }}> |
| 110 | + |
| 111 | + SIZE: {{ release.size.zip }} |
| 112 | + SHA1: {{ release.sha1.zip }} |
| 113 | + SHA256: {{ release.sha256.zip }} |
| 114 | + SHA512: {{ release.sha512.zip }} |
| 115 | + |
| 116 | + |
| 117 | +## Ruby とは |
| 118 | + |
| 119 | +Rubyはまつもとゆきひろ (Matz) によって1993年に開発が始められ、今もオープンソースソフトウェアとして開発が続けられています。Rubyは様々なプラットフォームで動き、世界中で、特にWebアプリケーション開発のために使われています。 |
| 120 | + |
| 121 | +[Feature #13557]: https://bugs.ruby-lang.org/issues/13557 |
| 122 | +[Feature #15554]: https://bugs.ruby-lang.org/issues/15554 |
| 123 | +[Feature #16495]: https://bugs.ruby-lang.org/issues/16495 |
| 124 | +[Feature #18290]: https://bugs.ruby-lang.org/issues/18290 |
| 125 | +[Feature #18980]: https://bugs.ruby-lang.org/issues/18980 |
| 126 | +[Misc #18984]: https://bugs.ruby-lang.org/issues/18984 |
| 127 | +[Feature #19117]: https://bugs.ruby-lang.org/issues/19117 |
| 128 | +[Bug #19918]: https://bugs.ruby-lang.org/issues/19918 |
| 129 | +[Bug #20064]: https://bugs.ruby-lang.org/issues/20064 |
| 130 | +[Feature #20182]: https://bugs.ruby-lang.org/issues/20182 |
| 131 | +[Feature #20205]: https://bugs.ruby-lang.org/issues/20205 |
| 132 | +[Bug #20218]: https://bugs.ruby-lang.org/issues/20218 |
| 133 | +[Feature #20265]: https://bugs.ruby-lang.org/issues/20265 |
| 134 | +[Feature #20429]: https://bugs.ruby-lang.org/issues/20429 |
| 135 | +[Feature #20564]: https://bugs.ruby-lang.org/issues/20564 |
| 136 | +[Bug #20433]: https://bugs.ruby-lang.org/issues/20433 |
0 commit comments