- 4K LOC
- Intel/ARM 64-bit native compiler (joe)
- Byte-code IR compiler (joe)
- Byte-code IR virtual machine (vm)
- Original MinCaml codebase
$ opam install ppx_deriving ppx_inline_test
$ dune build
Compile sample for MinCaml bytecode:
$ _build/install/default/bin/vm -compile examples/fact.ml
Run sample from MinCaml bytecode in VM interpreter:
$ _build/install/default/bin/vm -exec examples/fact.joe
10
3628800
Compile sample for Apple M1 (from MinCaml to Assembler):
$ _build/install/default/bin/joe -arm examples/ack.ml
Generating assembly...OK
Compile assembler and link for macOS:
$ gcc examples/ack.arm.s src/arm64/libmincaml.c src/arm64/stub.c -o ack
Run sample natively on M1:
$ ./ack
509
- Kenji Nozawa. SICP in Standard ML.
- Eijiro Sumii. A Crash Course for the MinCaml compiler.
- Eijiro Sumii. MinCaml: A Simple and Efficient Compiler for a Minimal Functional Language.
- М. Сохацький. Інформатика.
- C. Okasaki. Purely Functional Data Structures.
- R. Harper. Programming in Standard ML.
- Andrew W. Appel. Modern Compiler Implementation in ML.
- Andreas Rossberg. HaMLet: To Be Or Not To Be Standard ML.
- Namdak Tonpa