Linking Types for Multi-Language Software: Have Your Cake and Eat It Too
Daniel Patterson, Amal Ahmed

TL;DR
This paper introduces linking types, a novel approach that allows developers to annotate and reason about multi-language program components, ensuring safer interactions across different programming languages.
Contribution
It proposes linking types as a new method for reasoning about multi-language code interactions using annotations, enhancing safety and understanding.
Findings
Linking types enable reasoning about cross-language interactions.
Annotations help maintain behavioral guarantees across language boundaries.
The approach improves safety in multi-language software systems.
Abstract
Software developers compose systems from components written in many different languages. A business-logic component may be written in Java or OCaml, a resource-intensive component in C or Rust, and a high-assurance component in Coq. In this multi-language world, program execution sends values from one linguistic context to another. This boundary-crossing exposes values to contexts with unforeseen behavior---that is, behavior that could not arise in the source language of the value. For example, a Rust function may end up being applied in an ML context that violates the memory usage policy enforced by Rust's type system. This leads to the question of how developers ought to reason about code in such a multi-language world where behavior inexpressible in one language is easily realized in another. This paper proposes the novel idea of linking types to address the problem of reasoning…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
