12/25 の前に 4.0.0 のプレビューが出るということもあり、Bundler でやっていた 非互換が入る変更の有効化と同様に RubyGems についても3-5年、なんなら10年級で deprecate していたメソッドを全部消した。
gem query command by hsbt · Pull Request #9083 · ruby/rubygems事前調査では最後の has_rdoc= を使っている gemspec が微妙にあるような気配があり、そのままだと gem build できないよなあ、でもそれくらいは消してくれないかなあ、とも期待しているので一旦消しつつ、利用者が困る(=作者がどうとかという問題ではない)場合は戻すということにした。
やっと積んである 100 分 de 名著シリーズを読破した。えらい。
今回はドラキュラ伯爵ことドラキュラのオリジンの小説。こういう話というのはなんとなくは知ってたけど、それがアイルランドとイギリスを対比した話とか、自分たちにとって異物なる存在を排除する行動心理などまで読み取るのは解説されないとわからんものだなあ、とちょっと感心した。
11月は再放送でお休みなので、残りの期間は引き続き積読消化を頑張る。最近本は買って満足、ということが増えていて本当に良くない。
これも島根往復で消化できた積読本。番組で見た後の読書になるのでほぼほぼ内容は知っているという前提であらためて読んでみると、福沢諭吉のように振る舞えるのなら楽に生きれるのだろうなあとは感じたりした。
星の王子さまもだけど、福沢諭吉とか学問のすすめ、以外に何も知らないというところに、こういう本も出しているのだな、というのは良い発見だったと思う。
藝大の賛助会員制度であるところのフレンズ会員というのを毎年継続しているのだけど、9月ごろにクレジットカードが期限切れで更新できなかったので新規に登録し直して欲しいという機械メッセージが到着したので、しょうがないなと登録し直したのに、12月にクレジットカードで引き落としします、というメッセージが届いてなんじゃこりゃと問い合わせていた。
どうやら過去にクレジットカードの期限切れで新規に登録し直し、というのをやったのが12月にあり、それらのアカウントが合計で3つ作成されていて、それぞれで更新やクレカ判定が行われているというカオスな状況なのが原因だった。とりあえず支払い済みのものをプライマリとして、他は全部無効=解約ということにして処理してもらうことにした。
このクレカの期限切れで更新はシステム上できないから新規に作って、というのが諸悪の根源と思うが色々難しいのだろうなあ。
12月にリリースされるのは 4.0 と決まった後の初の開発者会議。ちょっと大きめの変更を入れるための議論の機会としては最後の機会。
https://bugs.ruby-lang.org/issues/21647
準備会で書いた通り、自分が特に何かを持ち込んだわけではないので途中に雑なコメントをするって感じではあった。
https://bugs.ruby-lang.org/issues/21675
一つ、議題ではないけど Pattern Matching をあちこちに入れていこうという提案に対して、どういう判断というか方針でやると良いのかねえというのが悩ましい感じではあった。
deconstuct_key はそのオブジェクトを再構築できるような要素で構築すべきという akr さんの話があったので、to_a とか to_s なインスペクトっぽいものがすでに用意されていて、それと同じ内容の変更は「まあいいか」と自分の判断でマージしてしまったけど、そうでもないようなやつ、たとえば Gem::Version なんかはむずいな〜って感じだった。
https://github.com/ruby/rubygems/pull/9060
ひとまず、現状でもみんながこんな理解なので、進めたい人はいろんな人と話しながらなんとなくの方針を形作っていくと先に進むかもしれません。やる気がある人は頑張って。
引き続き積読の消化。これも島根往復の飛行機の中で読んだ。
サン テグジュペリというと星の王子さましか知らず、他の本も書いてたんだ、というくらい酷い認知なのだけど、自分自身の経験とそれを元にした世界の構築って辺りが面白かったと思う。おとぎ話というか、空想の冒険記みたいな作品ばかりだと勝手に思っていたので、こういうのもあるんだな、というのは発見だった。
使っていた eSIM の削除に続いて端末自体の初期化もやっておいた。というのも、Android の Beta を使い続けていたので、手放すにあたって安定バージョンに戻さないとな、と思いきや Beta プログラムから抜けた時点で安定バージョンにロールバックかつ、端末の初期化が自動で行われるということだった。
ブラウザからプログラムからの離脱を選んでから、少しするとシステムアップデートとして端末の初期化実行が促されるので言われるがまま従って進めて終わり。あとはこれをどこで手放すか、だけどメルカリはだるいのでソフマップ系かなあ...。
tenderlove が rubygems の開発をちょくちょくやってくれていて、bundler のテスト実行を20%くらい速くするなどありがたいところに Ractor で動かすために定数を freeze したよ、テストも追加したよ、というのがあり merge したら Ruby 本体のテストで動かなかったので対応した。
https://github.com/ruby/rubygems/pull/9069
Ractor のテストをするためのヘルパーメソッドとして assert_ractor という別プロセスを立ち上げて実行する悪魔の assertion が ruby/ruby には用意されているんだけど、それの使い方というか Ractor への渡し方が異様に難しくて、中で使うクラスなどは全部明示的に渡さないとダメだし、テストのためにカスタムアサーションを使っている場合はそれを渡した上で include しないと、って感じでめちゃくちゃ時間がかかってしまった。
ひとまず今回あれこれやってだいぶわかった気はするので、どっかにドキュメントとして書いておくかな。本当に大変だった...。