Koffi is a fast and easy-to-use C FFI module for Node.js, featuring:
The following combinations of OS and architectures are officially supported and tested at the moment:
ISA / OS | Windows | Linux | macOS | FreeBSD | OpenBSD |
---|---|---|---|---|---|
x86 (IA32) [^1] | ✅ Yes | ✅ Yes | ⬜️ N/A | ✅ Yes | ✅ Yes |
x86_64 (AMD64) | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
ARM32 LE [^2] | ⬜️ N/A | ✅ Yes | ⬜️ N/A | 🟨 Probably | 🟨 Probably |
ARM64 (AArch64) LE | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | 🟨 Probably |
RISC-V 64 [^3] | ⬜️ N/A | ✅ Yes | ⬜️ N/A | 🟨 Probably | 🟨 Probably |
[^1]: The following call conventions are supported: cdecl, stdcall, MS fastcall, thiscall. [^2]: The prebuilt binary uses the hard float ABI and expects a VFP coprocessor. Build from source to use Koffi with a different ABI (softfp, soft). [^3]: The prebuilt binary uses the LP64D (double-precision float) ABI. The LP64 ABI is supported in theory if you build Koffi from source but this is untested. The LP64F ABI is not supported.
Use the following links for more information:
This repository does not contain the code of Koffi but only exists as a front. For pratical reasons, I've started using a single repository for all my projects in 2018 because it is easier to manage.
The source code is available here: https://github.com/Koromix/rygel/ (in the src/koffi subdirectory).
Monorepositories have two killer features for me:
You can find a more detailed rationale here: https://danluu.com/monorepo/
Koffi is built with a custom CMake-wrapper called CNoke, which also lives in the monorepository. Don't try to run CMake manually because it will fail.
Follow the documented build instructions to build Koffi from source.
This program is free software: you can redistribute it and/or modify it under the terms of the MIT License.
Find more information here: https://choosealicense.com/licenses/mit/