Functionality §
- Provides the core logic needed to expose any synchronous or asynchronous Nim library to a C-FFI library.
Usability §
- Introduce new pragma definitions, such as
{.ffi.}, to appropriately annotate types and procedures.
- Any Nim project can use it and can be installed using Nimble,
similarly to how nim-chronos is imported.
- The interaction with the exposed C library can be done using JSON.
- The interaction with the exposed C library can be done using protobuf.
Reliability §
- Nim-FFI does not leak memory.
- The exposed C library never hangs when working asynchronously.
Supportability §
- The exposed C library can be used in Golang.
- The exposed C library can be used in Rust.
- The exposed C library can be used in Python.
+ (Privacy, Anonymity, Deployments) §
nwaku repository uses nim-ffi to expose the existing libwaku functionality.