2021-01-01から1年間の記事一覧
今週は Strcut を素の class に置き換えることで Ripper.lex を高速化する提案がありました。 前回のまとめ [Feature #18369] users.detect(:name, "Dorian") as shorthand for users.detect { |user| user.name == "Dorian" } users.detect { |user| user.n…
一人 bugs.ruby Advent Calendar 2021 1日目の記事になります。 さて、去年に引き続き今年も『毎週気になった bugs.ruby のチケットをまとめてみる』ということを継続してやっていました。 今週の気になった bugs.ruby のチケット と、言うことで今年も去年…
Ruby Advent Calendar 2021 1日目の記事です。 さてさて今年も Advent Calendar の時期がやってきましたね。 今年の Ruby Advent Calendar はありがたい事に1周目が既に埋まっており、2周目のカレンダーが立っています。 Advent Calendar を書いてみたい方が…
今週は load メソッドにモジュールを渡せるようになりました。 前回のまとめ [Bug #17675] StringIO#each_byte doesn't check for readabilty while iterating IO がクローズしているのにイテレーションが処理されてしまうというバグ報告 require "stringio"…
今週は Refinements 関連の便利メソッドのチケットが多いです。 前回のまとめ [Bug #17429] Prohibit include/prepend in refinement modules Refinements 時に include/prepend することを禁止するチケット 背景として以下の様に Refinements 時に include/…
でました。 リリースノートはこちら。 Ruby 3.1.0 Preview 1 Released NEWS rbenv を使っている方は、 $ rbenv install 3.1.0-preview1 してもらえるとローカルにインストールすることができます。 以下、気になった機能追加や変更点など。 新しい JIT コン…
今週は Time.at のパフォーマンス低下の報告などがありました。 前回のまとめ [Bug #18293] Time.at in master branch was 25% slower then Ruby 3.0 Time.at が 3.0.2 と 3.1.0-dev と比較して 25% 遅くなったというバグ報告 実際の比較はチケットを見てね…
今週は Proc#bind_call(obj) を追加する提案などがありました。 前回のまとめ [Bug #18282] Rails CI raises Segmentation fault with ruby 3.1.0dev supporting Class#descendants 開発版 Ruby と最新版の Rails でクラッシュするというバグ報告 最終的には…
今週は Enumerable#each_cons と #each_slice の戻り値の変更がありました。 前回のまとめ [PR #1509] Fix Enumerable#each_cons and each_slice to return a receiver Enumerable#each_cons と Enumerable#each_slice の戻り値をレシーバにする PR 現在は n…
今日の Kaigi on Rails の kamipo さんの基調講演でそういう話がでてたのでやってみました。 要は User.where みたいに User. 付きか where だけで呼び出された場合で処理を切り分けたい的な話。 class User def self.where "レシーバなし" end def self.whe…
今週は YJIT が Ruby 本体に取り込まれました。 前回のまとめ [Feature #6210] load should provide a way to specify the top-level module load メソッドに Module を指定できるようにする提案 以下のように特定のモジュールに対して load した Ruby のコ…
書こう書こうと思って気がついたら1ヶ月立っていましたこんにちは。 (去年を除いて)今回が RubyKaigi 初参加&初登壇ということでいろいろと書き残しておこうと思います。 ちなみに今週末に以下のようなイベントで雑に話すので興味がある方がぜひぜひ参加…
今週は feature チケットに関するトリアージのガイドラインの提案などがありました。 前回のまとめ [Bug #18250] Anonymous variables seem to break Ractor.make_shareable 以下のようなコードを実行すると Ractor.make_shareable で TypeError が発生する…
RubyKaigi で発表があった debug-gem を使ってみたので覚書。 思ったよりもいろんな機能があった。 The Art of Execution Control for Ruby's Debugger by Koichi Sasada - RubyKaigi Takeout 2021 インストール $ gem install debug でインストールするか G…
今週は Immutable モジュールを追加して不変なオブジェクトを明示化しよう、というチケットがありました。 前回のまとめ [Feature #18035] Introduce general model/semantic for immutable by default. 以下のように Immutable モジュールを定義して mixin …
RubyKaigi からだいぶ時間が立ってしまっていますが、やってみました。 前提 Ruby 3.1.0-dev 環境 rbenv を使っていれば rbevn install 3.1.0-dev しておく TypeProf の lsp-test ブランチ を使用 Vim 側のプラグインは vim-lsp 競合しそうなので vim-lsp-se…
今週は YJIT の導入チケットがつくられました。 前回のまとめ [Feature #18229] Proposal to merge YJIT Ruby 本体に YJIT を組み込む提案 matz が +1 している での本体には取り込まれそう 来月リファクタリングされるらしいので実際に入るのはもうちょい後…
今週は min / max / minmax で比較する値とその結果の要素を返すメソッドの提案などがありました。 前回のまとめ [Bug #18187] Float#clamp() returns ArgumentError (comparison of Float with 1 failed) Float::NAN.clamp(0, 100) すると ArgumentError が…
今週は { a: a, b: b } を { a:, b: } とかけるショートハンドが入りました。 前回のまとめ [Feature #18168] Add ActiveSupport deep_transform_values to Ruby ActiveSupport の #deep_transform_values を Ruby 本体に追加する提案 require "active_suppo…
以前から山のように提案があった Hash のショートハンドが RubyKaigi の感想戦で matz を説得して入ったらしい。 チケット:[Feature #14579] Hash value omission コミット:https://github.com/ruby/ruby/commit/c60dbcd1c55cd77a24c41d5e1a9555622be8b2b8…
今週は Enumerable#take_while_after や Enumerable#detect_only といったメソッドの提案がありました 前回のまとめ [Feature #18136] take_while_after 先頭からブロックが真になった要素までを返すメソッドの提案 Enumerable#slice_after.first と同じ挙動…
先日 RubyKaigi Takeout 2021 のスピーカーとスケジュールが発表されました。 わたしも 3日目の朝一に Use Macro all the time ~ マクロを使いまくろ ~というタイトルで登壇させていただきます。 内容はタイトルにも書かれている通りマクロの話をします。 マ…
今週は右代入で特定のケースでシンタックスエラーになるというバグ報告がありました。 前回のまとめ [Bug #18084] JSON.dump can crash VM. 次のように再帰的な Hash を JSON.dump に渡すと VM がクラッシュするバグ報告 どうやら Linux 系でのみ発生してい…
今週は instance_exec に Method#to_proc を渡すと意図しない例外が返ってくるというバグ報告や Ruby 3.0.2 で Hash#transform_keys! を呼び出すとメモリリークをするという報告がありました。 前回のまとめ [Feature #18070] attr should be removed 1.9 か…
今週はネストしたループで caller_locations を呼び出すと segv するバグ報告などがありました。 前回のまとめ [Feature #18057] Introduce Array#mean 配列の平均値を求める Array#mean メソッドを追加する提案 元々は Array#average という名前だったが #m…
Integer.try_convert の追加や Struct.new.keyword_init? の追加などがありました。 前回のまとめ [Feature #10473] Change Date#to_datetime to use local time Date#to_datetime でローカルのタイムゾーンを使用しよう、というバグ報告 現状はローカルのタ…
今週は TracePoint 周りのバグがありました。 先週のまとめ [Feature #17039] Remove Time#succ Time#succ を削除するチケット 1.9.2 の頃から廃止の警告がでてたらしい warning: Time#succ is obsolete; use time + 1 と、いうわけで Ruby 3.1 から削除され…
今週は Ruby 3.1.0 で default gem から bundled gem に移動するチケットなどを載せています。 先週のまとめ [Feature #17873] Update of default gems in Ruby 3.1 Ruby 3.1 からいくつかの default gem が bundled gem に変更されるチケット 現時点で(あ…
今週はエラー箇所をハイライトする error_highlight という gem が本体に追加されました。 先週のまとめ [Feature #17930] Add column information into error backtrace エラー箇所をハイライトする機能の提案 error_highlight という gem として取り込まれ…
今週はエラー箇所をマークする gem の PR などがありました。 先週のまとめ [Bug #14817] TracePoint#parameters for bmethod's return event should return the same value as its Method#parameters TracePoint の :return イベント時に TracePoint#parame…