前回の記事でチラッと触れたものの正式な告知をしていなかったのでここで現状をまとめます。
もともと MYOS の実装には Rust の nightly の機能が必要だったため、 nightly の機能を積極的に使っていました。
nightly の機能は安定化されていないため、今まで動いてたコードが突然動かなくなる(使えた機能が使えなくなる)というケースが安定版に比べると高い頻度で発生します。 過去に何度か修正を余儀なくされたアップデートがあったと記憶しています。
さて、数ヶ月前のアップデートにより、とある機能*1が使えなくなり、多くの修正が必要になりました。
影響範囲が大きすぎて正確に把握できていませんが、影響を受ける箇所によっては全面的に設計し直す必要があるかもしれないほど根本的に依存していました。
Rust は先進的なバージョン管理を備えたビルドシステムを標準で持っているのでとりあえず今すぐ動いて欲しいなら問題の起きないバージョンで固定することでビルド自体は可能です。 しかし、バージョン固定することで今後実装される新機能を使うことができなくなります。
今後の新機能に対応できなくなるのはプロジェクトの方針として容認できないため、基本的には*2バージョン固定しません。 一方、現在のバージョンでは正常にビルドが通らないのも事実です。
となれば、全面的に書き直すしかありません。
一方で、この規模のプロジェクトを全面的に書き直すほどのモチベーションがすでになくなっているのも事実です。 自発的なリファクタリングならともかく、ライブラリの都合で書き直すなら他にやりたいことがたくさんあります。 人生は短すぎる。
ということで、 MYOS の開発はしばらくお休みします。
モチベーションが回復したら最新の Rust でビルドできるように全面的に書き直します。 しかし、それがいつになるかは現状お約束できません。
nightly の機能は突然消えてしまうことがあるので、今後はなるべく使わないようにしようと思います。
Rust はベアメタルの開発に nightly が必要になることが多いですが、はやく nightly がなくても普通に使えるようになって欲しいと思います。