cakeml VS mpl

Compare cakeml vs mpl and see what are their differences.

mpl

The MaPLe compiler for efficient and scalable parallel functional programming (by MPLLang)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
cakeml mpl
14 7
912 285
2.1% 16.8%
9.8 8.4
2 days ago about 2 months ago
Standard ML Standard ML
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

cakeml

Posts with mentions or reviews of cakeml. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-10-11.
  • The Deep Link Equating Math Proofs and Computer Programs
    5 projects | news.ycombinator.com | 11 Oct 2023
    If I understand what you are asking about correctly, then I do think you are mistaken.

    As a sibling comment observed, you would be proving something about a program, but proving things about programs is both possible and done.

    This ranges from things like CakeML (https://cakeml.org/) and CompCert (compilers with verified correctness proofs of their optimizations) to something simple like absence of runtime type errors in statically strongly soundly-typed languages.

    Of note is that you are proving properties of your program, not proving them perfect in every way. The properties of your program that you prove can vary wildly in both difficulty and usefulness. A sufficiently advanced formally verified compiler like CakeML can transfer a high-level proof about your source code to a corresponding proof about the behavior of the generated machine-executable code.

  • The future of Clang-based tooling
    3 projects | news.ycombinator.com | 29 Jul 2023
    > A single IR with multiple passes is a good way to build a compiler

    https://mlir.llvm.org/, which is using, is largely claiming the opposite. Most passes more naturally are not "a -> a", but "a -> b". data structures and data structures work hand in hand, it is very nice to produce "evidence" for what is done in the output data structure.

    This is why https://cakeml.org/, which "can't cheat" with partial functions, has so many IRs!

    Using just a single IR was historically done for cost-control, the idea being that having many IRs was a disaster in repetitive boilerplate. MLIR seeks to solve that exact problem!

  • CakeML – A Verified Implementation of ML
    1 project | news.ycombinator.com | 5 Jun 2023
  • Tools for Verifying a Language and its Semantics
    1 project | /r/ProgrammingLanguages | 2 Jan 2023
    You may want to look at [CakeML](https://cakeml.org) done in HOL4, there is also a nice proof pearl about a more .. minimalistic verified bootstrapped compiler also in HOL4.
  • old languages compilers
    12 projects | /r/ProgrammingLanguages | 26 Dec 2022
    CakeML
  • Is there a formally-proven real-time language/computing env. or operating system?
    2 projects | /r/ProgrammingLanguages | 7 Sep 2022
    There is also Cake ML which is a formally verified functional programming language compiler and runtime.
  • CakeML: A Verified Implementation of ML
    2 projects | /r/sml | 7 Mar 2022
    There is also a CakeML -> Standard ML compiler though it seems to have been built to translate benchmarks and sort of old so I'm not sure how comprehensive it is: https://github.com/CakeML/cakeml/tree/master/unverified/front-end
  • The λ-Cube
    3 projects | news.ycombinator.com | 15 Jan 2022
    > One guess is that lisps cope with being minimal through use of macros and metaprogramming, it's difficult for a typed language to support that level of metaprogramming while maintaining the various guarantees that one wants from such a system.

    Difficult, but certainly not impossible [0].

    [0] https://cakeml.org/

  • Two Mechanisations of WebAssembly 1.0
    2 projects | /r/ProgrammingLanguages | 3 Jan 2022
    If this interests you, I'd highly recommend checking out CompCert (docs here) and CakeML.
  • VLISP: A Verified Implementation of Scheme [pdf]
    1 project | news.ycombinator.com | 29 Dec 2021

mpl

Posts with mentions or reviews of mpl. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-30.
  • Garbage Collection for Systems Programmers
    7 projects | news.ycombinator.com | 30 Mar 2024
    I'm one of the authors of this work -- I can explain a little.

    "Provably efficient" means that the language provides worst-case performance guarantees.

    For example in the "Automatic Parallelism Management" paper (https://dl.acm.org/doi/10.1145/3632880), we develop a compiler and run-time system that can execute extremely fine-grained parallel code without losing performance. (Concretely, imagine tiny tasks of around only 10-100 instructions each.)

    The key idea is to make sure that any task which is *too tiny* is executed sequentially instead of in parallel. To make this happen, we use a scheduler that runs in the background during execution. It is the scheduler's job to decide on-the-fly which tasks should be sequentialized and which tasks should be "promoted" into actual threads that can run in parallel. Intuitively, each promotion incurs a cost, but also exposes parallelism.

    In the paper, we present our scheduler and prove a worst-case performance bound. We specifically show that the total overhead of promotion will be at most a small constant factor (e.g., 1% overhead), and also that the theoretical amount of parallelism is unaffected, asymptotically.

    All of this is implemented in MaPLe (https://github.com/mpllang/mpl) and you can go play with it now!

  • MPL: Automatic Management of Parallelism
    1 project | news.ycombinator.com | 28 Mar 2024
  • Good languages for writing compilers in?
    8 projects | /r/ProgrammingLanguages | 11 May 2023
    Maple is a fork of MLton: https://github.com/MPLLang/mpl
  • Comparing Objective Caml and Standard ML
    5 projects | news.ycombinator.com | 15 Feb 2023
    Some of us are still using SML for research and teaching, e.g. https://github.com/mpllang/mpl
  • MaPLe Compiler for Parallel ML v0.3 Release Notes
    1 project | news.ycombinator.com | 26 Jun 2022
  • MPL-v0.3 Release Notes
    1 project | /r/sml | 26 Jun 2022

What are some alternatives?

When comparing cakeml and mpl you can also consider the following projects:

Daikon - Dynamic detection of likely invariants

LunarML - The Standard ML compiler that produces Lua/JavaScript

hardware - Verilog development and verification project for HOL4

1ml - 1ML prototype interpreter

CompCert - The CompCert formally-verified C compiler

HPCInfo - Information about many aspects of high-performance computing. Wiki content moved to ~/docs.

Checker Framework - Pluggable type-checking for Java

ppci - A compiler for ARM, X86, MSP430, xtensa and more implemented in pure Python

checkedc - Checked C is an extension to C that lets programmers write C code that is guaranteed by the compiler to be type-safe. The goal is to let people easily make their existing C code type-safe and eliminate entire classes of errors. Checked C does not address use-after-free errors. This repo has a wiki for Checked C, sample code, the specification, and test code.

mlton - The MLton repository

smlpkg - Generic package manager for Standard ML libraries and programs

FunctionalPlus - Functional Programming Library for C++. Write concise and readable C++ code.