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

- name: Build (default)
run: cargo build --release
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 }
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 }
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;
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!(
"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
Loading