Description
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:
- MIRAI's annotations crate
- Creusot's contracts and Pearlite
- Kani
- Prusti's contract language
- Contracts crate
Prior art in other languages:
Metadata
Metadata
Assignees
Type
Projects
Status