Deprecate async-std-rt and document reqwless upgrade blocker#130
Deprecate async-std-rt and document reqwless upgrade blocker#130
Conversation
c59fa5f to
761b32b
Compare
761b32b to
96bdb61
Compare
96bdb61 to
695145c
Compare
|
Can you document this change in CHANGELOG.md? This is somewhat still a breaking change imo since previously working code will not work anymore before switching |
31eee08 to
510a127
Compare
510a127 to
4538380
Compare
…cker Replace async-std sleep implementation with a deprecation warning and runtime panic. Using compile_error! would break --all-features builds (including CI clippy checks), so instead we emit a deprecation warning at compile time and panic at runtime if the feature is actually exercised. Also document in Cargo.toml that the atomic-polyfill advisory (RUSTSEC-2023-0089) is blocked upstream on a reqwless update. Closes #126 Partially addresses #111
… and reqwless blocker
…t deprecation async-std has been discontinued (RUSTSEC-2025-0052). Using panic!() inside a #[cfg(feature = "async-std-rt")] block caused clippy to report an unreachable statement on the subsequent futures-rt block when --all-features was used, because panic!() is a diverging expression. Replace the runtime panic with a module-level compile_error!() so: - Users get a clear compile-time message instead of a runtime panic - No unreachable-code lint is triggered (compile_error! is at module level) - The CI clippy step now uses an explicit feature list excluding async-std-rt (--all-features would always fail since compile_error! fires unconditionally)
1719ffc to
563c441
Compare
alloc::boxed::Box is only used by XRPLWebSocketError which is gated on feature = "websocket". Without the websocket gate, building with only json-rpc produces an unused import warning.
There was a problem hiding this comment.
A few issues flagged inline: narrowed cfg guard on Box import risks no_std breakage, a misleading comment calls a compile-time error a runtime panic, two supply-chain advisories (RUSTSEC-2023-0089, RUSTSEC-2025-0052) lack CI suppression/tracking entries, and the hardcoded Clippy feature list needs a sync reminder.
Review by Claude Opus 4.6 · Prompt: V13
- Cargo.toml: correct comment to say "compile_error" not "runtime panic" - build_and_lint.yml: add note for contributors to manually add new features
There was a problem hiding this comment.
Four follow-up issues flagged inline: two related to the async-std dep still being resolved by Cargo despite the compile_error! guard, one for the unresolved atomic-polyfill advisory (RUSTSEC-2023-0089), and one for the hardcoded Clippy feature list requiring manual upkeep.
Review by Claude Opus 4.6 · Prompt: V13
|
Done in |
The runtime list in src/lib.rs guarded helpers against missing a runtime, but still accepted async-std-rt even though it is deprecated and always trips the compile_error! in src/asynch/mod.rs; dropping it makes the missing-runtime message fire first and keeps the two checks consistent.
The rippleci/rippled:develop image updated after 2026-04-01 and broke integration tests across all PRs (container exits before becoming healthy, causing Connection refused on localhost:5005). Pin to the last known-good digest and replace the simple until loop with a bounded retry that checks container liveness, prints status per attempt, and dumps container logs on failure.
… #3270) (#291) ## Summary The `rippled` binary was renamed to `xrpld` upstream, and the `rippleci/rippled` image stopped receiving updates. Our integration tests across every open PR started failing because the published `develop` image exited before becoming healthy (`Connection refused` on `localhost:5005`, **0 passed / 41 failed**). This PR mirrors the upstream fix in xrpl.js: [XRPLF/xrpl.js#3270](XRPLF/xrpl.js#3270). Switching to `rippleci/xrpld:develop` is the **actual root-cause fix** rather than pinning an old digest of the deprecated image. ## Changes `.github/workflows/integration_test.yml`: - `RIPPLED_DOCKER_IMAGE` -> `XRPLD_DOCKER_IMAGE: rippleci/xrpld:develop`. - `docker run` simplified to `${IMAGE} --standalone` (the `xrpld` image handles `mkdir` + launch internally; no more `bash -c "mkdir -p /var/lib/rippled/db/ && rippled -a"` wrapper). - Volume mount changed from `/etc/opt/ripple/` to `/etc/opt/xrpld/`. - Container name: `rippled-service` -> `xrpld-service`. - Removed the docker `--health-cmd` (which shelled out to the renamed `rippled` CLI and always failed) in favour of a direct JSON-RPC poll against `http://localhost:5005/`. - Always dump container logs on the stop step for post-mortem visibility. `.ci-config/rippled.cfg` -> `.ci-config/xrpld.cfg`: - `path=/var/lib/rippled/db/nudb` -> `path=/var/lib/xrpld/db/nudb`. - `[database_path] /var/lib/rippled/db` -> `/var/lib/xrpld/db`. - `[debug_logfile] /var/log/rippled/debug.log` -> `/var/log/xrpld/debug.log`. ## Verification Validated on throwaway PR #292 (now closed): **Integration Test green in 2m53s** on this exact workflow. Unit tests, Build & Lint, Quality Check also pass. ## Related follow-up The 7 in-flight PRs (#130, #131, #151, #153, #156, #157, #158) currently carry a stopgap commit pinning `rippleci/rippled:develop` to a specific digest. After this PR merges to `main`, those branches should: 1. Rebase on `main` to pick up the xrpld switch, or 2. Cherry-pick this commit and drop the stopgap digest pin. ## Test plan - [x] Validated end-to-end on PR #292 - [x] Build & Lint, Unit Test, Integration Test, Quality Check all pass - [ ] Merge and confirm subsequent PRs inherit the fix without manual cherry-pick ## Credit Approach lifted from @ckeshava's [xrpl.js#3270](XRPLF/xrpl.js#3270).
High Level Overview of Change
async-std-rtfeature with acompile_error!directing users tosmol-rtreqwless0.13.0 pinsembedded-tls0.17.0 which still depends onatomic-polyfill, and that this is blocked upstreamCloses #126
Partially addresses #111
Context of Change
async-std (#126): The
async-stdcrate has been officially discontinued (RUSTSEC-2025-0052). Rather than silently removing the feature (which would be a breaking change for anyone who has it in theirCargo.toml), this replaces the runtime implementation with acompile_error!that tells users to switch tosmol-rt. Theasync-stddependency is retained inCargo.tomlso the feature gate still resolves -- it just immediately errors at compile time with a clear message.atomic-polyfill (#111): The advisory (RUSTSEC-2023-0089) comes from
embedded-tls0.17.0, which is pulled in byreqwless0.13.0. Newer versions ofembedded-tlshave migrated toportable-atomic, butreqwless0.13.0 pins the old version. There is no compatiblereqwlessrelease that fixes this yet. Added a comment inCargo.tomldocumenting the situation so it's tracked in-tree rather than only in the issue tracker.Type of Change
Before / After
Before:
async-std-rtfeature compiles and runs using a discontinued runtimecargo auditreports RUSTSEC-2025-0052 (async-std) and RUSTSEC-2023-0089 (atomic-polyfill)After:
async-std-rtproduces a clear compile-time error: "The async-std-rt feature is deprecated. async-std has been discontinued (RUSTSEC-2025-0052). Use smol-rt instead."atomic-polyfillsituation documented in Cargo.toml (upstream-blocked on reqwless update)cargo auditadvisory count reducedTest Plan