2022/06/30 今回の気になった bugs.ruby のチケット

今週は Module#autoload で意図しない定数が定義された時に対応するチケットがありました。 前回のまとめ [Feature #18815] instance_{eval,exec} vs Proc#>> 次のように Proc#>> した結果は instance_eval / instance_exec に適さない measure = proc { p "…

2022/06/23 今回の気になった bugs.ruby のチケット

今週はトップレベルで include したあとにクラス定義すると予期しないクラスを再オープンするというバグ報告がありました。 前回のまとめ [Feature #18832] Do not have class/module keywords consider ancestors of Object 次のように include M した後に …

2022/06/17 今回の気になった bugs.ruby のチケット

前回のまとめ [Bug #18826] Symbol#to_proc inconsistent, sometimes calls private methods #tap に & 渡しでメソッドを呼び出す場合に private や protected メソッドを呼び出す事ができるバグ報告 class Test protected def referenced_columns puts "hel…

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

今週は標準ライブラリをパターンマッチに対応させる提案がありました。 前回のまとめ [Feature #18821] Expose Pattern Matching interfaces in core classes Ruby のいくつかの標準ライブラリをパターンマッチに対応させるチケット 提案されているのは以下…

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

今週は除算の切り上げを行う Numeric#ceildiv を追加する提案がありました。 前回のまとめ [Feature #18809] Add Numeric#ceildiv 「除算の切り上げ」を実現する Numeric#ceildiv を追加する提案 「除算の切り上げ」とは、最も近い整数に切り上げられる除算…

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

今週は Refinements で protected されたメソッドが呼び出せないバグ報告がありました。 前回のまとめ [Bug #18806] protected methods defined by refinements can't be called Refinements で定義された protected がメソッドが呼び出せないというバグ報告…

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

今週はパターンマッチの #deconstruct を拡張する提案がありました。 前回のまとめ [Feature #18788] Support passing Regexp options as String to Regexp.new Regexp.new の第二引数にオプションを渡すことができる Regexp.new('foo', Regexp::IGNORECASE …

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

[Bug #18768] Inconsistent behavior of IO, StringIO and String each_line methods when return paragraph and chomp: true passed 以下のように String#each_line StringIO#each_line File#each_line に特定の引数を渡したときの挙動に一貫性がないという…

いまさら聞けない!波ダッシュと全角チルダ問題についてまとめてみた

元々のきっかけは以下のように Ruby で UTF-8 の波文字を SJIS に変換しようとしたらエラーになってしまいました。 # UTF-8 の 〜 文字を SJIS に変換するとエラーになる # error: `encode': U+301C from UTF-8 to Windows-31J (Encoding::UndefinedConversi…

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

今週は Array#undigits の提案がありました。 前回のまとめ [Feature #18762] Add an Array#undigits that compliments Integer#digits Integer#digits と対になる Array#undigits を追加する提案 Integer#digits は位取り記数法で表記した数値を配列を返す …

2022/04/29 今回の気になった bugs.ruby のチケット

今週は右代入を TracePoint でフックする場合のバグ報告がありました。 前回のまとめ [Bug #18753] lineno= is not returning an integer ARGF.send(:lineno=, 1) の戻り値が nil になっているというバグ報告 # これは 1 を返す p (ARGF.lineno=1) # => 1 # …

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

今週はレシーバに対して Kernel#p が呼び出せるようにする提案がありました。 前回のまとめ [Feature #18736] self-p for method chain 次のようにメソッドチェーンの間にレシーバを出力したいという要望チケット class Object def sp(method=nil, *args, &b…

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

今週は Kernel#then に引数を渡せるようにする提案がありました。 前回のまとめ [Feature #18690] Allow Kernel#then to take arguments Kernel#then に引数を追加する提案 通常はレシーバをブロックの引数として受け取るが 1.5.then{|x| Math.atan(x)} #the…

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

今週は MatchData#[] のバグ報告などがありました。 前回のまとめ [Bug #18670] MatchData#[start, length] pads nil values when negative start is given MatchData#[] にマイナス値を渡すと nil で埋めされた配列を返すバグ報告 # [-1, 5] は最後の値から…

Ruby 3.2.0 Preview1 が出た

Ruby 3.2.0 Preview1 が出ました。 RUby 3.1.0 Preview1 が去年の11月に出たことを考えると Ruby 3.2 の Preview1 は出るのが早かったですね? Ruby 3.2.0 Preview 1 リリース Ruby 3.2.0 Preview1 の新機能としては WASIベースのWebAssemblyサポート と Reg…

Ruby で新しい Unicode 規格にバージョンアップする時になにを行っているのかまとめてみた

Ruby は定期的に Unicode の新しい規格に対応しているんですがその時になにが行われているのかが気になったので調べてみました。 この記事では『Ruby の Unicode 14.0.0 対応がなにを行っているか』を追っていきたいと思います。 ちなみに Unicode 14.0.0 は…

2022/03/31 今回の気になった bugs.ruby のチケット

今週は正規表現マッチするときのタイムアウトを導入するチケットがマージされました。 前回のまとめ [Feature #17837] Add support for Regexp timeouts 正規表現を比較する時にタイムアウトの概念を導入するチケット 色々と議論があったが最終的にはタイム…

2022/03/24 今回の気になった bugs.ruby のチケット

今週は注釈付き代入演算子を提案するチケットなどがありました。 前回のまとめ [Feature #18626] 注釈付き代入演算子 ()= の提案 以下のような注釈付き代入演算子の提案になる class Object # 代入するときの処理をフックする def self.()= (what) what.is_a…

2022/03/17 今回の気になった bugs.ruby のチケット

今週はブロックの引数に関するバグチケなどチケットがありました。 [Bug #18635] Enumerable#inject without block/symbol will return values or raise LocalJumpError ブロック引数のない Enumerable#inject を呼び出すと『値が返ってくるか例外が発生する…

Ruby の呼び出し可能オブジェクトについて

メタプロRuby本を参考にしつつ Ruby の呼び出し可能オブジェクトについてまとめてみました。 呼び出し可能オブジェクトとは Ruby のブロックは『呼び出すメソッドに対して何かしらの処理を外から渡す』記法になります。 # 『配列の要素を2倍にする』という処…

Ruby の引数の種類をまとめてみた

普段何気なく書いている Ruby なんですが実はメソッドの引数の種類って思ったよりも多くてまとめてみました。 実際自分も Ruby の AST をいじっている時に引数の種類が多すぎて混乱したのでまとめておくと色々と役に立つかなーと。 と、軽い気持ちで書いてみ…

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

今週はブロックの引数で Hash が分割して受け取れなくなったチケットがありました。 [Misc #18609] keyword decomposition in enumerable (question/guidance) Ruby 3.0 から次のように Hash をキーワード引数で受け取れなくなったというチケット drafts = […

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

今週はラテン文字を String#downcase したときのバグ報告がありました。 前回のまとめ [Feature #18603] Allow syntax like obj.method(arg)=value 次のようのような構文を許容する提案 obj.method(arg) = value これは以下と同じ意味になる obj.__send__(:m…

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

今週はアクセシビリティ関連のバグ報告がありました。 前回のまとめ [Bug #18600 ] Aliased method visibility issue on Ruby 3.1 次のように親のメソッドを public にしてからalias_method すると private に戻ってしまっているというバグ報告 module M pri…

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

今週はパターンマッチの find 検索を正式に導入するチケットがありました。 前回のまとめ [PR reline] Proposal for quick shell execution irb で . から始まるコマンドを入力した時に shell コマンドが実行されるようにする提案 pry だとこの機能が実装さ…

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

今週はエンコーディングの ASCII_8BIT という名前を BINARY に変える提案がありました。 前回のまとめ [Feature #18576] Rename ASCII-8BIT encoding to BINARY エンコーディングの ASCII-8BIT を BINARY という名前に変更する提案 以下のようなエラーメッセ…

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

今週は String 周りでメソッドを追加するチケットの話などがありました。 前回のまとめ [Feature #18564] Add Exception#detailed_message [Feature #18438] Add Exception#additional_message to show additional error information で議論した結果をまとめ…

Ruby 3.1 でオブジェクトが生成された箇所が表示できるようになった

Ruby 3.1 の小ネタです。 Ruby 3.1 で objspace/trace というライブラリが追加されました。 このライブラリを require すると p で出力するときに『オブジェクトが生成された箇所』が一緒に表示されるようになります。 # このライブラリを require するとオ…

BuriKaigi2022 で Ruby のメタプロの話をしてきた

去年に引き続き BuriKaigi2022 で Ruby の話をしてきました。 Ruby のメタプログラミングで遊んでみよう by @pink_bangbi ぶっちゃけ直前までなに話そうかずーっと考えてて最終的には好きなことを話そうと思って前々から離すきっかけをうかがっていた Ruby …

2022/01/29 今回の気になった bugs.ruby のチケット

今週はパターンマッチでインスタンス変数で値を束縛できるようにする話です。 [Feature #18408] Allow pattern match to set instance variables パターンマッチでインスタンス変数への束縛を許容したいチケット 現状はパターンマッチでインスタンス変数に対…