| Maturity of tooling | This milestone focusing on trying out fresh Nim tooling, hence it may not be possible to output a PoC, but instead raising a series of upstream issues. |
| Actual value/impact | The direct value on dev ex is not always clear, especially for Nimble. There is hope on bette contributor experience, but the end impact may mostly be on improving Nim tooling by providing constructive feedback. |
- [ ] Docs: links to README.md or docs.waku.org (TBD)
### Create new nim-ffi repository that will allow exposing any Nim library in an easy way
**Owner**: nwaku
**Feature**:
- [Waku SDK](/FURPS/core/waku_sdk.md)
- [RLN SDK](/FURPS/core/rln_sdk.md)
- [Chat SDK](/FURPS/application/chat_sdk.md)
- [SDS](/FURPS/application/sds.md)
**No FURPS**:
**Output**:
- [ ] The `nim-ffi` repository provides the core logic needed to expose any synchronous or asynchronous Nim library. This involves meta-programming and the introduction of new pragma definitions, such as `{.ffi.}`, to appropriately annotate types and procedures.
- [ ]`nim-ffi` can be installed using Nimble.
- [ ] The `nwaku` repository uses `nim-ffi` to expose the existing `libwaku` functionality.
- [ ] All Nim libraries should expose their APIs (functions, types, etc.) through `nim-ffi`.