{"id":20874092,"url":"https://github.com/prg-titech/baccaml","last_synced_at":"2025-05-12T13:34:36.912Z","repository":{"id":117494498,"uuid":"139608867","full_name":"prg-titech/baccaml","owner":"prg-titech","description":"Experimental implementation of a meta-hybrid JIT compiler mixing trace- and method-based compilation strategies.","archived":false,"fork":false,"pushed_at":"2025-05-02T14:23:29.000Z","size":8552,"stargazers_count":30,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-05-02T15:36:54.016Z","etag":null,"topics":["compiler","jit-compiler","meta-hybrid-jit","meta-tracing-jit","tracing-jit"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prg-titech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-07-03T16:15:27.000Z","updated_at":"2025-05-02T14:23:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"b3132194-4de7-4c88-8fd1-79c5f2ff4a3f","html_url":"https://github.com/prg-titech/baccaml","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prg-titech%2Fbaccaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prg-titech%2Fbaccaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prg-titech%2Fbaccaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prg-titech%2Fbaccaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prg-titech","download_url":"https://codeload.github.com/prg-titech/baccaml/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253748524,"owners_count":21957939,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","jit-compiler","meta-hybrid-jit","meta-tracing-jit","tracing-jit"],"created_at":"2024-11-18T06:29:13.857Z","updated_at":"2025-05-12T13:34:36.896Z","avatar_url":"https://github.com/prg-titech.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Obsolete\n\nThis project is no longer maintained. We are currently working on the [Adaptive RPython](https://prg.is.titech.ac.jp/projects/runtime-compilation/baccaml/) project.\n\n---\n\n# BacCaml: The Meta-Hybrid Just-In-Time Compiler\n\nTrace-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.\n\nThis 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.\n\nWe 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).\n\n## Prerequisites\n\n- Linux operating system\n- OCaml \u003e= 4.10.0+32bit\n\n## Running BacCaml Framework\n\nTo set up BacCaml, plese follow these instructions:\n\n```shell\n$ opam switch create 4.10.0+32bit\n$ opam install -y ppx_deriving ppx_inline_test\n```\n\nNext, write your own interpreter with BacCaml. For reference, please see the implementation of [the PMinCaml language](https://github.com/prg-titech/pmincaml).\n\n## Papers\n\n_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)_\n\n### 2020\n\n- **DLS'20**: Yusuke Izawa, Hidehiko Masuhara. \"Amalgamating Different JIT Compilations in a Meta-tracing JIT Compiler Framework\". [[url]](https://arxiv.org/abs/2011.03516)\n\n### 2019\n\n- **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)\n\n- **Student Research Competition at \u0026lt;Programming\u0026gt; 2019**: Yusuke Izawa, \"BacCaml: The Meta-hybrid Just-In-Time Compiler\". [[url]](https://3tty0n.github.io/baccaml-programming-src-2019.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprg-titech%2Fbaccaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprg-titech%2Fbaccaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprg-titech%2Fbaccaml/lists"}