Giter Club home page Giter Club logo

awesome-jit's Introduction

Awesome-JIT

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
  • Ruby
  • Lisp
  • Smalltalk
  • Prolog
  • Racket
  • Java
  • Erlang
    • BEAMJIT
  • WebAssembly
  • 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

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

JIT in Database

Resources

Twitter

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

awesome-jit's People

Contributors

baseplate-admin avatar celeritascelery avatar dibyendumajumdar avatar girish946 avatar rice7th avatar tak1n avatar wdv4758h avatar zakkak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-jit's Issues

Omit QBE

I don't think I would have recommended QBE for JITs. It's great, but it is designed as a simple ahead of time compiler and it shows:

  • A standalone binary. It isn't a library and doesn't have an API.
  • The input is QBE IR in textual form.
  • The output is textual assembly intended for the system assembler and linker.

Since this awesome list is about JITs I don't think QBE should be listed. Yes QBE can be an inspiration for a custom code generator, but even if I went with a custom code generator my first concern would be instruction encoding (so I can actually run the code), and QBE doesn't help with that.

Thoughts?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.