Ruby
普段何気なく書いている Ruby なんですが実はメソッドの引数の種類って思ったよりも多くてまとめてみました。 実際自分も Ruby の AST をいじっている時に引数の種類が多すぎて混乱したのでまとめておくと色々と役に立つかなーと。 と、軽い気持ちで書いてみ…
今週はブロックの引数で Hash が分割して受け取れなくなったチケットがありました。 [Misc #18609] keyword decomposition in enumerable (question/guidance) Ruby 3.0 から次のように Hash をキーワード引数で受け取れなくなったというチケット drafts = […
今週はラテン文字を String#downcase したときのバグ報告がありました。 前回のまとめ [Feature #18603] Allow syntax like obj.method(arg)=value 次のようのような構文を許容する提案 obj.method(arg) = value これは以下と同じ意味になる obj.__send__(:m…
今週はアクセシビリティ関連のバグ報告がありました。 前回のまとめ [Bug #18600 ] Aliased method visibility issue on Ruby 3.1 次のように親のメソッドを public にしてからalias_method すると private に戻ってしまっているというバグ報告 module M pri…
今週はパターンマッチの find 検索を正式に導入するチケットがありました。 前回のまとめ [PR reline] Proposal for quick shell execution irb で . から始まるコマンドを入力した時に shell コマンドが実行されるようにする提案 pry だとこの機能が実装さ…
今週はエンコーディングの ASCII_8BIT という名前を BINARY に変える提案がありました。 前回のまとめ [Feature #18576] Rename ASCII-8BIT encoding to BINARY エンコーディングの ASCII-8BIT を BINARY という名前に変更する提案 以下のようなエラーメッセ…
今週は String 周りでメソッドを追加するチケットの話などがありました。 前回のまとめ [Feature #18564] Add Exception#detailed_message [Feature #18438] Add Exception#additional_message to show additional error information で議論した結果をまとめ…
Ruby 3.1 の小ネタです。 Ruby 3.1 で objspace/trace というライブラリが追加されました。 このライブラリを require すると p で出力するときに『オブジェクトが生成された箇所』が一緒に表示されるようになります。 # このライブラリを require するとオ…
今週はパターンマッチでインスタンス変数で値を束縛できるようにする話です。 [Feature #18408] Allow pattern match to set instance variables パターンマッチでインスタンス変数への束縛を許容したいチケット 現状はパターンマッチでインスタンス変数に対…
今週は CRuby を WASI に対応する変更がマージされました。 前回のまとめ [Feature #18462] Proposal to merge WASI based WebAssembly support CRuby を WASI に対応するチケット WASI は WebAssembly をブラウザではなくて OS で動かすための共通のプラッ…
今週はレシーバに定義されている定数名とその値の Hash を返すメソッドの提案がありました。 前回のまとめ [Bug #18475] Yielding an element for Enumerator in another thread dumps core 以下のコードを実行すると segv するというバグ報告 def run Threa…
あけましておめでとうございます。 今年も引き続き書いていきたいと思います。 今週は Refinement 周りの便利メソッドが追加されたり匿名な * ** 引数をフォワードする機能がマージされました。 前回のまとめ [Feature #18460] implicit self for .() syntax…
今年も無事にクリスマスに Ruby がリリースされました! Ruby 3.1.0 リリース NEWS Ruby 3.1 で追加される機能などは以下のスライドで紹介しているので気になる人は読んでみてください。 Ruby 3.1 に備えよう! by @pink_bangbi Ruby 3.1 へ移行するときの注…
一人 bugs.ruby Advent Calendar 2021 25日目の記事になります。 今日で Advent Calendar も最後という事で今回は今年みた Ruby のバグをいくつか紹介してみようと思います。 またこれから紹介する修正済みのバグは Ruby 3.1 ではなくて古い Ruby でもバック…
一人 bugs.ruby Advent Calendar 2021 24日目の記事になります。 今日は Ruby 3.1 で入る予定の Hash の値の省略記法で意図しない挙動がある話しです。 [Bug #18396] An unexpected "hash value omission" syntax error when without parentheses call expr …
Rubyist近況 Advent Calendar 2021 23日目の記事になります。 近状ということでこの記事では今年の活動履歴をまとめてみたいと思います。 Burikaigi2021 今年の1月に Burikaigi2021 というイベントがあり、そこで Ruby 2.0 ~ Ruby 3.0 でどう移り変わってい…
今週は Ruby 3.1 で Class.descendants が Revert されたりしました。 前回のまとめ [Feature #14394] Class.descendants .descendants はレシーバが『継承されている』クラスの一覧を返すメソッドの追加の提案 class A; end class B < A; end class C < B; …
一人 bugs.ruby Advent Calendar 2021 23日目の記事になります。 今日は Psych が 4.0.0 にメジャーアップデートすることで非互換になる話です。 [Bug #17866] Incompatible changes with Psych 4.0.0 Psych.load を Psych.safe_load に置き換える PR がマー…
一人 bugs.ruby Advent Calendar 2021 22日目の記事になります。 今日は ! 単項演算子を send で呼び出す時の話です。 [Bug #18246] send does not work for unary ! operator when operator isn't a literal symbol ! 単項演算子を send で呼び出すとエラー…
一人 bugs.ruby Advent Calendar 2021 21日目の記事になります。 今日は prepend の挙動がちょっと変わる話です。 [Bug #17423] Prepend should prepend a module before the class Ruby 3.0 では継承リスト周りの処理が色々と改善されました。 が、結果 #pr…
一人 bugs.ruby Advent Calendar 2021 20日目の記事になります。 今日は Hash リテラルでキーが重複したときの話です。 [Bug #17719] Irregular evaluation order in hash literals Hash リテラルでキーが重複している場合に以下のような評価順になります。 …
一人 bugs.ruby Advent Calendar 2021 19日目の記事になります。 今日はバックトレースに引数情報も追加する話です。 [Feature #17743] Show argument types in backtrace バックトレースに引数情報も追加する提案です。 例えば以下のようなコードを実行する…
一人 bugs.ruby Advent Calendar 2021 18日目の記事になります。 今日は 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% 遅くなったとい…
一人 bugs.ruby Advent Calendar 2021 17日目の記事になります。 今回はメソッドオブジェクトに対してアクセシビリティの情報を取得するメソッドの話です。 [Feature #11689] Add methods allow us to get visibility from Method and UnboundMethod object.…
今週は {Method,UnboundMethod}#{public?,private?,protected?} が追加されました。 前回のまとめ [Bug #18405] Regression in Struct member setter method parameters Struct の最適化をした際にデグレしているというバグ報告 S = Struct.new(:foo) S.inst…
一人 bugs.ruby Advent Calendar 2021 16日目の記事になります。 今日はArray に prepend してる #[] が呼び出されないバグの話です。 [Bug #17571] prependしたArray#[] が反映されない 以下のように Array に prepend してる #[] が呼び出されないことがあ…
一人 bugs.ruby Advent Calendar 2021 15日目の記事になります。 今日は同名のメソッドと変数を定義した状態の話です。 [Misc #18125] A strange behavior when same name variable/method coexist issue. 次のように同名のメソッドと変数を定義した時に奇妙…
一人 bugs.ruby Advent Calendar 2021 14日目の記事になります。 今日はエンドレスメソッド定義の本体が statement だった場合にエラーになる話です。 [Feature #17398] SyntaxError in endless method 以下のようにエンドレスメソッド定義の本体が statemen…
一人 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 12日目の記事になります。 今回は特定の条件下で NoMethodError#message がパフォーマンス的にコストがかかる話です。 [Misc #18285] NoMethodError#message uses a lot of CPU/is really expensive to call NoMethodEr…