Skip to content
Hiroki Kobayashi edited this page Dec 17, 2024 · 47 revisions

MinCaml on Rust

This project is a port of min-caml from OCaml to Rust.

Currently, architecture-independent features work. Architecture-dependent features are not working.

Progress

Target-independent

File Status
syntax.ml
type.ml
id.ml
lexer.mll ✅ (replaced with nom) https://github.com/koba-e964/min-caml-rust/wiki/parser-port
parser.mly ✅ (replaced with nom)
typing.ml ✅ (full of ugly hacks)
kNormal.ml
alpha.ml
beta.ml
assoc.ml
inline.ml
constFold.ml
elim.ml ✅ (threshold = 50, recursive functions like in ack.ml blow up)
anchor.ml For html generation, not necessary for our project
closure.ml Partially tested
main.ml

Target-specific (x86)

File Status
asm.ml
emit.ml
regAlloc.ml x86/reg_alloc.rs, ✅
simm.ml
virtual.ml -> x86/virtual_asm.rs, ✅

Target-specific (arm64)

File Status
asm.ml
emit.ml
regAlloc.ml -> arm64/reg_alloc.rs, ✅
simm.ml
virtual.ml -> arm64/virtual_asm.rs, ✅

Known problems

TODOs

  • Migrate x86 -> x86_64
  • Implement arm64-specific code
Clone this wiki locally