Skip to main content
QUICK REVIEW

[논문 리뷰] Rust Distilled: An Expressive Tower of Languages

Aaron Weiss, Daniel Patterson|arXiv (Cornell University)|2018. 06. 07.
Logic, programming, and type systems참고 문헌 11인용 수 6
한 줄 요약

이 논문은 오كس사이드(Oxide)를 소개하며, 영역 기반 선형 능력(capability)과 유령 영역(ghost regions)을 사용하여 소유권과 양도를 모델링하는 계층적인 표현력이 점차 증가하는 언어의 탑으로 구성된 루스트(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.

연구 동기 및 목표

  • 연구자와 학습자 모두가 접근할 수 있는 방식으로 소유권과 양도의 핵심을 포괄하는 형식적이고 구성적인 의미 이론을 제공하는 것.
  • 형식적 의미를 표현력이 점차 증가하는 수준으로 분리하여, 루스트의 타입 체계와 빌로우 체커의 복잡성을 다루는 것.
  • 엄밀한 기초를 제공하여 향후 형식적 검증, 컴파일러 최적화, 언어 확장 작업을 지원하는 것.
  • 형식적 연결과 타입 체계를 통해 루스트와 다른 언어 간의 안전한 상호운용성을 지원하는 것.
  • 저수준 추론을 형식적 모델에 기반하여 안전한 비안전 코드 가이드라인 개발에 기여하는 것.

제안 방법

  • 각 영역가 값에 대한 액세스 능력을 나타내는 영역 기반 선형 능력(capability)을 사용하여 루스트의 소유권과 양도를 모델링하는 것.
  • 물리적 메모리 위치와는 별개로, 양도 중 별칭 관계를 추적하기 위해 '유령 영역(ghost regions)'을 도입하는 것.
  • 영역 컨텍스트를 유지하는 인스트루멘티드 운영 의미 이론을 사용하여 진행성(progress)과 유지성(preservation)을 증명하는 것.
  • 관찰 등가성 기반으로, 이전 수준에서 표현할 수 없는 기능을 추가하는 각 수준이 표현력이 증가하는 언어의 탑(Oxide 0, 1 등)을 설계하는 것.
  • 스칼라(Scala)로 구현된 프로토타입 타입 체커와 증명 개발을 위한 초기 Coq 형식화를 수행하는 것.
  • 유령 영역 정보를 제거하기 위한 제거 절차(eraser)를 계획하며, 인스트루멘티드 의미 이론과 제거 후 의미 이론 간의 운영 대응 관계를 증명하는 것.

실험 결과

연구 질문

  • RQ1관찰 등가성을 유지하면서 표현력이 점차 증가하는 수준을 반영할 수 있도록, 루스트에 대한 형식적 의미 이론을 어떻게 구성할 수 있는가?
  • RQ2유령 영역을 포함한 영역 기반 선형 능력이 수동적인 능력 전달 없이도 루스트의 소유권과 양도를 정확히 모델링할 수 있는가?
  • RQ3언어의 탑을 어떻게 사용하여 루스트 프로그램과 그 검증에 대한 모듈러한 추론을 지원할 수 있는가?
  • RQ4물리적 영역과 유령 영역을 모두 모델링하는 의미 이론에서 타입 안정성과 메모리 안정성에 대해 어떤 형식적 보장을 확보할 수 있는가?
  • RQ5이러한 의미 이론이 안전한 언어 확장과 다른 언어와의 상호운용성 기반으로 어떻게 활용될 수 있는가?

주요 결과

  • 오크사이드는 영역 기반 능력과 유령 영역을 사용하여 소유권과 양도를 모델링하며, 별칭과 능력 이행을 자동으로 추적할 수 있다.
  • 의미 이론은 언어의 탑으로 구성되어 있으며, 각 수준이 이전 수준에서 표현할 수 없는 기능을 추가하여, 관찰 등가성 기반으로 펠라이젠의 표현력 개념을 지원한다.
  • 오크사이드 0에 대해 진행성과 유지성 증명을 개발 중이며, 영역 컨텍스트와 별칭 관계를 추적하는 인스트루멘티드 의미 이론을 사용한다.
  • 스칼라로 구현된 프로토타입 타입 체커와 초기 Coq 형식화가 구현되어 있어 실험과 향후 증명 개발을 지원한다.
  • 이 프레임워크는 향후 안전한 상호운용성, 확장 기능(예: 안전한 다자간 계산을 위한 확장) 및 형식적 비안전 코드 가이드라인 개발을 지원한다.
  • 유령 영역 정보를 제거하기 위한 제거 절차가 계획되어 있으며, 인스트루멘티드 의미 이론과 제거 후 의미 이론 간의 운영 대응 관계를 증명할 예정이다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.