Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wdv4758h/awesome-jit

A curated list of awesome JIT frameworks, libraries, software and resources
https://github.com/wdv4758h/awesome-jit

List: awesome-jit

Last synced: 12 days ago
JSON representation

A curated list of awesome JIT frameworks, libraries, software and resources

Awesome Lists containing this project

README

        

========================================
Awesome-JIT
========================================

.. contents:: Table of Contents

Libraries
========================================

Help you implement JIT
------------------------------

* `AsmJit `_ - Complete x86/x64 JIT and Remote Assembler for C++
* `DynASM `_
* `LibJIT `_
* `LLVM - MCJIT `_
* `LLVM - ORC `_ - Successor to MCJIT
* `GCC - libgccjit `_
* `GNU lightning `_ - a library that generates assembly language code at run-time
* `Xbyak `_ - JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
* `sljit `_ - a stack-less platform independent JIT compiler
* `MIR `_ - a new JIT backend in C being developed by a Redhat GCC maintainer
* `NanoJIT `_ - a small JIT engine originally written by Adobe for Flash
* `nj `_ - a JIT engine written in C++ based on `Eclipse OMR `_. Eclipse OMR is used in IBM's Java implementation, but the JIT engine is generic
* `Cranelift `_ - A Rust powered JIT compiler for x86-64, aarch64 and s390x created by the Wasmtime team for their WASI interpreter.

Comes with JIT support
------------------------------

* Python
- `Numba `_ - NumPy aware dynamic Python compiler using LLVM

Programming Languages Implementation
========================================

* `Julia `_
* Python
- `PyPy `_
- `Pyston `_ - performance-oriented Python implementation built using LLVM and modern JIT techniques
- `Pyjion `_ - JIT for Python based upon CoreCLR
* Lua
- `LuaJIT `_ - An extremely fast Lua Just-in-Time compiler and interpreter.
- `MoonJIT `_ - Just-In-Time Compiler for the Lua Programming language. Fork of LuaJIT to continue development
- `Ravi `_ - a derivative/dialect of Lua 5.3 with limited optional static typing and an LLVM powered JIT compiler
- `RaptorJIT `_ - a fork of LuaJIT focused on predictably high performance.
- `LuaJIT Remake `_ - A LuaJIT Remake that leverages new techniques like "Copy & Patch" JIT and an interpreter generated by the semantical description of LuaJIT Bytecodes.

* JavaScript
- `V8 `_ - High-performance Javascript and Webassembly engine developed by google around the "Sea of Nodes" concept
- `SpiderMonkey `_ - Firefox's Javascript and Webassembly engine using the WarpMokey JIT engine
- `JavaScriptCore `_ - High-performance Javascript and Webassembly engine developed by Apple for WebKit. Uses the B3 backend.
- `Chakra `_ - Microsoft's JavaScript engine. Used to be the JS engine of Explorer and the early MSEdge.
- `IV `_ - Javascript engine written in C++ that supports ECMAScript 262 5.1.
- `BESEN `_ - Javascript engine written in object Pascal.
- `Higgs `_ - Javascript engine written in D. Made by Maxime Chevalier-Boisvert, the same fella who participated in YJIT cited below.

* PHP
- `HHVM `_
- `HippyVM `_
* Ruby
- `Topaz `_
- `MJIT `_
- `YJIT `_ - A new Ruby JIT Compiler written in Rust by Shopify.
- `JRuby `_
- `TruffleRuby `_
* Lisp
- `CLISP `_
- `Pixie `_
* Smalltalk
- `GNU Smalltalk `_
- `RSqueak `_
* Prolog
- `Pyrolog `_
* `Racket `_
* Java
- `HotSpot `_
- `Dalvik `_
- `Avian `_ - A lightweight alternative to Java
- `Jikes RVM `_ - Research Virtual Machine
- `Maxine VM `_ - Metacircular Research Virtual Machine
* Erlang
- BEAMJIT
* WebAssembly
- `wasm-jit `_
- `wasmtime `_
- `wasmer `_
- `WAVM `_
* LLVM IR
- `Sulong `_ - an interpreter for LLVM IR written in Java using the Truffle language implementation framework and Graal as a just-in-time (JIT) compiler
* SOM (Simple Object Machine)
- `RPySOM `_ - The Simple Object Machine Smalltalk implemented in RPython
- `RTruffleSOM `_ - combining ideas from Truffle and TruffleSOM with RPython's metatracing
* `.NET `_
* `ZetaVM `_
* Ethereum
- `EVM JIT `_

Bindings
========================================

* `llvmlite `_ - A lightweight LLVM python binding for writing JIT compilers
* `pygccjit `_ - Python bindings for libgccjit
* `gccjit `_ - Rust bindings to libgccjit

Tools
========================================

* `jitpy `_ - Library to embed PyPy into CPython
* `RPython Toolchain `_ - framework for producing implementations of dynamic languages
* `Truffle `_ - Language Implementation Framework
* `JITWatch `_ - Log analyser and visualiser for the HotSpot JIT compiler

Papers
========================================

* [2003] `A Brief History of Just-In-Time `_
* [2010] `OCamlJIT 2.0 - Faster Objective Caml `_
* [2015] `Pycket: A Tracing JIT For a Functional Language `_
* [2015] `Making an Embedded DBMS JIT-friendly `_
* [2021] `Copy-and-Patch Compilation: A fast compilation algorithm for high-level languages and bytecode `_

JIT in Database
========================================

* `PostgreSQL `_
- ``src/backend/jit``
* SQlite
- `SQPyte `_

Resources
========================================

Twitter
------------------------------

* `@LuaJIT `_
* `@pypyproject `_

Other Projects (Not Designed for JIT but can be useful)
-------------------------------------

* `QBE `_ - written in C, similar to LLVM but much smaller
- `QBE (Rust) `_ - Rust implementation of QBE's IR
- `discussion >`_