Verified Rust for low-level systems code

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • verus

    Verified Rust for low-level systems code

  • verus-analyzer

    A Verus compiler front-end for IDEs (derived from rust-analyzer)

  • A fork of rust-analyzer, called verus-analyzer, provides support for Verus syntax and actions (including new proof-specific actions) https://github.com/verus-lang/verus-analyzer/

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • dafny

    Dafny is a verification-aware programming language

  • For those that are interested but perhaps not aware in this similar project, Dafny is a "verification-aware programming language" that can compile to rust: https://github.com/dafny-lang/dafny

  • verifiable-controllers

    This is a VMware Research Group project. It is an experimental framework to build practical, formally verified, cluster management controllers.

  • We've used Verus to write formally verified Kubernetes controllers.

    Basically, we can prove liveness properties of the form "eventually, the controller will reconcile the cluster to the requested desired state". As you can imagine, there is a lot of subtlety and nuance to even specifying correctness here (think rapid changes to the desired state requirement, asynchrony, failures and what not).

    Code: https://github.com/vmware-research/verifiable-controllers/, with a corresponding paper due to appear at OSDI 2024.

  • pasv

    The Pascal-F Verifier

  • Then you go to the more elaborate prover. We used the Boyer-Moore prover for that. After proving a implies b, that became a theorem/rule the fast prover could use when it matched. So if the same situation came up again in code, the rule would be re-used automatically.

    I notice that the examples for this verified Rust system don't seem to include a termination check for loops. You prove that loops terminate by demonstrating that some nonnegative integer expression decreases on each iteration and never goes negative. If you can't prove that easily, the code has no place in mission-critical code.

    Microsoft's F* is probably the biggest success in this area.[3]

    [1] https://archive.org/details/manualzilla-id-5928072/page/n3/m...

    [2] https://github.com/John-Nagle/pasv

    [3] https://www.microsoft.com/en-us/research/video/programming-w...

  • apalache

    APALACHE: symbolic model checker for TLA+ and Quint

  • TLA+ has also had an SMT-based backend, Apalache [1], for a few years now. In general, you encode your system model (which would be the Rust functions for Verus, the TLA model for Apalache) and your desired properties into an SMT formula, and you let the solver have a go at it. The deal is that the SMT language is quite expressive, which makes such encodings... not easy, but not impossible. And after you're done with it, you can leverage all the existing solvers that people have built.

    While there is a series of "standard" techniques for encoding particular program languages features into SMT (e.g., handling higher-order functions, which SMT solves don't handle natively), the details of how you encode the model/properties are extremely specific to each formalism, and you need to be very careful to ensure that the encoding is sound. You'd need to go and read the relevant papers to see how this is done.

    [1]: https://apalache.informal.systems

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • What I've Learned About Formal Methods in Half a Year

    3 projects | news.ycombinator.com | 10 Apr 2023
  • Ask HN: Usefulness of formal verification (Coq) and formal verification (TLA+)?

    1 project | news.ycombinator.com | 7 Apr 2024
  • Holiday protocols: secret Santa with Quint

    3 projects | news.ycombinator.com | 21 Dec 2023
  • Quint: A specification language based on the temporal logic of actions (TLA)

    5 projects | news.ycombinator.com | 19 Dec 2023
  • Programming Languages Going Above and Beyond

    7 projects | news.ycombinator.com | 29 Jun 2023