Ruby2.1.3が出たので今後を考える

Windows用のRubyインストーラであるRubyInstallerでRuby2.1.3がリリースされた。リリースされてしまった。Ruby2.1.3自体が9月19日リリースなのでつい最近のことだろうと思う。
http://rubyinstaller.org/downloads/
RubyInstallerはRuby2.1系について、テストでコケる問題があるのでそれが解消されるまではリリースしない、という姿勢であった。2.1.2の時点で1つ残ってて、trunkには入ったけどバックポートされないので様子見、としていた。遅くてもRuby2.2には入るし、この調子だと2.1系はリリースされないのかなーと思っていた。なので俺もRuby2.2が出るまでは何もしなくていいかなーなどと思っていたところに、突然のリリースである。
DXRubyはRubyInstallerで使えるバイナリをリリースする方針にしているので、2.1.3が出たとあっては対応せねばならない。最優先である。

現状は

うちのPCにビルド環境が無い。XPから7に入れ替えたあと、VCすらインストールしていない状態である。SDL2で遊んでいたのはRubyInstallerのDevkitを使っていた。
DXRubyに関しては1.4.1リリース以降特に何も無し。修正点のネタはあるが、急いで直さないといけないようなものは無い。
Rubyは1.8.7と1.9.2のサポートが終了した。来年2月には1.9.3のサポートも終わる。
Ruby2.2が今年の終わりごろにリリースされる予定。RubyInstallerも問題なければリリースされると思われる。
64bitのOSに変えると同時にPCを新調しようと思っている。
まあ、そんな感じ。

やりたいこと

・開発環境を整えてDXRuby1.4.1のRuby2.1.3対応バイナリをリリースする。
・Ruby2.1のRGenGCに対応してGCの効率を上げる。
・RubyInstallerのDevkit(mingw-w64)でビルドできるようにコードを修正する。
githubにコード管理を移行する。

問題点

・開発環境を作ってもPC新調したらやりなおし。めんどい。
・RGenGCに対応するにはTypedData化する必要があるが、それをするとRuby1.9系以下でビルドできなくなる。
mingw-w64でビルドすると動かない機能が一部あることが確認できている。修正できるかどうかは不明。
githubにコードを置くとエンコーディングutf-8になる。

どうするか

まあ、コツコツやる。
俺のポリシーである「時代の最後端を追いかける」というのは、時代遅れになったものは使われないが、時代遅れになっていない程度の枯れた技術には初心者が集まるためで、この領域に追随することが初心者に寄り添った活動を行うには丁度良いという意味である。そろそろサポートが切れるRuby1.9.3も現在では初心者にオススメするようなものではないので、DXRubyも継続してそれをサポートするような労力を割くつもりは無い。まあ、Ruby2.0用にバイナリがリリースされていないライブラリがあるのはわかっているのだが、そういうものは今後も新しいRuby用には出てこないので、どこかでカットしてやらないと未来永劫サポートし続けることになってしまうわけだな。そういうことで時代遅れになったものは無慈悲に切り捨てることにして、新しいものに対応していくことにする。
具体的には以下のような感じ。

・まず今のPCに開発環境を構築してDXRuby1.4.1のRuby2.1.3対応バイナリのリリース。
・Ruby1.8系用のコードを削除してRuby1.8系対応を終わる。
・TypedData化してRuby1.9.1系対応を終わる。
・WB_PROTECTED対応してRgenGCにやさしいコードにする。
・Devkitのmingw-w64でビルドできるようにコードを書き換える。問題点の調査と修正。
・コードの日本語のエラーメッセージを英語に修正してgithubに移行。
・Devkitがあればgithubからソースを取得してgemでインストールできるように整備。

という感じでコードベースを大きく書き換えることになるのでここでDXRuby1.6.0リリースである。機能的なところは特に変更する予定は無いが、手元のメモに積みあがっているものを少し実装するかもしれないし、しないかもしれない。判明しているバグは直すと思う。
mingw-w64でビルドできるようになれば64bitでもおそらくそのまま動作するのではないかと言う気がしている。俺のPCが64bitになればバイナリリリースできるだろうし、ならなくてもソースからインストールしてもらえば使えるはず。

スケジュール的な話

適当である。適当である。大事な話なので(ry
とりあえずRuby2.1.3対応に障害は(めんどいことを置いとけば)無いので、まずはそこから。
その後の項目は作業量がかなりあると予想しているので、ぼちぼちやっていくしかない。どうせgithubに移行できるようになるタイミングまでリリースもできないわけで、作業が終わり次第のリリースとなる。いつごろになるかと言うと、まあ、Ruby2.2よりかは後になるだろう。従ってDXRuby1.4.1のRuby2.2対応バイナリもリリースすることになると思う。Ruby1.9系のサポートを切るのはRuby1.9.3のサポートが切れた後じゃないと言い訳が立たないので、DXRuby1.6はそれより後になるかもしれない。ひどい理由である。

おしまい

なんとゆーか、そればっかやってるわけでもないので進捗は遅いだろう。仕事もしてるし。DXRubyでメシが食えるようになったらいいのになあ・・・とは思わないが。趣味じゃなくなっちゃうからね。
意外にSDL2を使ったやつが先にリリースされちゃったりして、しかもそっちのほうが良かったりするかもしれない。それどころか他の人が作ったもっと良いものが出ちゃうかもしれない。実際よさげなのあってひそかに期待してたり。
でもまあ、とりあえずこんな今後の展開を考えてて、最新のRubyにはまだまだ対応していこうと思ってはいて、ちょっと古臭くなってきちゃったかもしれんけどメンテは続けていくよ〜てなお話でした。