2021/07/01 今週の気になった bugs.ruby のチケット

今週はエラー箇所をハイライトする error_highlight という gem が本体に追加されました。

[Feature #17930] Add column information into error backtrace

  • エラー箇所をハイライトする機能の提案
  • error_highlight という gem として取り込まれた
  • Ruby 3.1.0 以降では以下のようにエラー箇所が ^ でハイライトされるようになった
$ ruby -e '"1234".times { }'
-e:1:in `<main>': undefined method `times' for "1234":String (NoMethodError)

"1234".times { }
      ^^^^^^
$
  • ただし、エラー行にマルチバイト文字や一部の記号が含まれている場合うまくハイライトされないので注意
$ ruby -e '1.あいうえお {}'
-e:1:in `<main>': undefined method `あいうえお' for 1:Integer (NoMethodError)

1.あいうえお {}
 ^^^^^^
$
$ ruby -e '"\"#{1234}\"".times { }'
-e:1:in `<main>': undefined method `times' for "\\"1234\\"":String (NoMethodError)

"\\"#{1234}\\"".times { }
             ^^^^^^
$
  • つらいので直したいが直すのもつらい…

[Feature #17881] Add a Module#const_added callback

  • 背景としては zeitwerk でオートロードを実装する際に TracePoint を使っているのだが TracePoint はデバッグ用の API なので本番で使われるのはつらい
  • 他にも beybug などと競合する
  • これを解消する手段として Module#const_added を追加しようという提案
    • method_added みたいに未定義の定数が追加された時にコールバックするメソッド
  • 最適化や MJIT 側の対応について議論などしていたが1ヶ月ぐらい前で止まっちゃってるので特に進展はなさそう…