From d1dc6af9d11aa4303b6217f26cdf7767981e4347 Mon Sep 17 00:00:00 2001 From: darshankabariya Date: Mon, 2 Mar 2026 16:51:34 +0530 Subject: [PATCH] Revert "chore: align with logos-delivery" This reverts commit 517782e0dfbbf686d2aef9e577f29dc33b483f58. --- .gitmodules | 2 +- README.md | 98 +++---------------------------- waku-bindings/Cargo.toml | 2 +- waku-bindings/README.md | 79 ++++--------------------- waku-bindings/src/macros.rs | 12 ++-- waku-bindings/src/node/context.rs | 2 +- waku-sys/Cargo.toml | 2 +- waku-sys/README.md | 36 +++++++++--- waku-sys/vendor | 2 +- 9 files changed, 60 insertions(+), 175 deletions(-) diff --git a/.gitmodules b/.gitmodules index d5f2df2..aa143c0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "waku-sys/vendor"] path = waku-sys/vendor - url = https://github.com/logos-messaging/logos-delivery + url = https://github.com/logos-messaging/logos-messaging-nim diff --git a/README.md b/README.md index bae5a79..ba8c5c0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# logos-delivery Rust Bindings +# Waku Rust bindings [![Crates.io][crates-badge]][crates-url] [![Documentation][docs-badge]][docs-url] @@ -9,98 +9,18 @@ [crates-url]: https://crates.io/crates/waku-bindings [docs-badge]: https://docs.rs/waku-bindings/badge.svg [docs-url]: https://docs.rs/waku-bindings -[actions-badge]: https://github.com/logos-messaging/logos-delivery-rust-bindings/workflows/CI/badge.svg -[actions-url]: https://github.com/logos-messaging/logos-delivery-rust-bindings/actions/workflows/main.yml?query=workflow%3ACI+branch%3Amaster -[codecov-badge]: https://codecov.io/github/logos-messaging/logos-delivery-rust-bindings/branch/main/graph/badge.svg?token=H4CQWRUCUS -[codecov-url]: https://codecov.io/github/logos-messaging/logos-delivery-rust-bindings +[actions-badge]: https://github.com/logos-messaging/logos-messaging-rust-bindings/workflows/CI/badge.svg +[actions-url]: https://github.com/logos-messaging/logos-messaging-rust-bindings/actions/workflows/main.yml?query=workflow%3ACI+branch%3Amaster +[codecov-badge]: https://codecov.io/github/logos-messaging/logos-messaging-rust-bindings/branch/main/graph/badge.svg?token=H4CQWRUCUS +[codecov-url]: https://codecov.io/github/logos-messaging/logos-messaging-rust-bindings -Rust bindings for [logos-delivery](https://github.com/logos-messaging/logos-delivery) (Waku) v0.38.0-beta, -built on top of the [C FFI](https://github.com/logos-messaging/logos-delivery/blob/master/library/libwaku.h). +Rust layer on top of [`logos-messaging-nim`](https://github.com/logos-messaging/logos-messaging-nim) [C FFI bindings](https://github.com/logos-messaging/logos-messaging-nim/blob/master/library/libwaku.h). -## Prerequisites - -- **Rust** (stable) — [rustup.rs](https://rustup.rs) -- **Nim 2.x** — required to compile the native `libwaku` library -- **Make** -- **GCC or Clang** - -## Setup - -Clone the repository: - -```bash -git clone https://github.com/logos-messaging/logos-delivery-rust-bindings.git -cd logos-delivery-rust-bindings -``` - -The first `cargo build` / `cargo run` automatically: -1. Initializes and updates git submodules -2. Compiles the native `libwaku` static library via `make libwaku STATIC=1` -3. Generates Rust FFI bindings via `bindgen` - -## Running the Examples - -### basic - -Two Waku nodes in the same process. Node 1 publishes a message; node 2 receives it via relay subscription. - -```bash -cd examples/basic -cargo run -``` - -### toy-chat - -Multi-participant chat room over Waku relay. Pass your nickname as argument. - -```bash -cd examples/toy-chat -cargo run "Alice" -``` - -Start another instance in a separate terminal (or on another machine) to chat: - -```bash -cargo run "Bob" -``` - -### tic-tac-toe-gui - -Multiplayer tic-tac-toe with a native GUI (eframe). Start two instances — locally or on separate machines. - -```bash -cd examples/tic-tac-toe-gui -cargo run -``` - -## Running the Tests - -Tests start real Waku nodes and bind to local TCP ports, so they **must run serially**: - -```bash -# from repo root -cargo test -p waku-bindings -- --test-threads=1 - -# or from waku-bindings/ -cd waku-bindings -cargo test -``` - -To see log output: - -```bash -cargo test -- --nocapture -``` - -## Crates - -| Crate | Description | -|-------|-------------| -| [`waku-bindings`](waku-bindings/) | High-level Rust API | -| [`waku-sys`](waku-sys/) | Low-level bindgen FFI bindings | ## About Waku -[Waku](https://waku.org/) is a family of robust, censorship-resistant communication protocols for Web3. Private. Secure. Runs anywhere. +[Waku](https://waku.org/) is a family of robust and censorship-resistant communication protocols enabling privacy-focused messaging for Web3 applications. + +Private. Secure. Runs anywhere. Read the [Waku docs](https://docs.waku.org/) diff --git a/waku-bindings/Cargo.toml b/waku-bindings/Cargo.toml index 581dba3..8e11726 100644 --- a/waku-bindings/Cargo.toml +++ b/waku-bindings/Cargo.toml @@ -9,7 +9,7 @@ authors = [ ] description = "Waku networking library" license = "MIT OR Apache-2.0" -repository = "https://github.com/logos-messaging/logos-delivery-rust-bindings" +repository = "https://github.com/logos-messaging/logos-messaging-rust-bindings" keywords = ["waku", "peer-to-peer", "libp2p", "networking"] categories = ["network-programming"] diff --git a/waku-bindings/README.md b/waku-bindings/README.md index 0ce42a9..742f4f2 100644 --- a/waku-bindings/README.md +++ b/waku-bindings/README.md @@ -1,12 +1,11 @@ # Waku Rust bindings -[github](https://github.com/logos-messaging/logos-delivery-rust-bindings) +[github](https://github.com/logos-messaging/logos-messaging-rust-bindings) [crates.io](https://crates.io/crates/waku-bindings) [docs.rs](https://docs.rs/waku-bindings) -[build status](https://github.com/logos-messaging/logos-delivery-rust-bindings/actions/workflows/main.yml?query=branch%3Amaster) +[build status](https://github.com/logos-messaging/logos-messaging-rust-bindings/actions/workflows/main.yml?query=branch%3Amaster) -High-level Rust API on top of [`waku-sys`](https://crates.io/crates/waku-sys) bindgen bindings to the -[logos-delivery C FFI](https://github.com/logos-messaging/logos-delivery/blob/master/library/libwaku.h). +Rust api on top of [`waku-sys`](https://crates.io/crates/waku-sys) bindgen bindings to [c ffi bindings](https://github.com/status-im/go-waku/blob/v0.2.2/library/README.md). ## Usage @@ -15,86 +14,28 @@ Add this to your `Cargo.toml`: ```toml [dependencies] -waku-bindings = "1.0.0" +waku-bindings = "0.1.0" ``` -## Testing - -### Prerequisites - -- **Rust** (stable) — [rustup.rs](https://rustup.rs) -- **Nim 2.x** — required to compile the native `libwaku` library -- **Make** -- **GCC or Clang** - -### Setup - -Clone the repository: - -```bash -git clone https://github.com/logos-messaging/logos-delivery-rust-bindings.git -cd logos-delivery-rust-bindings -``` - -The first `cargo build` / `cargo test` automatically: -1. Initializes and updates git submodules -2. Builds the native `libwaku` static library via `make libwaku STATIC=1` -3. Generates Rust FFI bindings via `bindgen` - -### Running the tests - -From the repo root or the `waku-bindings/` directory: - -```bash -cargo test -``` - -> Tests must run **serially** — they spin up real Waku nodes that bind to local TCP ports. Running them in -> parallel causes port conflicts. The `serial_test` crate enforces this automatically. - -To run a specific test: - -```bash -cargo test -``` - -For example: - -```bash -cargo test default_echo -cargo test node_restart -``` - -To see log output: - -```bash -cargo test -- --nocapture -``` - -### What the tests cover - -| Test | Description | -|------|-------------| -| `default_echo` | Creates two nodes, subscribes both to a relay topic, publishes a message from node 1, and verifies node 2 receives it | -| `node_restart` | Creates a node, starts and stops it three times in a row to verify lifecycle correctness | - - ## About [Waku](https://waku.org/) Waku is the communication layer for Web3. Decentralized communication that scales. Private. Secure. Runs anywhere. +### What is Waku? + Waku is a suite of privacy-preserving, peer-to-peer messaging protocols. Waku removes centralized third parties from messaging, enabling private, secure, censorship-free communication with no single point of failure. -Waku provides privacy-preserving capabilities, such as sender anonymity, metadata protection and unlinkability to personally identifiable information. +Waku provides privacy-preserving capabilities, such as sender anonymity,metadata protection and unlinkability to personally identifiable information. Waku is designed for generalized messaging, enabling human-to-human, machine-to-machine or hybrid communication. Waku runs everywhere: desktop, server, including resource-restricted devices, such as mobile devices and browsers. +How does it work? The first version of Waku had its origins in the Whisper protocol, with optimizations for scalability and usability. Waku v2 is a complete rewrite. Its relay protocol implements pub/sub over libp2p, and also introduces additional capabilities: @@ -104,4 +45,6 @@ The first version of Waku had its origins in the Whisper protocol, with optimiza This makes it ideal for running a p2p protocol on mobile, or in other similarly resource-restricted environments. -Read the [Waku docs](https://docs.waku.org/) + + +Read the [Waku docs](https://docs.wakuconnect.dev/) \ No newline at end of file diff --git a/waku-bindings/src/macros.rs b/waku-bindings/src/macros.rs index 7594e9f..4ad9608 100644 --- a/waku-bindings/src/macros.rs +++ b/waku-bindings/src/macros.rs @@ -1,7 +1,7 @@ use crate::general::libwaku_response::LibwakuResponse; use std::{slice, str}; -use waku_sys::FFICallBack; +use waku_sys::WakuCallBack; unsafe extern "C" fn trampoline( ret_code: ::std::os::raw::c_int, @@ -26,7 +26,7 @@ unsafe extern "C" fn trampoline( closure(result); } -pub fn get_trampoline(_closure: &F) -> FFICallBack +pub fn get_trampoline(_closure: &F) -> WakuCallBack where F: FnMut(LibwakuResponse), { @@ -57,10 +57,10 @@ macro_rules! handle_ffi_call { let code = unsafe { let cb = get_trampoline(&closure); $waku_fn( - $ctx, // Pass the context - cb, // Pass the callback trampoline - &mut closure as *mut _ as *mut c_void // Pass the user data - $(, $($arg),*)? // Expand the variadic arguments if provided + $ctx, // Pass the context + $($($arg),*,)? // Expand the variadic arguments if provided + cb, // Pass the callback trampoline + &mut closure as *mut _ as *mut c_void ) }; diff --git a/waku-bindings/src/node/context.rs b/waku-bindings/src/node/context.rs index 9395e5e..87afae5 100644 --- a/waku-bindings/src/node/context.rs +++ b/waku-bindings/src/node/context.rs @@ -49,7 +49,7 @@ impl WakuNodeContext { *boxed_closure = Box::new(closure); unsafe { let cb = get_trampoline(&(*boxed_closure)); - waku_sys::set_event_callback( + waku_sys::waku_set_event_callback( self.obj_ptr, cb, &mut (*boxed_closure) as *mut _ as *mut c_void, diff --git a/waku-sys/Cargo.toml b/waku-sys/Cargo.toml index b4673ba..6bac827 100644 --- a/waku-sys/Cargo.toml +++ b/waku-sys/Cargo.toml @@ -9,7 +9,7 @@ authors = [ ] description = "Waku networking library generated bindings" license = "MIT OR Apache-2.0" -repository = "https://github.com/logos-messaging/logos-delivery-rust-bindings" +repository = "https://github.com/logos-messaging/logos-messaging-rust-bindings" keywords = ["waku", "peer-to-peer", "libp2p", "networking"] categories = ["network-programming"] diff --git a/waku-sys/README.md b/waku-sys/README.md index 224b163..59580fe 100644 --- a/waku-sys/README.md +++ b/waku-sys/README.md @@ -1,22 +1,21 @@ # Waku rust bindgen bindings -[github](https://github.com/logos-messaging/logos-delivery-rust-bindings) +[github](https://github.com/logos-messaging/logos-messaging-rust-bindings) [crates.io](https://crates.io/crates/waku-sys) [docs.rs](https://docs.rs/waku-sys) -[build status](https://github.com/logos-messaging/logos-delivery-rust-bindings/actions/workflows/main.yml?query=branch%3Amaster) +[build status](https://github.com/logos-messaging/logos-messaging-rust-bindings/actions/workflows/main.yml?query=branch%3Amaster) -Auto-generated Rust FFI bindings (via `bindgen`) on top of the -[logos-delivery C FFI](https://github.com/logos-messaging/logos-delivery/blob/master/library/libwaku.h). +Rust layer on top of [`go-waku`](https://github.com/status-im/go-waku) [c ffi bindings](https://github.com/status-im/go-waku/blob/v0.2.2/library/README.md). ## Usage -These are low-level auto-generated bindings. For a proper Rust API check [`waku-bindings`](https://crates.io/crates/waku-bindings). +These are autogenerated, if you are looking for a proper Rust API version check on [`waku-bindings`](https://crates.io/crates/waku-bindings) Add this to your `Cargo.toml`: ```toml [dependencies] -waku-sys = "1.0.0" +waku-sys = "0.1.0" ``` @@ -26,4 +25,27 @@ Waku is the communication layer for Web3. Decentralized communication that scale Private. Secure. Runs anywhere. -Read the [Waku docs](https://docs.waku.org/) +### What is Waku? + +Waku is a suite of privacy-preserving, peer-to-peer messaging protocols. + +Waku removes centralized third parties from messaging, enabling private, secure, censorship-free communication with no single point of failure. + +Waku provides privacy-preserving capabilities, such as sender anonymity,metadata protection and unlinkability to personally identifiable information. + +Waku is designed for generalized messaging, enabling human-to-human, machine-to-machine or hybrid communication. + +Waku runs everywhere: desktop, server, including resource-restricted devices, such as mobile devices and browsers. +How does it work? + +The first version of Waku had its origins in the Whisper protocol, with optimizations for scalability and usability. Waku v2 is a complete rewrite. Its relay protocol implements pub/sub over libp2p, and also introduces additional capabilities: + +1. Retrieving historical messages for mostly-offline devices. +2. Adaptive nodes, allowing for heterogeneous nodes to contribute. +3. Bandwidth preservation for light nodes. + +This makes it ideal for running a p2p protocol on mobile, or in other similarly resource-restricted environments. + + + +Read the [Waku docs](https://docs.wakuconnect.dev/) \ No newline at end of file diff --git a/waku-sys/vendor b/waku-sys/vendor index 104ce6e..4117449 160000 --- a/waku-sys/vendor +++ b/waku-sys/vendor @@ -1 +1 @@ -Subproject commit 104ce6e5ac16b9c5e818788e2fb2858c36f36bbf +Subproject commit 4117449b9af6c0304a6115dd4bc0d1d745159685