C
はじめに 先日、Ruby Issue Trackerに以下のチケットが作成されました。 Feature #18481 Porting YJIT to Rust (request for feedback) 内容としては、昨年末にリリースされたRuby 3.1にマージされているYJITという新しいJITコンパイラをより開発しやすくす…
はじめに 少し前にFediverseのTLで「別業種とかからプログラマーになった話があるとよさそう」と盛り上がってた。 僕自身は社会人になってからプログラマーとして仕事してるので、その辺の経験とか経緯を記事にしてみると需要がありそうかなと思い、書いてみ…
はじめに Hamada.rbでCRubyのFloatクラスをbuiltinで書き直してみた記事です。どちらかといえば作業ログな内容です。 builtinとは? 過去にいくつか記事にしているので詳細はそちらを見て頂ければと思いますgamelinks007.hatenablog.com gamelinks007.hatena…
Ruby Issue Tracking System で見つけたチケットのバグを調べたときのあれこれをまとめたものです。ちなみに、調べたチケットはこれbugs.ruby-lang.org簡単に言うとruby-profでコードの挙動を追うと意図したものと異なっているみたい 挙動が違う箇所 Ruby 2.…
結論 builtinで複数のRubyコードを使うことができるようになる話。ようはRubyでRubyを高速化するのがよりやりやすくなる話。以前書いたこの記事をもっと深堀りしたものなので、もっとソフトな話を読みたい方はこちらを読んでいただければと思います。gamelin…
結論 ブロックを渡されているかどうかをチェックして真偽値を返すKernel#iterator?をdeprecatedにしようぜという話 Kernel#iterator? Kernel#iterator?はブロックが渡されているかどうかをチェックできるメソッドです。 def check if iterator? puts "Block …
結論 複数のクラスを実装しているRuby内部のCコードでbuiltinをいくつか組み合わせるとビルドできなくなる。 RubyでRubyを実装する 最近のRubyは「Ruby自体をRubyで実装することで高速化できる」という場面がある。その辺の詳しいことは以前記事にまとめたの…
結論 Ruby 2.7で以下のコードがSEGVする。 p **1 以下のコミットでmasterでは修正済み。github.comただ、まだバックポートはされていない模様。ちなみにバグ報告のチケットとしてはこちらbugs.ruby-lang.org Ruby 2.7でのSEGV Ruby 2.7では以下のコードでSEG…
はじめに Array#minimaxというメソッドがRuby 2.4から導入されていて、そのメソッドの実装を読んでいた時に思いついたArray#both_endメソッドの実用例についてつらつらと書いてみた記事。 なので、実際にRubyにそういうメソッドがあるわけではない。 実装 /*…
はじめに この記事は俺GW頑張ったというGWアドベントカレンダーの5月1日の記事です。 プログラミング言語Rubyにテストの修正やbuiltin対応などでパッチを投げてきた時の知見などを振りかえってみたかったので書いてみた。 やったこと テスト修正関連 そもそ…
はじめに この記事は以前書いた以下の記事で紹介したbuiltinを使ってFloat(arg, exception: true)というメソッドを再定義してみた記事になります。 gamelinks007.hatenablog.com やっていることは前回の記事とおおよそ同じです。前回と異なる点は、特定のク…
はじめに タイトルにもあるようにRubyのbuiltin(正式名称を知らないので呼び出し方法から拝借)というものを使ってRuby自体をRuby(とC)で実装してみた話です。 内容としてはRuby自体の実装に興味のある方向けの話になります。 builtinって? builtinとはRub…