mirror of
https://github.com/logos-messaging/nim-sds.git
synced 2026-07-02 22:10:13 +00:00
Port the {.ffi.} wrapper to nim-ffi 0.2.0 (master). 0.2.0 is a breaking
redesign over 0.1.4: events move to a per-context multi-listener registry
(sds_add_event_listener / sds_remove_event_listener) fired via {.ffiEvent.}
emitters, and request/response/event marshalling switches from JSON to CBOR.
- libsds.nim: typed {.ffiEvent.} payloads replace the JSON event modules;
CBOR handles nesting, so unwrap returns a typed response again. The
retrieval-hint provider (a C function pointer, not CBOR-encodable) passes
its address as a uint64 via a {.ffi.} method that stores it in a
worker-thread threadvar.
- pin nim-ffi to master HEAD by commit. The lock version is kept a clean
semver ("0.2.0") on purpose: nimble's `#`-prefixed special version in the
lock breaks `nimble setup -l` (an unquoted `#` truncates the git path),
so only vcsRevision carries the commit.
- add the new transitive dep cbor_serialization to the lock and nix/deps.nix.
- regenerate libsds.h for the CBOR/registry ABI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Usage
Shell
A development shell can be started using:
nix develop
Building
To simply build you can use:
nix build '.#libsds'
It can be also done without even cloning the repo:
nix build github:waku-org/nim-sds
nix build github:waku-org/nim-sds#libsds-ios
nix build github:waku-org/nim-sds#libsds-android-arm64"
Or as a flake input.