Skip to main content
QUICK REVIEW

[論文レビュー] Rust Distilled: An Expressive Tower of Languages

Aaron Weiss, Daniel Patterson|arXiv (Cornell University)|Jun 7, 2018
Logic, programming, and type systems参考文献 11被引用数 6
ひとこと要約

この論文は、リージョンに基づく線形能力とゴーストリージョンを用いて所有権と借用をモデル化する、段階的に表現力が向上する言語の塔として構造化されたRustの形式的意味論Oxideを紹介する。これにより、メモリ安全の正確な推論が可能となり、Rustプログラムの検証、コンパイラ最適化、言語拡張の基盤が提供される。

ABSTRACT

Rust represents a major advancement in production programming languages because of its success in bridging the gap between high-level application programming and low-level systems programming. At the heart of its design lies a novel approach to ownership that remains highly programmable. In this talk, we will describe our ongoing work on designing a formal semantics for Rust that captures ownership and borrowing without the details of lifetime analysis. This semantics models a high-level understanding of ownership and as a result is close to source-level Rust (but with full type annotations) which differs from the recent RustBelt effort that essentially models MIR, a CPS-style IR used in the Rust compiler. Further, while RustBelt aims to verify the safety of unsafe code in Rust's standard library, we model standard library APIs as primitives, which is sufficient to reason about their behavior. This yields a simpler model of Rust and its type system that we think researchers will find easier to use as a starting point for investigating Rust extensions. Unlike RustBelt, we aim to prove type soundness using progress and preservation instead of a Kripke logical relation. Finally, our semantics is a family of languages of increasing expressive power, where subsequent levels have features that are impossible to define in previous levels. Following Felleisen, expressive power is defined in terms of observational equivalence. Separating the language into different levels of expressive power should provide a framework for future work on Rust verification and compiler optimization.

研究の動機と目的

  • 研究者や学習者にとって理解しやすい形で、所有権と借用の本質を捉えた形式的で合成的なRustの意味論を提供すること。
  • Rustの型システムと borrow チェッカーの複雑さに対処するため、表現力が段階的に向上するレベルに意味論を分離すること。
  • 厳密な基盤を提供することで、将来の形式的検証、コンパイラ最適化、言語拡張の研究を可能にすること。
  • 形式的リンクと型システムを通じて、Rustと他の言語間の安全な相互運用性を支援すること。
  • 低レベルの推論を形式的モデルに根拠づけることで、不安全コードのガイドライン開発を支援すること。

提案手法

  • 各リージョンが値へのアクセス能力を表すリージョンに基づく線形能力を用いて、Rustの所有権と借用をモデル化すること。
  • 物理的メモリ位置とは異なる、借用中の別名関係を追跡するための「ゴーストリージョン」を導入すること。
  • リージョンコンテキストと別名関係を追跡するインストルメンテッド操作的意味論を用いて、進行性と保存性を証明すること。
  • 観察的同等性に基づき、各レベル(Oxide 0, 1, など)が以前のレベルでは表現できない表現力を追加する言語の塔を設計すること。
  • Scalaを用いたプロトタイプ型チェックャーの実装と、証明開発のための初期Coq形式化の開始。
  • ゴーストリージョン情報を削除するためのエラージャ手順の計画と、インストルメンテッド意味論とエラージャ後意味論の間の操作的同等性の証明。

実験結果

リサーチクエスチョン

  • RQ1観察的同等性を保ちつつ、表現力が段階的に向上するようにRustの形式的意味論を構造化する方法は何か?
  • RQ2ゴーストリージョンを含むリージョンに基づく線形能力は、手動での能力渡しを必要とせずに、Rustの所有権と借用を正確にモデル化できるか?
  • RQ3言語の塔は、Rustプログラムのモジュラー推論と検証をどのように支援できるか?
  • RQ4物理的リージョンとゴーストリージョンの両方をモデル化する意味論において、型安全とメモリ安全に関するどのような形式的保証を確立できるか?
  • RQ5このような意味論は、安全な言語拡張と他の言語との相互運用性の基盤としてどのように機能できるか?

主な発見

  • Oxideは、リージョンに基づく能力とゴーストリージョンを用いて所有権と借用をモデル化し、別名関係と能力の移譲を自動的に追跡可能にする。
  • 意味論は言語の塔として構造化されており、各レベルが以前のレベルでは表現できない機能を追加しており、観察的同等性に基づくFelleisenの表現力の概念を支持する。
  • Oxide 0の進行性と保存性の証明が進行中であり、リージョンコンテキストと別名関係を追跡するインストルメンテッド意味論が用いられている。
  • Scalaを用いたプロトタイプ型チェックャーと初期のCoq形式化が整備されており、実験と将来の証明開発を支援する。
  • このフレームワークは、将来の安全な相互運用性、言語拡張(例:安全なマルチパーティ計算のための拡張)、形式的不安全コードガイドラインの開発を可能にする。
  • ゴーストリージョン情報を削除するエラージャ手順の計画がなされており、インストルメンテッド意味論とエラージャ後意味論の間の操作的同等性を証明する予定である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。