mirror of
https://github.com/logos-messaging/nim-sds.git
synced 2026-08-24 22:29:25 +00:00
v0.3.1
v0.3.0 changed protobuf field 3 (causalHistory) from a repeated string of message IDs to a repeated HistoryEntry submessage. Same field number and wire type, so pre-hint nodes (v0.2.x) don't error — they silently read the submessage bytes as a message-id string, corrupting dependency tracking so SDS-wrapped messages are buffered as unmet deps and never delivered. This broke message delivery between new and released (v10.34.1) nodes. Make retrieval hints additive instead: field 3 stays a repeated string of message IDs (unchanged on the wire), and hints move to a new field 7 (repeated HistoryEntry, keyed by message ID). Old nodes read field 3 correctly and skip the unknown field 7; new nodes join field 3 + field 7. Compatible in every direction (old<->new, and legacy messages). Add test_wire_compat.nim covering old-decode-of-new, new round-trip, and new-decode-of-legacy. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
nim-e2e-reliability
Nim implementation of the e2e reliability protocol
Building
Nix
nix build --print-out-paths '.?submodules=1#libsds'
nix build --print-out-paths '.?submodules=1#libsds-android-arm64'
Windows, Linux or MacOS
make libsds
Android
Download the latest Android NDK. For example, on Ubuntu with Intel:
cd ~
wget https://dl.google.com/android/repository/android-ndk-r27c-linux.zip
unzip android-ndk-r27c-linux.zip
Then, add the following to your ~/.bashrc file:
export ANDROID_NDK_ROOT=$HOME/android-ndk-r27c
export PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
Then, use one of the following commands, according to the current architecture:
| Architecture | command |
|---|---|
| arm64 | make libsds-android ARCH=arm64 |
| amd64 | make libsds-android ARCH=amd64 |
| x86 | make libsds-android ARCH=x86 |
At the end of the process, the library will be created in build/libsds.so
Languages
Nim
91.9%
Nix
5.9%
Shell
1.5%
C
0.7%