add some more FURPS to nim-ffi deliverable

This commit is contained in:
Ivan Folgueira Bande 2025-07-25 11:04:50 +02:00
parent 3a91c1852d
commit ebdaa0dfef
No known key found for this signature in database
GPG Key ID: 3C117481F89E24A7
2 changed files with 17 additions and 14 deletions

View File

@ -2,7 +2,10 @@
## Functionality
1. Provides the core logic needed to expose any synchronous or asynchronous Nim library to FFI.
1. Provides the core logic needed to expose any synchronous or asynchronous Nim library to a C-FFI library.
2. The exposed C library can be used in Golang.
3. The exposed C library can be used in Rust.
4. The exposed C library can be used in Python.
## Usability
@ -10,7 +13,8 @@
## Reliability
1. ...
1. The exposed C library does not leak memory.
2. The exposed C library never hangs when working asynchronously.
## Performance
@ -18,8 +22,12 @@
## Supportability
1. Can be installed using Nimble.
1. Any Nim project can use it and can be installed using Nimble,
similarly to how nim-chronos is imported.
2. The interaction with the exposed C library is through JSON.
3. The interaction with the exposed C library is through protobuf.
## + (Privacy, Anonymity, Deployments)
1. `nwaku` repository uses `nim-ffi` to expose the existing `libwaku` functionality.

View File

@ -76,22 +76,17 @@ Note: maybe taken over by Vac-Nim
- [ ] Docs: links to README.md or docs.waku.org (TBD)
### Create nim-ffi, a library to easily expose c-bindings from Nim
### Create nim-ffi, a Nim project to easily exposes c-bindings from Nim
**Owner**: nwaku
**Feature**:
- [Nim FFI](/FURPS/application/nim_ffi.md)
**FURPS**:
This deliverable takes care of the following [Nim FFI](/FURPS/application/nim_ffi.md) FURPS:
- F1. Provides the core logic needed to expose any synchronous or asynchronous Nim library to FFI.
- U1. Introduce new pragma definitions, such as `{.ffi.}`, to appropriately annotate types and procedures.
- S1. Can be installed using Nimble.
_ +1. `nwaku` repository uses `nim-ffi` to expose the existing `libwaku` functionality.
- F1.
- U1.
- S1.
- +1. `nwaku` repository uses `nim-ffi` to expose the existing `libwaku` functionality.
**Checklist**:
- [ ] Specs: link to specs and/or API definition