2023年度メンター報告書 「Namespace on read」メンター報告書 # プロジェクト概要 Rubyに、通常のグローバルな階層化名前空間をもつモジュール等のライブラリを、読み込み時に規定した仮想的なトップレベル名前空間に読み込む機能を追加することを目的としてパッチ開発を行う。 この名前空間に読み込まれたライブラリはグローバルな名前空間とは独立した存在となるため、名前衝突の回避、共有されたモジュール・クラスの操作・変更に関する競合の回避、ならびに将来的にはアプリケーションが依存するライブラリ間でのバージョン競合の回避の実現を可能にすると期待している。 # 計画の達成状況 プロジェクトでは、名前空間の分離に必要な機能の検討、および実装が行われた。C実装を含む拡張ライブラリにも対応する名前空間の分離には困難も伴うが、果敢な挑戦の結果、動作するプロトタイプを実装した功績は大きい。また、既存クラスへの拡張を分離するためにはRefinementを利用する計画であったが、実際には適用できなかったため、独自の動作分離機構も実装している。 これらの成果はRubyKaigi 2024で発表されている。 # メンターとして果たした役割 複数回に渡り、名前空間の分離にはどのような振る舞いが求められるかを検討し、仕様検討を支援した。 # まとめ 本プロジェクト終了時点では、実装は荒削りであり、またインターフェースも明確化されていないが、実装が安定したあかつきには適切なインタフェースをデザインした上で将来のRubyに組み込むことが期待されるとの発表がRubyKaigi 2024のキーノートで発表された(メンターが発表した)。本機能が統合されたときにはRuby 4.0に上がることも期待される機能となった。