https://github.com/prg-titech/baccaml
Experimental implementation of a meta-hybrid JIT compiler mixing trace- and method-based compilation strategies.
https://github.com/prg-titech/baccaml
compiler jit-compiler meta-hybrid-jit meta-tracing-jit tracing-jit
Last synced: about 1 year ago
JSON representation
Experimental implementation of a meta-hybrid JIT compiler mixing trace- and method-based compilation strategies.
- Host: GitHub
- URL: https://github.com/prg-titech/baccaml
- Owner: prg-titech
- License: apache-2.0
- Created: 2018-07-03T16:15:27.000Z (almost 8 years ago)
- Default Branch: develop
- Last Pushed: 2025-05-02T14:23:29.000Z (about 1 year ago)
- Last Synced: 2025-05-02T15:36:54.016Z (about 1 year ago)
- Topics: compiler, jit-compiler, meta-hybrid-jit, meta-tracing-jit, tracing-jit
- Language: OCaml
- Homepage:
- Size: 8.16 MB
- Stars: 30
- Watchers: 5
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Obsolete
This project is no longer maintained. We are currently working on the [Adaptive RPython](https://prg.is.titech.ac.jp/projects/runtime-compilation/baccaml/) project.
---
# BacCaml: The Meta-Hybrid Just-In-Time Compiler
Trace-based compilation and method-based compilation are two major compilation strategies in JIT compilers. In general, the former excels in compiling programs with more in-depth method calls and more dynamic branches, while the latter is a suitable wide range of applications.
This project aims at developing a fundamental mechanism for compiling with both trace-based and method-based strategies. Instead of developing a compiler for one particular language, we provide such a mechanism in a meta-compilation framework that generates a virtual machine with a JIT compiler from an interpreter definition of a programming language.
We are developing the BacCamel meta-compiler framework as a proof-of-concept, which is based on [the MinCaml compiler](https://github.com/esumii/min-caml).
## Prerequisites
- Linux operating system
- OCaml >= 4.10.0+32bit
## Running BacCaml Framework
To set up BacCaml, plese follow these instructions:
```shell
$ opam switch create 4.10.0+32bit
$ opam install -y ppx_deriving ppx_inline_test
```
Next, write your own interpreter with BacCaml. For reference, please see the implementation of [the PMinCaml language](https://github.com/prg-titech/pmincaml).
## Papers
_If you cite this work, please use [the DLS'20 paper on "Amalgamating Different JIT Compilations in a Meta-tracing JIT Compiler Framework"](https://dl.acm.org/doi/10.1145/3426422.3426977)_
### 2020
- **DLS'20**: Yusuke Izawa, Hidehiko Masuhara. "Amalgamating Different JIT Compilations in a Meta-tracing JIT Compiler Framework". [[url]](https://arxiv.org/abs/2011.03516)
### 2019
- **MoveVMs'19 workshop**: Yusuke Izawa, Hidehiko Masuhara, Tomoyuki Aotani, "Extending a Meta-tracing Compiler to Mix Method and Tracing Compilation". [[url]](https://3tty0n.github.io/baccaml-programming-morevms-2019.pdf)
- **Student Research Competition at <Programming> 2019**: Yusuke Izawa, "BacCaml: The Meta-hybrid Just-In-Time Compiler". [[url]](https://3tty0n.github.io/baccaml-programming-src-2019.pdf)