All Projects → prg-titech → baccaml

prg-titech / baccaml

Licence: Apache-2.0 license
Experimental implementation of a meta-hybrid JIT compiler mixing trace- and method-based compilation strategies.

Programming Languages

ocaml
1615 projects
Standard ML
205 projects
c
50402 projects - #5 most used programming language
assembly
5116 projects
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to baccaml

bpfjit
Just-in-Time compilation of bpf
Stars: ✭ 26 (+4%)
Mutual labels:  jit-compiler
Yarv Mjit
MRI method JIT compiler based on original stack-based YARV instructions (Development Repository of ruby/ruby#1782, already merged)
Stars: ✭ 63 (+152%)
Mutual labels:  jit-compiler
Fake
嵌入式脚本语言 Lightweight embedded scripting language
Stars: ✭ 172 (+588%)
Mutual labels:  jit-compiler
Rbpf
Rust virtual machine and JIT compiler for eBPF programs
Stars: ✭ 306 (+1124%)
Mutual labels:  jit-compiler
Raptorjit
RaptorJIT: A dynamic language for system programming (LuaJIT fork)
Stars: ✭ 784 (+3036%)
Mutual labels:  jit-compiler
Avian
[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
Stars: ✭ 1,188 (+4652%)
Mutual labels:  jit-compiler
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-28%)
Mutual labels:  jit-compiler
Pure Lang
Pure programming language
Stars: ✭ 209 (+736%)
Mutual labels:  jit-compiler
Mir
A light-weight JIT compiler based on MIR (Medium Internal Representation)
Stars: ✭ 1,075 (+4200%)
Mutual labels:  jit-compiler
Sling
SLING - A natural language frame semantics parser
Stars: ✭ 1,892 (+7468%)
Mutual labels:  jit-compiler
Tcl
The Tcl Core. (Mirror of core.tcl-lang.org)
Stars: ✭ 342 (+1268%)
Mutual labels:  jit-compiler
Amacc
Small C Compiler generating ELF executable Arm architecture, supporting JIT execution
Stars: ✭ 661 (+2544%)
Mutual labels:  jit-compiler
Duckstation
Fast PlayStation 1 emulator for x86-64/AArch32/AArch64
Stars: ✭ 2,888 (+11452%)
Mutual labels:  jit-compiler
sling
SLING - A natural language frame semantics parser
Stars: ✭ 91 (+264%)
Mutual labels:  jit-compiler
Minijit
A basic x86-64 JIT compiler written from scratch in stock Python
Stars: ✭ 185 (+640%)
Mutual labels:  jit-compiler
jitm
JITM is an automated tool to bypass the JIT Hooking protection on a .NET sample.
Stars: ✭ 27 (+8%)
Mutual labels:  jit-compiler
Jit Compiler
JIT compiler in Go
Stars: ✭ 70 (+180%)
Mutual labels:  jit-compiler
Jitwatch
Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.
Stars: ✭ 2,545 (+10080%)
Mutual labels:  jit-compiler
Jitboy
A Game Boy emulator with dynamic recompilation (JIT)
Stars: ✭ 190 (+660%)
Mutual labels:  jit-compiler
Kinx
Looks like JavaScript, feels like Ruby, and it is a script language fitting in C programmers.
Stars: ✭ 134 (+436%)
Mutual labels:  jit-compiler

BacCaml: The Meta-Hybrid Just-In-Time Compiler

Build Status

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.

Prerequisites

  • Linux operating system
  • OCaml >= 4.10.0+32bit

Running BacCaml Framework

To set up BacCaml, plese follow these instructions:

$ 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.

Papers

If you cite this work, please use the DLS'20 paper on "Amalgamating Different JIT Compilations in a Meta-tracing JIT Compiler Framework"

2020

  • DLS'20: Yusuke Izawa, Hidehiko Masuhara. "Amalgamating Different JIT Compilations in a Meta-tracing JIT Compiler Framework". [url]

  • Master's thesis: Yusuke Izawa, "Stack Hybridization: A Mechanism for Bridging Two Compilation Strategies in a Meta Compiler Framework". [url]

2019

  • MoveVMs'19 workshop: Yusuke Izawa, Hidehiko Masuhara, Tomoyuki Aotani, "Extending a Meta-tracing Compiler to Mix Method and Tracing Compilation". [url]

  • Student Research Competition at <Programming> 2019: Yusuke Izawa, "BacCaml: The Meta-hybrid Just-In-Time Compiler". [url]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].