[ANN] JuliaLibWrapping.jl: bringing Julia libraries to C and Python users

I’m pleased to formally announce JuliaLibWrapping.jl (JLW), a tool for turning Julia packages into shared libraries with C and Python interfaces. This project has been a close collaboration with @Jorge_Vieyra, with important contributions from the JuliaC.jl developers and Frederick Ekre.

The overall goal is to extend our community’s impact, by making Julia packages available to users of other programming languages. Currently JLW supports Python and C, but R and Matlab are likely to follow soon.

JLW lets package authors expose a curated API that can be installed and used like a native component of the target ecosystem. Python users get an ordinary package with NumPy integration and Python exceptions; C users get a shared library and header. The package can bundle its Julia runtime dependencies, so users need neither a separate Julia installation nor a Julia project to manage.

This makes JLW complementary to JuliaCall. JuliaCall offers Python rich, dynamic access to Julia itself, but requires that users install Julia. JLW instead exposes a bounded, compiled library interface: less open-ended, but encapsulated behind a stable ABI and usable from languages other than Python.

JLW builds on JuliaC.jl and includes JLWInterop, which provides common ABI conventions for arrays, strings, ownership, and error handling. The aim is to make these concerns shared infrastructure rather than something every package must design independently.

JuliaLibWrapping v0.2 and JLWInterop v0.2 are available now and require Julia 1.13 or later.

We expect further improvements in the coming months, but JLW should already be fairly usable now. We’d love feedback from package authors and users of mixed-language systems, so don’t hesitate to post here or file an issue.

11 Likes