Good morning Clojurians,
We have an important new release of libpython-clj which brings support for JDK-16's [ffi interface](
https://openjdk.java.net/jeps/191) and support for 32 bit systems. We built this on a brand new [ffi layer](
https://cnuernber.github.io/dtype-next/tech.v3.datatype.ffi.html) in dtype-next which virtualizes the actual FFI system and then uses codegeneration to create the exact types and binding sites required for a given subsystem - JNA or JDK-16 at this pointer - all mostly transparently to the user.
Interestingly, JDK-16's FFI pathway **is** much faster than JNA's directmapped pathway but it is also more brittle; when I attempted to load numpy things failed but aside from that tests passed and I imagine if I wanted to mess around with LD_LIBRARY_PATH I could get everything to work.
The virtualization of the FFI pathway also opens the door to other python binary library providers such as directly linking a graal native executable to libpython shared library or using javacpp's version of python.
I am really proud to bring you this as I see it as an important step to both simplify libpython-clj and to provide serious future proofing so we can rely on the library for some time moving forward. Enjoy!
Chris