Skip to content

Contracts and Automated Reasoning for Rust #181

Closed
@nikomatsakis

Description

@nikomatsakis

Summary

A key step in the process of allowing rust users to verify their code (whether through testing, fuzzing, model-checking, or deductive verification), is to provide them with an ergonomic mechanism to specify the expected behaviour of their code.
The purpose of this meeting is present and get feedback on the issues surrounding the design of a contract language for Rust.

Several groups are already working on this topic - notably the developers of tools like Kani, Prusti and Creusot - and have made significant progress.
Currently, each of these tools defines its own contract language, so there is a risk of divergence and incompatibility both now and in the future.
In addition, the full utility of a contract language requires language-level support.
For example, the safety of a contract would benefit from language-level support for pure functions.
Furthermore, the value of object invariants and trait laws increases the more tightly they are integrated into the Rust type-system and compiler.

This is an initial meeting to open conversation around the issues.
We do not expect to have a fully-fledged and implemented proposal.

Document link: https://hackmd.io/w8AS2N09R76aXDFK9ogHBQ?view

Background reading

Prior art in the Rust community:

Prior art in other languages:

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-langmeeting-proposalProposal for a lang team design meetingmeeting-scheduledLang team design meeting that has a scheduled date

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions