Verifying efficient function calls in CakeML
Artikel i vetenskaplig tidskrift, 2017

We have designed an intermediate language (IL) for the CakeML compiler that supports the verified, efficient compilation of functions and calls. Verified compilation steps include batching of multiple curried arguments, detecting calls to statically known functions, and specialising calls to known functions with no free variables. Finally, we verify the translation to a lower-level IL that only supports closed, first-order functions. These compilation steps resemble those found in other compilers (especially OCaml). Our contribution here is the design of the semantics of the IL, and the demonstration that our verification techniques over this semantics work well in practice at this scale. The entire development was carried out in the HOL4 theorem prover.

ML

Compiler verification

Verified optimisations

Författare

S. Owens

University Of Kent

M. Norrish

Commonwealth Scientific and Industrial Research Organisation (CSIRO)

R. Kumar

Commonwealth Scientific and Industrial Research Organisation (CSIRO)

Magnus Myreen

Programvaruteknik, Grupp A

Yong Kiam Tan

Carnegie Mellon University (CMU)

Proceedings of the ACM on Programming Languages

24751421 (eISSN)

Vol. 1 ICFP 18

Ämneskategorier

Språkteknologi (språkvetenskaplig databehandling)

Inbäddad systemteknik

Datavetenskap (datalogi)

DOI

10.1145/3110262

Mer information

Senast uppdaterat

2024-01-03