@@ -45,7 +45,7 @@ on using Lean for verifying Rust programs translated by Aeneas.
4545
4646## Eurydice
4747
48- Eurydice is a compiler from (a subset of) Rust to C. The purpose of Eurydice is to provide a
48+ [ Eurydice] ( https://github.com/AeneasVerif/eurydice ) is a compiler from (a subset of) Rust to C. The purpose of Eurydice is to provide a
4949backwards-compatibility story as the verification ecosystem gradually
5050transitions to Rust. New programs can be written in Rust, in turn making them
5151safer and easier to verify; but for legacy environments that cannot yet take a
@@ -65,3 +65,21 @@ from Rust down to C code. About half of these passes were already implemented
6565for KaRaMeL, the rest of the passes reuse the KaRaMeL infrastructure but were
6666freshly written for Eurydice.
6767
68+ ## Scylla
69+
70+ [ Scylla] ( https://github.com/AeneasVerif/scylla ) is a tool for translating highly regular C code to safe Rust. The goal
71+ of Scylla is to help with the transition from legacy C code to Rust projects.
72+ To benefit from the infrastructure in C projects (CI, regression and performance
73+ testing), users are expected to progressively rewrite their C code until
74+ it fits the C subset supported by Scylla.
75+
76+ Scylla relies on the Clang frontend to parse C code before translating it to Rust.
77+ Additionally, users can provide annotations in the C source code to, e.g., specify
78+ that a tagged union should be translated to a Rust abstract datatype, or that a
79+ C struct should be translated to a Rust tuple.
80+
81+ As of July 2025, Scylla is able to translate parts of the HACL\* and SymCrypt
82+ cryptographic libraries, as well as the CBOR binary parser from EverParse, and
83+ the core compression algorithm of bzip2, all of them requiring different levels
84+ of manual C source rewritings and annotations.
85+
0 commit comments