【一人 bugs.ruby Advent Calendar 2021】[Feature #17398] SyntaxError in endless method【14日目】

一人 bugs.ruby Advent Calendar 2021 14日目の記事になります。 今日はエンドレスメソッド定義の本体が statement だった場合にエラーになる話です。 [Feature #17398] SyntaxError in endless method 以下のようにエンドレスメソッド定義の本体が statemen…

【一人 bugs.ruby Advent Calendar 2021】[Feature #16806] Struct#initialize accepts keyword arguments too by default【13日目】

一人 bugs.ruby Advent Calendar 2021 13日目の記事になります。 Struct の keyword_init: をデフォルトで有効にするというチケットです。 [Feature #16806] Struct#initialize accepts keyword arguments too by default Struct の keyword_init: をデフォ…

【一人 bugs.ruby Advent Calendar 2021】[Misc #18285] NoMethodError#message uses a lot of CPU/is really expensive to call【12日目】

一人 bugs.ruby Advent Calendar 2021 12日目の記事になります。 今回は特定の条件下で NoMethodError#message がパフォーマンス的にコストがかかる話です。 [Misc #18285] NoMethodError#message uses a lot of CPU/is really expensive to call NoMethodEr…

【一人 bugs.ruby Advent Calendar 2021】[Feature #18276] `Proc#bind_call(obj)` same as `obj.instance_exec(..., &proc_obj)`【11日目】

一人 bugs.ruby Advent Calendar 2021 11日目の記事になります。 今回は obj.instance_exec(..., &proc_obj) と同じ意味の Proc#bind_call(obj) を追加する話です。 [Feature #18276] Proc#bind_call(obj) same as obj.instance_exec(..., &proc_obj) obj.in…

【一人 bugs.ruby Advent Calendar 2021】[Feature #6210] load should provide a way to specify the top-level module【10日目】

一人 bugs.ruby Advent Calendar 2021 10日目の記事になります。 load メソッドに Module を渡せるようにする事でそのモジュール内で load された定義が追加できるように提案する話です。 [Feature #6210] load should provide a way to specify the top-lev…

2021/12/09 今回の気になった bugs.ruby のチケット

今週は import_methods に C拡張で定義されたモジュールを渡せないバグ報告などがありました。 前回のまとめ [Bug #18396] An unexpected "hash value omission" syntax error when without parentheses call expr follows Ruby 3.1 では Hash の省略記法が…

【一人 bugs.ruby Advent Calendar 2021】[Feature #12495] Make "private" return the arguments again, for chaining【9日目】

一人 bugs.ruby Advent Calendar 2021 9日目の記事になります。 public / private / protected の戻り値をレシーバから引数を返すようにする提案です。 [Feature #12495] Make "private" return the arguments again, for chaining public / private / prote…

【一人 bugs.ruby Advent Calendar 2021】[Feature #18035] Introduce general model/semantic for immutable by default.【8日目】

一人 bugs.ruby Advent Calendar 2021 8日目の記事になります。 今回は freeze されている事を明示化する Immutable モジュールの提案です。 [Feature #18035] Introduce general model/semantic for immutable by default. Immutable モジュールで freeze …

【一人 bugs.ruby Advent Calendar 2021】[Feature #14579] Hash value omission【7日目】

一人 bugs.ruby Advent Calendar 2021 7日目の記事になります。 今回は { x:, y: } を { x: x, y: y } のショートハンドにする提案です。 [Feature #14579] Hash value omission { x:, y: } を { x: x, y: y } のショートハンドにする提案です。 これ以外に…

【一人 bugs.ruby Advent Calendar 2021】[Feature #17786] Proposal: new "ends" keyword【6日目】

一人 bugs.ruby Advent Calendar 2021 6日目の記事になります。 今回は複数の end を ends という1つのキーワードで定義できるようにしようという提案です。 [Feature #17786] Proposal: new "ends" keyword 複数の end を ends という1つのキーワードで定義…

【一人 bugs.ruby Advent Calendar 2021】[Feature #17785] Allow named parameters to be keywords【5日目】

一人 bugs.ruby Advent Calendar 2021 5日目の記事になります。 今回はキーワード引数にキーワードを割り当てたい話。 [Feature #17785] Allow named parameters to be keywords 次のようにキーワード引数に『言語のキーワード』を指定すると参照するのが難…

【一人 bugs.ruby Advent Calendar 2021】[Misc #18150] Proposal: Deprecate leading zero syntax to declare octals, since it's extremely confusing (and Python 3 removed it too)【4日目】

一人 bugs.ruby Advent Calendar 2021 4日目の記事になります。 今回は 8進数リテラルについて議論するチケットです。 [Misc #18150] Proposal: Deprecate leading zero syntax to declare octals, since it's extremely confusing (and Python 3 removed it…

【一人 bugs.ruby Advent Calendar 2021】[Bug #10593] Emoji is been considered as comment【3日目】

一人 bugs.ruby Advent Calendar 2021 3日目の記事になります。 #️⃣ 絵文字以降の Ruby のコードがコメントアウトとして扱われてしまうというバグ報告です。 [Bug #10593] Emoji is been considered as comment #️⃣ という絵文字を書いた以降がコメントアウ…

【一人 bugs.ruby Advent Calendar 2021】[Feature #17576] Partial Functions (procs, lambdas)【2日目】

【一人 bugs.ruby Advent Calendar 2021】[Feature #17576] Partial Functions (procs, lambdas)【2日目】 一人 bugs.ruby Advent Calendar 2021 2日目の記事になります。 今回はブロック構文に in を使ったガード節を追加する提案です。 [Feature #17576] P…

2021/12/02 今回の気になった bugs.ruby のチケット

今週は 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】[Feature #17768] Proposal: Downward assignments【1日目】

一人 bugs.ruby Advent Calendar 2021 1日目の記事になります。 さて、去年に引き続き今年も『毎週気になった bugs.ruby のチケットをまとめてみる』ということを継続してやっていました。 今週の気になった bugs.ruby のチケット と、言うことで今年も去年…

【Ruby Advent Calendar 2021】Ruby の TracePoint を使ってメソッド呼び出しをトレースしよう【1日目】

Ruby Advent Calendar 2021 1日目の記事です。 さてさて今年も Advent Calendar の時期がやってきましたね。 今年の Ruby Advent Calendar はありがたい事に1周目が既に埋まっており、2周目のカレンダーが立っています。 Advent Calendar を書いてみたい方が…

2021/11/25 今回の気になった bugs.ruby のチケット

今週は load メソッドにモジュールを渡せるようになりました。 前回のまとめ [Bug #17675] StringIO#each_byte doesn't check for readabilty while iterating IO がクローズしているのにイテレーションが処理されてしまうというバグ報告 require "stringio"…

2021/11/18 今回の気になった bugs.ruby のチケット

今週は Refinements 関連の便利メソッドのチケットが多いです。 前回のまとめ [Bug #17429] Prohibit include/prepend in refinement modules Refinements 時に include/prepend することを禁止するチケット 背景として以下の様に Refinements 時に include/…

Ruby 3.1.0 preview1 でたよ

でました。 リリースノートはこちら。 Ruby 3.1.0 Preview 1 Released NEWS rbenv を使っている方は、 $ rbenv install 3.1.0-preview1 してもらえるとローカルにインストールすることができます。 以下、気になった機能追加や変更点など。 新しい JIT コン…

2021/11/11 今回の気になった bugs.ruby のチケット

今週は 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% 遅くなったというバグ報告 実際の比較はチケットを見てね…

2021/11/05 今回の気になった bugs.ruby のチケット

今週は Proc#bind_call(obj) を追加する提案などがありました。 前回のまとめ [Bug #18282] Rails CI raises Segmentation fault with ruby 3.1.0dev supporting Class#descendants 開発版 Ruby と最新版の Rails でクラッシュするというバグ報告 最終的には…

2021/10/28 今回の気になった bugs.ruby のチケット

今週は 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…

Ruby でメソッドが呼び出された時にレシーバがあるかないかで処理を切り分ける

今日の Kaigi on Rails の kamipo さんの基調講演でそういう話がでてたのでやってみました。 要は User.where みたいに User. 付きか where だけで呼び出された場合で処理を切り分けたい的な話。 class User def self.where "レシーバなし" end def self.whe…

2021/10/21 今回の気になった bugs.ruby のチケット

今週は YJIT が Ruby 本体に取り込まれました。 前回のまとめ [Feature #6210] load should provide a way to specify the top-level module load メソッドに Module を指定できるようにする提案 以下のように特定のモジュールに対して load した Ruby のコ…

初参加&初登壇の RubyKaigi Takeout 2021 で Ruby のマクロの話をしてきたよレポート

書こう書こうと思って気がついたら1ヶ月立っていましたこんにちは。 (去年を除いて)今回が RubyKaigi 初参加&初登壇ということでいろいろと書き残しておこうと思います。 ちなみに今週末に以下のようなイベントで雑に話すので興味がある方がぜひぜひ参加…

2021/10/14 今回の気になった bugs.ruby のチケット

今週は feature チケットに関するトリアージのガイドラインの提案などがありました。 前回のまとめ [Bug #18250] Anonymous variables seem to break Ractor.make_shareable 以下のようなコードを実行すると Ractor.make_shareable で TypeError が発生する…

Ruby の debug-gem をつかってみた

RubyKaigi で発表があった debug-gem を使ってみたので覚書。 思ったよりもいろんな機能があった。 The Art of Execution Control for Ruby's Debugger by Koichi Sasada - RubyKaigi Takeout 2021 インストール $ gem install debug でインストールするか G…

2021/10/09 今回の気になった bugs.ruby のチケット

今週は Immutable モジュールを追加して不変なオブジェクトを明示化しよう、というチケットがありました。 前回のまとめ [Feature #18035] Introduce general model/semantic for immutable by default. 以下のように Immutable モジュールを定義して mixin …

vim-lsp で TypeProf の LSP と接続してみた

RubyKaigi からだいぶ時間が立ってしまっていますが、やってみました。 前提 Ruby 3.1.0-dev 環境 rbenv を使っていれば rbevn install 3.1.0-dev しておく TypeProf の lsp-test ブランチ を使用 Vim 側のプラグインは vim-lsp 競合しそうなので vim-lsp-se…