&inator (pronounced ref-inator) is a tool for performing interface translation from C to Rust.
-
interface translation: assigning Rust types to top-level C declarations such as structs, constants, function parameters, and function return types
-
Why is interface translation useful? Getting the interface types right makes it a lot easier to get the rest of the translation right.
Implementation questions
What is the output of running &inator?
How do I run &inator?
What libraries does &inator depend on?
- LLVM 17 (
llvm-17andllvm-17-dev) - LLVM development libraries - Clang 17 (
clang-17andlibclang-17-dev) - clang compiler and dev libraries pkgconfig- helps for finding libraries for building codelibpolly-17-dev- high level optimizer used by LLVMlibz3-dev- libraries for the Z3 theorem proverzlib1g-dev- library for zlib data compressionlibzstd-dev- library for zstandard data compressionlibssl-dev- library for TLS
Why does &inator use two data compression libraries?
Why does &inator need TLS? Does it access the network?
Z3
Z3 is a Satisfiability Modulo Theories (SMT) solver.