Linking Types for Multi-Language Software: Have Your Cake and Eat It Too

11/13/2017
by   Daniel Patterson, et al.
0

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 about single-language components in a multi-lingual setting. Specifically, linking types allow programmers to annotate where in a program they can link with components inexpressible in their unadulterated language. This enables developers to reason about (behavioral) equality using only their own language and the annotations, even though their code may be linked with code written in a language with more expressive power.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/03/2018

Software Fault Isolation for Robust Compilation

Memory corruption vulnerabilities are endemic to unsafe languages, such ...
research
07/09/2021

How to Identify Class Comment Types? A Multi-language Approach for Class Comment Classification

Most software maintenance and evolution tasks require developers to unde...
research
02/15/2023

Multi-graded Featherweight Java

Resource-aware type systems statically approximate not only the expected...
research
03/23/2022

OJXPerf: Featherlight Object Replica Detection for Java Programs

Memory bloat is an important source of inefficiency in complex productio...
research
02/19/2020

Holistic Specifications for Robust Programs

Functional specifications describe what program components do: the suffi...
research
03/02/2023

Securing Verified IO Programs Against Unverified Code in F*

We introduce SCIO*, a formally secure compilation framework for statical...
research
02/02/2018

When Good Components Go Bad: Formally Secure Compilation Despite Dynamic Compromise

We propose a new formal criterion for secure compilation, giving strong ...

Please sign up or login with your details

Forgot password? Click here to reset