Koffi is a fast and easy-to-use C FFI module for Node.js, featuring:
- Low-overhead and fast performance (see benchmarks)
- Support for primitive and aggregate data types (structs and fixed-size arrays), both by reference (pointer) and by value
- Well-tested code base for popular OS/architecture combinations
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|
Go to the web site for more information: https://koffi.dev/
You can consult the changelog on the official website.
Major version increments can include breaking API changes, use the migration guide for more information.
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/
The following call conventions are supported: cdecl, stdcall, MS fastcall, thiscall. ↩
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). ↩
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. ↩