What problem does it solve? Exposing Jac code to other languages normally requires manual FFI plumbing and external linkers. This Skill documents how to compile a native Jac module into a C-ABI shared library (.so, .dylib, or .dll) that any FFI-capable host can load, with no gcc or ld involved. ## Core Features & Use Cases - Shared library compilation: Run jac nacompile mathlib.jac --shared to emit a host-platform .so, or cross-build Mach-O .dylib and PE .dll artifacts with --target macos / --target windows. - Export surface control: Mark functions, globals, and objects with :pub to define exactly what lands in the export table; methods stay internal and must be wrapped in free functions. - Opaque handle ABI: Pass Jac objects across the boundary as opaque void* handles managed with the exported jac_retain/jac_release refcount helpers. - Use Case: Write a math library in Jac, compile it to libmathlib.so, then call its exported functions from Python via ctypes or link it from a C program with gcc. ## Quick Start Compile my Jac module into a shared library and show me how to call its exported functions from Python ctypes.