Large distributed systems are often built by assembling off-the-shelf (OTS) components developed independently. The current approach is to interconnect their APIs manually. This is ad-hoc, complex, tedious, and error-prone.
To address this issue, Varda offers a higher-level language, motivated by a vision of safe-by design. To express a system, a programmer describes its architecture, involving OTS components, using well-defined entities and constraints. To provide safety, the compiler performs static verification, generates a correct-by-construction implementation and inject dynamic checks. To enhance programmers’ productivity, Varda offloads the boilerplate plumbing to the compiler. To improve performance, the compiler applies property-preserving optimisations (e.g., component inlining).
Our experiments show that Varda applications are compact, exhibit modular and reusable design, and have a modest run-time overhead.