arena allocator + incremental garbage collector
  • C++ 98.4%
  • CMake 1.6%
Find a file
2024-06-14 15:06:15 -04:00
cmake xo-pyjit: initial commit 2024-06-14 15:00:57 -04:00
include xo-pyjit: initial commit 2024-06-14 15:00:57 -04:00
src/pyjit xo-pyjit: initial commit 2024-06-14 15:00:57 -04:00
.gitignore .gitignore: + ignore .projectile 2024-06-14 15:06:15 -04:00
CMakeLists.txt xo-pyjit: initial commit 2024-06-14 15:00:57 -04:00
README.md + README.md 2024-06-14 15:05:47 -04:00

python bindings for llvm JIT for EGAD (xo-pyjit)

Getting Started

Build + install dependencies

build + isntall

$ cd xo-pyjit
$ PREFIX=/usr/local         # or preferred install location
$ cmake -DCMAKE_INSTALL_PREFIX=$PREFIX -S . -B .build
$ cmake --build .build -j
$ cmake --install .build

(also see .github/workflows/main.yml)

Examples

Assumes xo-pyjit installed to ~/local2/lib, i.e. built with PREFIX=~/local2.

PYTHONPATH=~/local2/lib:$PYTHONPATH python
>>> from xo_pyexpression import *
>>> from xo_pyjit import *
>>> x=make_constant(3.14159)
>>> jit=Jit.make()
>>> code=jit.codegen(x)
>>> x.print
double 3.141600e+00

Development

use from build tree

Limited utility: requires that supporting libraries (e.g. xo_pyexpression) appear in PYTHONPATH

$ cd xo-pyjit/.build/src/pyjit
$ python
>>> import xo_pyjit

build for unit test coverage

$ cd xo-pyexpression
$ cmake -DCMAKE_BUILD_TYPE=coverage -DENABLE_TESTING=on -S . -B .build-ccov
$ cmake --build .build-ccov -j

LSP (language server) support

LSP looks for compile commands in the root of the source tree; while Cmake creates them in the root of its build directory.

$ cd xo-pyexpression
$ ln -s .build/compile_commands.json  # supply compile commands to LSP

display cmake variables

  • -L list variables
  • -A include 'advanced' variables
  • -H include help text
$ cd xo-pyjit/.build
$ cmake -LAH