cakeml icon indicating copy to clipboard operation
cakeml copied to clipboard

CakeML: A Verified Implementation of ML

Results 251 cakeml issues
Sort by recently updated
recently updated
newest added

Currently stackLang programs write a number onto the stack at each function call. The number is an index into the bitmaps (used by the GC if it is called). An...

enhancement
code size
medium effort
medium reward

MLIR has a very interesting [variant of SSA](https://mlir.llvm.org/docs/Rationale/Rationale/#block-arguments-vs-phi-nodes) which seems naturally suited to functional big-step semantics. There are several high reward optimizations that are much easier to do on a...

enhancement
code size
performance
high effort
high reward

Most of our targets have instructions that do things more complicated than a single mips or riscv op. If we're accessing a heap object (with the base pointer), say, on...

enhancement
performance
medium effort
medium reward

Several targets have a jump encoding breakpoint that can plausibly reach a large number of functions, but not the entire binary. (mips conditionals 32K, riscv unconditional & arm8 conditional 1M,...

enhancement
code size
low effort
medium reward

We spend a lot of instructions and bytes saving registers to the stack before calls and reloading them after. We could do less of this (exact amount is difficult to...

enhancement
code size
performance
medium effort
medium reward

It would be nice to make the compiler API as consistent as possible between targets and to eliminate a failure case in the space safety theorem. I expect that this...

enhancement
good first issue
user experience
medium reward

x64, riscv, and arm7 have a set of 8 registers which can be used by shorter forms of instructions, and should be preferred for variables that are frequently accessed. To...

enhancement
code size
medium effort
low reward
uncertain scope

CakeML currently uses a link register calling convention on all targets, but even on targets where that is native it does not use the "jump and link" instruction. This could...

enhancement
code size
low effort
high reward

CakeML's intermediate representation semantics are parameterized by the size of pointers. This is a good thing, as it avoids an irrelevant multiplication of states, and the proof system can handle...

enhancement
code size
user experience
dev experience
high effort
medium reward
uncertain scope

On riscv, this might be as simple as changing Encode to EncodeRVC in compiler/encoders/riscv/riscv_targetScript.sml and fixing the type error. This should be optional since riscv implementations are allowed to omit...

enhancement
good first issue
code size
high reward