マンションの家の西側のドコモの電波状況が通話できなくなるくらい悪くて、電話が来たらダッシュで東側の部屋に移動する、見たいのがだるくてしょうがなくなったので、ドコモのサポートページから電波悪いです、という報告をしてからリピータという機器の貸与申請をして設置した。
ぱっと見はルータっぽいけど、中身がスカスカということもなく結構重くて足に倒れてきたらめっちゃ痛そうって感じだった。これを設置してもアンテナMAXにはならないのだけど、通話はできるようにはなった、って感じだったので置いた意味があってよかった。
今月もぼちぼちと開催。特に出すアジェンダはないなあって感じだったのでがやり担当。
https://bugs.ruby-lang.org/issues/21379
最近は Windows や CI の toolchain 周りばっかいじってて、特に誰かに相談して決めなくてはならない、ということがないのでいいのやら悪いのやら。
今回は届いて直ぐ読んだ。あらゆるメディアが大阪特集ということもあって、その流れで大阪特集。先月に実際に行ったところもあれば、時間がなくて諦めた京都で開催されているポーランドの特別展などの紹介もあってよかった。
特集には大阪の街並みの建築や名店というようなところも紹介されていて、この辺をゆっくりとぶらつくような機会はまた作っていきたい。juneboku もいるし。
先月は Windows でターミナルを使うことが多くて、macOS に比べると pwsh に慣れてないというのを差し引いても上手く使えてないって感じがすごかったので fzf を真面目に設定した。
fzf のバイナリは scoop を使ってインストールした後に PSFzf という pwsh 用の fzf プラグインを入れた。
https://github.com/kelleyma49/PSFzf
上の README.md だけだと何をやればいいのか分かりにくいのだが、まずは PSGallary から以下のコマンドでインストールする。
Install-Module -Name PSFzf -RequiredVersion 2.6.7
その後に以下の内容を自分の Documents などの下にある pwsh のプロファイルに書く。
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
Set-PSReadLineKeyHandler -Key Tab -ScriptBlock { Invoke-FzfTabCompletion }
これで Ctrl-r
とか tab tab tab! とかで fzf が起動する。
世界で僕くらいしか困ってないと思うのだが使っている Ruby に同梱されている default gems かつ C 拡張なライブラリ、例えば stringio とか openssl などと同じバージョンの gem を別途 gem install なり、bundle install で入れていると gem pristine を実行しても rebuild されないという問題がある。
https://github.com/rubygems/rubygems/issues/8746
前からこの事象は知っていて、めんどいなあと思いつつ gem uninstall
して default gems のやつを使うようにしていたんだけど、真面目に調べてみた。pristine で実行する対象の gemspec を取り出すときに Gem::Specification
の name, version しかみてないので、default gems の方を使ってしまい、gem install したほうがスキップされるのでいつまで経っても rebuild されない。
この話、gem pristine なんてしないよ、って人が世界の 99.9% なんで問題はないと思うけど、ruby-dev
暮らしをしていると https://github.com/ruby/ruby/commit/ea8b53a53954c2f34b1093ae2547951ae0e1fe8c みたいに ABI_VERSION が上がると、使っている C 拡張が全滅するので gem pristine --only-missing-extension
を実行して rebuild しなくてはいけない、しかし openssl などは rebuild されない、ということでだるいのだった。
RubyGems の方はパッチはあるので雑に直せるが、C 拡張かつ default gems ということもあってテストをどう書いたものかアイデアがないのだよなあ。うーん。
Matz が参加するのが少し後だったので、それと前後して Namespace の機能を示す新しい名前って何があるかねえというのを雑談していた。
https://bugs.ruby-lang.org/issues/21385
まだ書かれていない出てきた案としては World
や Verse
とか、他にはなんちゃらScope、なんちゃらspace とか、2語をくっつけた感のはイマイチとか、好き勝手話してブレストしていた。難しいもんだねえ。
6/5 に開催予定の Ruby 開発者会議のアジェンダを眺めたり、ここ1ヶ月にあった bugs のアップデートを眺めて議論すると進みそうなものをピックアップしたりしていた。
bugs の issue は全部目を通してはいるけど、「で、どうしたいの」がないものとか「で、誰がやるのこれ」みたいなやつとか、この先どう進めりゃいいんだこれ、ってのが結構あってなかなか大変である。
この日は Discord に集まってゆらっと参加していた。
https://asakusarb.esa.io/posts/1252
自分は、というと前から試そう試そうと思っていた abi-compliance-checker
がどういう動作になるのかを確かめていた。まずは abi-dumper
というものを使って比較のためのダンプファイルを作る。
hsbt@ubuntu:~/dev$ abi-dumper ruby-3.3.8/ruby -o ruby-3.3.dump
WARNING: module version is not specified (-lver NUM)
Reading debug-info
WARNING: incompatible build option detected: -O3 (required -Og for better analysis)
Reading v-tables
/home/hsbt/dev/ruby-3.3.8/ruby: cannot dynamically load position-independent executable
Creating ABI dump
The object ABI has been dumped to:
ruby-3.3.dump
hsbt@ubuntu:~/dev$ abi-dumper ruby-3.4.4/ruby -o ruby-3.4.dump
WARNING: module version is not specified (-lver NUM)
Reading debug-info
WARNING: incompatible build option detected: -O3 (required -Og for better analysis)
Reading v-tables
/home/hsbt/dev/ruby-3.4.4/ruby: cannot dynamically load position-independent executable
Creating ABI dump
The object ABI has been dumped to:
ruby-3.4.dump
Warning は気になるけど、正確性というよりはとりあえず結果を見たいということなのでこのまま進める
hsbt@ubuntu:~/dev$ abi-compliance-checker -old ruby-3.3.dump -new ruby-3.4.dump -l libruby
Preparing, please wait ...
Comparing ABIs ...
Comparing APIs ...
Creating compatibility report ...
Binary compatibility: 92.7%
Source compatibility: 92.4%
Total binary compatibility problems: 156, warnings: 71
Total source compatibility problems: 92, warnings: 45
Report: compat_reports/libruby/X_to_Y/compat_report.html
作成された html を眺めると、3.3 から 3.4 にかけて消えたものとか、データ構造などが抽出されたので「なるほどね」とはなった。しかし、このなるほどね、をちゃんと意味のある形、例えば NEWS などで「この構造体が変わりましたよ」とか「関数の引数がなくなりましたよ」とかで活用するにはどうするといいんだろうねえ。