Tools to enable StaticCompiler.jl-based static compilation of Julia code (or more accurately, a subset of Julia which we might call "unsafe Julia") to standalone native binaries by avoiding GC allocations and llvmcall-ing all the things. This package currently requires Julia 1.8 or greater for best results (if in doubt, check which versions are passing CI). Integration tests against StaticCompiler.jl and LoopVectorization.jl are currently run with Julia 1.8 and 1.9 on x86-64 Linux and mac; other platforms and versions may or may not work but will depend on StaticCompiler.jl support. While we'll do our best to keep things working, this package should still be considered experimental at present and necessarily involves a lot of juggling of pointers and such (i.e., "unsafe Julia"). If there are errors in any of the llvmcalls (which we have to use instead of simpler ccalls for things to statically compile smoothly), there could be serious bugs or even undefined behavior.
Features
- GC allocations
- Non-constant global variable
- Type instability
- Multithreading
- Functions that don't want to inline
- Examples available