Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/build_and_lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ jobs:
run: cargo fmt --all -- --check

- name: Clippy
run: cargo clippy --all-features -- -D warnings
# Exclude async-std-rt: it is deprecated (RUSTSEC-2025-0052) and emits a
# compile_error! at crate level, so --all-features would always fail.
# NOTE: When adding new Cargo features, add them to this list manually.
run: cargo clippy --features std,tokio-rt,embassy-rt,actix-rt,futures-rt,smol-rt,core,wallet,models,utils,helpers,json-rpc,websocket,cli -- -D warnings
Comment thread
e-desouza marked this conversation as resolved.
Comment thread
e-desouza marked this conversation as resolved.
Comment thread
e-desouza marked this conversation as resolved.

- name: Build (default)
run: cargo build --release
Expand Down
19 changes: 16 additions & 3 deletions .github/workflows/integration_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ on:
name: Integration Test

env:
RIPPLED_DOCKER_IMAGE: rippleci/rippled:develop
# Pin to known-good digest; rippleci/rippled:develop broke after 2026-04-01
RIPPLED_DOCKER_IMAGE: rippleci/rippled:develop@sha256:328175bf14b7b83db9e5e6b50c7458bf828b02b2855453efc038233094aa8d85

jobs:
integration_test:
Expand Down Expand Up @@ -41,10 +42,22 @@ jobs:

- name: Wait for rippled to be healthy
run: |
until docker inspect --format='{{.State.Health.Status}}' rippled-service | grep -q healthy; do
echo "Waiting for rippled to be ready..."
for i in $(seq 1 30); do
if ! docker ps -q -f name=rippled-service | grep -q .; then
echo "Container exited unexpectedly"
docker logs rippled-service 2>&1 || true
exit 1
fi
STATUS=$(docker inspect --format='{{.State.Health.Status}}' rippled-service 2>/dev/null || echo "unknown")
echo "Attempt $i/30: $STATUS"
if [ "$STATUS" = "healthy" ]; then
exit 0
fi
sleep 2
done
echo "Timed out waiting for rippled"
docker logs rippled-service 2>&1 || true
exit 1

- uses: dtolnay/rust-toolchain@stable

Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [[v1.1.0]]

- **`async-std-rt` feature deprecated**: The `async-std` crate has been officially discontinued (RUSTSEC-2025-0052). The `async-std-rt` feature now emits a `compile_error!` directing users to migrate to `smol-rt` as a drop-in replacement. Code using `async-std-rt` will no longer compile until the feature is updated.

### Known Blockers

- **`atomic-polyfill` advisory (RUSTSEC-2023-0089)**: Cannot be resolved yet. `reqwless` 0.13.0 pins `embedded-tls` 0.17.0 which transitively depends on `atomic-polyfill`. This is blocked upstream and will be resolved when `reqwless` upgrades its `embedded-tls` dependency.

### Added

- Implemented full deserialization from hex binary back to JSON, update `definitions.json` to `xrpl.js` latest, added all codec test fixtures from xrpl.js and implemented tests for all of them.
Expand Down
5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ embassy-time = { version = "0.3.2", optional = true }
embedded-websocket-embedded-io = { version = "0.1.0", optional = true, default-features = false, features = [
"embedded-io-async",
] }
# NOTE: reqwless 0.13.0 pins embedded-tls 0.17.0 which depends on atomic-polyfill
# (RUSTSEC-2023-0089). Newer embedded-tls versions use portable-atomic instead, but
# reqwless has not released a compatible update yet. Blocked upstream.
reqwless = { version = "0.13.0", optional = true }
Comment thread
e-desouza marked this conversation as resolved.
Comment thread
e-desouza marked this conversation as resolved.
reqwest = { version = "0.12.7", optional = true, features = ["json"] }
tokio-tungstenite = { version = "0.24.0", optional = true, features = [
Expand All @@ -89,6 +92,8 @@ tokio-tungstenite = { version = "0.24.0", optional = true, features = [
embassy-futures = { version = "0.1.1" }
embedded-nal-async = { version = "0.8.0", optional = true }
actix-rt = { version = "2.10.0", optional = true }
# DEPRECATED: async-std has been discontinued (RUSTSEC-2025-0052). Use smol-rt instead.
# Retained so the async-std-rt feature gate resolves; enabling it emits a compile_error.
async-std = { version = "1.13.0", optional = true }
Comment thread
e-desouza marked this conversation as resolved.
Comment thread
e-desouza marked this conversation as resolved.
futures-executor = { version = "0.3.30", optional = true }
futures-timer = { version = "3.0.3", optional = true }
Expand Down
2 changes: 1 addition & 1 deletion src/asynch/clients/exceptions.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#[cfg(not(feature = "std"))]
#[cfg(all(not(feature = "std"), feature = "websocket"))]
use alloc::boxed::Box;
Comment thread
e-desouza marked this conversation as resolved.
use thiserror_no_std::Error;

Expand Down
15 changes: 10 additions & 5 deletions src/asynch/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ pub mod transaction;
#[cfg(feature = "helpers")]
pub mod wallet;

// async-std has been discontinued (RUSTSEC-2025-0052). Emit a compile-time error so
// callers get a clear message instead of a runtime panic, and avoid unreachable-code
// lint when --all-features is used alongside other runtime feature flags.
#[cfg(feature = "async-std-rt")]
compile_error!(
Comment thread
e-desouza marked this conversation as resolved.
"The async-std-rt feature is deprecated and no longer supported. \
async-std has been discontinued (RUSTSEC-2025-0052). \
Use the smol-rt feature instead."
);

async fn wait_seconds(_seconds: u64) {
#[cfg(feature = "tokio-rt")]
{
Expand All @@ -25,11 +35,6 @@ async fn wait_seconds(_seconds: u64) {
use core::time::Duration;
actix_rt::time::sleep(Duration::from_secs(_seconds)).await;
}
#[cfg(feature = "async-std-rt")]
{
use core::time::Duration;
async_std::task::sleep(Duration::from_secs(_seconds)).await;
}
#[cfg(feature = "futures-rt")]
{
use core::time::Duration;
Expand Down
1 change: 0 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ mod _serde;
feature = "tokio-rt",
feature = "embassy-rt",
feature = "actix-rt",
feature = "async-std-rt",
feature = "futures-rt",
feature = "smol-rt"
))
Expand Down
Loading