All Projects → bsaleil → lc

bsaleil / lc

Licence: BSD-3-Clause license
JIT compiler for Scheme targeting x86-64 platforms

Programming Languages

scheme
763 projects

Projects that are alternatives of or similar to lc

vein
🔮⚡️Vein is an open source high-level strictly-typed programming language with a standalone OS, arm and quantum computing support.
Stars: ✭ 31 (+29.17%)
Mutual labels:  jit, research-project
oim
Algorithms for online influence maximization
Stars: ✭ 16 (-33.33%)
Mutual labels:  research-project
Wasm Micro Runtime
WebAssembly Micro Runtime (WAMR)
Stars: ✭ 2,440 (+10066.67%)
Mutual labels:  jit
Jfs
Constraint solver based on coverage-guided fuzzing
Stars: ✭ 215 (+795.83%)
Mutual labels:  jit
Angelscript Jit Compiler
A Just-In-Time compiler for the AngelScript language on x86 processors.
Stars: ✭ 172 (+616.67%)
Mutual labels:  jit
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (+858.33%)
Mutual labels:  jit
Jitfromscratch
Example project from my talks in the LLVM Social Berlin and C++ User Group
Stars: ✭ 158 (+558.33%)
Mutual labels:  jit
FastLua
Lua trace JIT compiler using LLVM-C
Stars: ✭ 22 (-8.33%)
Mutual labels:  jit
Lightbeam
Lightbeam has moved and now lives in the Wasmtime repository!
Stars: ✭ 253 (+954.17%)
Mutual labels:  jit
Vue Ssr Jit
A just in time compilation technique for server-side rendering
Stars: ✭ 209 (+770.83%)
Mutual labels:  jit
Laser
The HPC toolbox: fused matrix multiplication, convolution, data-parallel strided tensor primitives, OpenMP facilities, SIMD, JIT Assembler, CPU detection, state-of-the-art vectorized BLAS for floats and integers
Stars: ✭ 191 (+695.83%)
Mutual labels:  jit
Fake
嵌入式脚本语言 Lightweight embedded scripting language
Stars: ✭ 172 (+616.67%)
Mutual labels:  jit
Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+11575%)
Mutual labels:  jit
Coreclr
CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes.
Stars: ✭ 12,610 (+52441.67%)
Mutual labels:  jit
muparsersse
muparsersse a math parser for windows using just in time compilations of the expression
Stars: ✭ 14 (-41.67%)
Mutual labels:  jit
Elymas
A programming language I can like. Unholy and full of magic.
Stars: ✭ 166 (+591.67%)
Mutual labels:  jit
Jitboy
A Game Boy emulator with dynamic recompilation (JIT)
Stars: ✭ 190 (+691.67%)
Mutual labels:  jit
Cranelift
Cranelift code generator
Stars: ✭ 2,485 (+10254.17%)
Mutual labels:  jit
Suravi
Suravi is a small distribution of Ravi/Lua 5.3 with batteries such as cjson, lpeglabel, luasocket, penlight, torch7, luv, luaossl
Stars: ✭ 56 (+133.33%)
Mutual labels:  jit
PowerUp
⚡ Decompilation Tools and High Productivity Utilities ⚡
Stars: ✭ 1,526 (+6258.33%)
Mutual labels:  jit

lc

Build Status

JIT compiler for Scheme targeting Linux x86-64 platforms.

  • Baptiste Saleil and Marc Feeley. Interprocedural Specialization of Higher-Order Dynamic Languages Without Static Analysis. In European Conference on Object-Oriented Programming (ECOOP'17), 2017.
    [pdf]
  • Baptiste Saleil and Marc Feeley. Type Check Removal Using Lazy Interprocedural Code Versioning. In Scheme and Functional Programming Workshop (SFPW'15), 2015.
    [pdf]
  • Baptiste Saleil and Marc Feeley. Code Versioning and Extremely Lazy Compilation of Scheme. In Scheme and Functional Programming Workshop (SFPW'14), 2014.
    [pdf]

Building

LC depends on a modified version of the Gambit Scheme compiler that must be installed before building LC:

# Build the modified version of Gambit
git clone https://github.com/bsaleil/gambit
cd gambit
mkdir build
./configure --enable-single-host --prefix=$(pwd)/build
make -j8
make install

The gsc executable of the modified version of Gambit must be available in PATH both when building and running LC:

# Make 'gsc' binary available in PATH
export PATH=$(pwd)/build/bin:$PATH

Then, LC can be built:

# Build LC
git clone https://github.com/bsaleil/lc -b stable
cd lc
make debug -j8

Running

Make sure the gsc binary of the modified version of gambit is also available in PATH when running lc.

./lc file.scm

Example

To compute the 40th Fibonacci number:

fib.scm:

(define (fib n)
  (if (< n 2)
      1
      (+ (fib (- n 1))
         (fib (- n 2)))))

(println (fib 40))
$ time ./lc fib.scm
165580141

real	0m0,550s
user	0m0,537s
sys	0m0,010s
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].