Rustプロジェクト、大規模な言語拡張対応など「型チーム」で実装する2027年までの計画を発表:型システムの定義の形式化を進める
Rustプロジェクトは、2022年に設立された「型チーム」のこれまでの活動と今後の計画を紹介した。
オープンソースのプログラミング言語「Rust」を開発するRustプロジェクトは2023年1月20日(米国時間)、2022年5月末に設立された「型チーム」(types team)のこれまでの活動と今後の計画を紹介した。
Rustプロジェクトは「Rustはユーザーベースや人気が拡大し、成長している。それとともに、この言語をサポートする持続可能な型システムの必要性がますます明白になってきた。Rustプロジェクトはこのニーズに対応するために、新しい型チームを発足した」と説明している。
Rustプロジェクトによると、型チェッカー(変数に型を割り当てる方法のセマンティクスと実装を緩やかに定義)、トレイト解決(どの型にどのトレイトを定義するかを決定)、ボローチェック(Rustの所有権モデルが常に成立することを証明)は、いずれも「型システム」として考えることができ、型チームがこれらを担当している。
トレイトは、他の言語でよくインタフェースと呼ばれる機能に似たものであり、特定の型に存在し、他の型と共有できる機能について、Rustコンパイラに知らせる。トレイトにより、共通の振る舞いを抽象的に定義できる。
型チームは、Rustの言語チームとコンパイラチームの共同作業チームであり、2018年ごろから活動していたトレイトワーキンググループを基本的に包含している。また、Poloniusワーキンググループ(主に、Poloniusボローチェックライブラリの設計と実装に取り組んできた)の活動も、型チームが担当することになった。
さらに、言語チームは、型システムの設計の一部を型チームに委任している。コンパイラチームは、トレイトシステムの実装を定義し、メンテナンスする責任を型チームに移譲している。
Rustプロジェクトによると、言語チームとコンパイラチームは従来、型システムに関連するRustの健全性の問題を評価、修正する特別な役割を担ってきた。両チームから一部の権限を移譲された型チームの発足により、2つの別々のチームの調整を必要とせず、1つのチームが健全性の問題をほぼ独立して評価、修正できるようになり、健全性の穴をふさぐことが容易になった。
Rustの型システムの形式化
型チームは、Rust言語を発展させていく上で重要な、型システムの定義の形式化にも取り組み始めている。この取り組みは、「a-mir-formality」という造語で呼ばれている。
また型チームは、トレイトソルバーをインツリーで書く取り組みも始めている。この新しいトレイトソルバーは、a-mir-formalityよりも範囲が限定されている。型システム全体を包含することは意図されておらず、モジュール化が重視されている。
新しい機能
新しい機能の提案や設計は、技術的には型チームではなく、言語チームの担当だが、型チームが設計に貢献した主要な機能や機能セットが幾つかある。これらは型システムと深く関わっており、例として以下のものがある。
- ジェネリック関連型(GAT:Generic Associated Types)
- 型エイリアス実装トレイト(TAIT:Type Alias Impl Trait)
- トレイトアップキャスト
- ネガティブ実装
- トレイトの戻り位置実装トレイト(RPITIT:Return Position Impl Traits In Traits)とトレイトの非同期関数(AFIT:Async Functions In Traits)
ロードマップ
Rustプロジェクトは型チームの活動について、2023年夏、2023年末、2024年末、2027年末の4段階(半年、1年、2年、5年)に分けて、以下のように目標を設定している。Rust言語が必要とする新機能に対応でき、健全でテスト可能な、文書化された型システムを維持できるプラットフォームの構築を目指すとしている。
2023年夏
- 現在取り組んでいる新しいトレイトソルバーがテスト可能になる
- a-mir-formalityがRustのテストスイートでテスト可能になる
- TAITとRPITIT/AFITの両方が安定化するか、安定化の途上にある
2023年12月
- 新しいトレイトソルバーが既存のトレイトソルバーの一部を置き換える。ただし、どこでも使われるわけではない
- 新しいトレイトソルバーのためのオンボーディング計画(チーム向け)とドキュメントがある
- a-mir-formalityが言語設計プロセスに統合される
2024年末
- rustcとrust-analyzerが新しいトレイトソルバーを共有する
- 拡張可能なトレイトエラー用のクリーンなAPIが、少なくとも内部で利用可能になる
- 先進的な機能
- Poloniusが使える状態になる
- 上位のトレイト境界における暗黙の境界
- 実装トレイトが基本的にどこでも使える
- エディション境界の変更の可能性
2027年末
- (型)不健全な問題の解決
- ほとんどの言語拡張が簡単にできるようになり、大規模な拡張も可能になる
- a-mir-formalityがRustのテストスイートの99.9%に合格する
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- プログラミング言語「Rust」とは? "Hello, World!"で基本を押さえる
Rustはどのようなプログラミング言語なのでしょうか? 本連載のスタートとなる今回は、Rust言語の概略と、手元にRustの動作環境構築までを紹介します。導入で利用可能になるコマンドと、最初のHello, World!プログラムも取り上げます。 - Rustはどのくらい高速? Rust製超高速データ分析ライブラリって? 無料の電子書籍で学ぼう
人気過去連載を電子書籍化して無料ダウンロード提供する@IT eBookシリーズ。第99回はプログラミング言語Rustについての疑問に答える連載「WebエンジニアからみたRust」「Rustで始めるWebアプリケーション」をまとめました。 - モジュールとワークスペース――Rustのプロジェクト管理を理解する
Rustについて基本からしっかり学んでいく本連載。第13回は、モジュールをクレートに分割する方法、そして複数のパッケージから成るプロジェクトを管理するワークスペースの仕組みについて。