All Projects → CakeML → Cakeml

CakeML / Cakeml

Licence: other
CakeML: A Verified Implementation of ML

Labels

Projects that are alternatives of or similar to Cakeml

Ccl
Clozure Common Lisp
Stars: ✭ 584 (-10.29%)
Mutual labels:  compiler
Rhine Ml
🏞 an OCaml compiler for an untyped lisp
Stars: ✭ 621 (-4.61%)
Mutual labels:  compiler
Lebab
Turn your ES5 code into readable ES6. Lebab does the opposite of what Babel does.
Stars: ✭ 5,479 (+741.63%)
Mutual labels:  compiler
Mypyc
Compile type annotated Python to fast C extensions
Stars: ✭ 575 (-11.67%)
Mutual labels:  compiler
Oakc
A portable programming language with a compact intermediate representation
Stars: ✭ 617 (-5.22%)
Mutual labels:  compiler
Lyo
📦 Node.js to browser - The easy way
Stars: ✭ 624 (-4.15%)
Mutual labels:  compiler
Pl Compiler Resource
程序语言与编译技术相关资料(持续更新中)
Stars: ✭ 578 (-11.21%)
Mutual labels:  compiler
Llvmswift
A Swift wrapper for the LLVM C API (version 9.0.1)
Stars: ✭ 641 (-1.54%)
Mutual labels:  compiler
Rezoom.sql
Statically typechecks a common SQL dialect and translates it to various RDBMS backends
Stars: ✭ 621 (-4.61%)
Mutual labels:  compiler
Janino
Janino is a super-small, super-fast Java™ compiler.
Stars: ✭ 627 (-3.69%)
Mutual labels:  compiler
Jurassic
A .NET library to parse and execute JavaScript code.
Stars: ✭ 590 (-9.37%)
Mutual labels:  compiler
Felix
The Felix Programming Language
Stars: ✭ 609 (-6.45%)
Mutual labels:  compiler
Sultan
Sultan: Command and Rule over your Shell
Stars: ✭ 625 (-3.99%)
Mutual labels:  compiler
Packem
📦⚡ A precompiled JavaScript module bundler
Stars: ✭ 586 (-9.98%)
Mutual labels:  compiler
Fastexpressioncompiler
Fast ExpressionTree compiler to delegate
Stars: ✭ 631 (-3.07%)
Mutual labels:  compiler
Lacc
A simple, self-hosting C compiler
Stars: ✭ 580 (-10.91%)
Mutual labels:  compiler
Clio
Clio is a functional, parallel, distributed programming language.
Stars: ✭ 555 (-14.75%)
Mutual labels:  compiler
Js of ocaml
Compiler from OCaml to Javascript.
Stars: ✭ 643 (-1.23%)
Mutual labels:  compiler
Cyclone
🌀 A brand-new compiler that allows practical application development using R7RS Scheme. We provide modern features and a stable system capable of generating fast native binaries.
Stars: ✭ 634 (-2.61%)
Mutual labels:  compiler
Minic Hosting
A simple stack-based virtual machine that runs C in the browser.
Stars: ✭ 628 (-3.53%)
Mutual labels:  compiler

The CakeML project: https://cakeml.org

CakeML is a verified implementation of a significant subset of Standard ML.

The source and proofs for CakeML are developed in the HOL4 theorem prover. We use the latest development version of HOL4, which we build on PolyML 5.7.1. Example build instructions can be found in build-instructions.sh.

Building all of CakeML (including the bootstrapped compiler and its proofs) requires significant resources. Built copies of the compiler and resource usage for our regression tests are online.

The master branch contains the latest development version of CakeML. See the version2 or version1 branch for previous versions.

Directory structure

COPYING: CakeML Copyright Notice, License, and Disclaimer.

basis: Contains the beginnings of a standard basis library for CakeML, similar to the standard basis library of SML.

build-instructions.sh: This file describes how to install Poly/ML, HOL and CakeML.

candle: Verification of a HOL theorem prover, based on HOL Light (http://www.cl.cam.ac.uk/~jrh13/hol-light/), implemented in CakeML.

characteristic: A verified CakeML adaption of Arthur Charguéraud's "Characteristic Formulae for the Verification of Imperative Programs"

compiler: A verified compiler for CakeML, including:

  • lexing and PEG parsing,
  • type inference,
  • compilation to ASM assembly language, and,
  • code generation to x86, ARM, and more.

developers: This directory contains scripts for automating routine tasks, e.g., for generating README.md files.

examples: Examples of verified programs built using CakeML infrastructure.

how-to.md: This document introduces how to use the CakeML compiler, providing in particular:

  • a description of how to invoke the CakeML compiler,
  • a list of how CakeML differs from SML and OCaml, and,
  • a number of small CakeML code examples.

misc: Auxiliary files providing glue between a standard HOL installation and what we want to use for CakeML development.

semantics: The definition of the CakeML language. The definition is (mostly) expressed in Lem, but the generated HOL is included. The directory includes definitions of:

  • the concrete syntax,
  • the abstract syntax,
  • big step semantics (both functional and relational),
  • a small step semantics,
  • the semantics of FFI calls, and,
  • the type system.

translator: A proof-producing translator from HOL functions to CakeML.

tutorial: An extended worked example on using HOL and CakeML to write verified programs, that was presented as a tutorial on CakeML at PLDI and ICFP in 2017.

unverified: Various unverified tools, e.g. tools for converting OCaml to CakeML and an SML version of the CakeML register allocator.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].