36 lines
1.2 KiB
Plaintext
36 lines
1.2 KiB
Plaintext
// Python native build demo (AOT/EXE) via plugin
|
|
//
|
|
// Build prerequisites:
|
|
// 1) System has CPython shared library available (e.g. libpython3.11.so)
|
|
// - Linux: export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
|
|
// - macOS: export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
|
|
// - Windows: python3xx.dll resolvable via PATH or set PYTHONHOME
|
|
// 2) Build nyash and python plugin in release mode
|
|
// cargo build --release --features cranelift-jit
|
|
// (cd plugins/nyash-python-plugin && cargo build --release)
|
|
//
|
|
// Build native EXE:
|
|
// bash tools/build_aot.sh examples/py_native_sqrt_app.hako -o app
|
|
//
|
|
// Run (autodecode on makes float results come back as primitives):
|
|
// NYASH_PY_AUTODECODE=1 ./app
|
|
//
|
|
// Expected output line (among others):
|
|
// Result: 0
|
|
|
|
static box Main {
|
|
main() {
|
|
local c, py, mod, fun, r
|
|
c = new ConsoleBox()
|
|
py = new PyRuntimeBox()
|
|
mod = py.import("math")
|
|
fun = mod.getattr("sqrt")
|
|
// With NYASH_PY_AUTODECODE=1, this returns a primitive float 3.0
|
|
r = fun.call(9)
|
|
// Avoid string concatenation for AOT strict; print in two calls
|
|
c.println("sqrt(9) = ")
|
|
c.println(r)
|
|
return 0
|
|
}
|
|
}
|