async-std was primarily chosen because of its compatibility with gtk-rs. We should migrate away from async-std for two reasons:
- async-std is now deprecated; they recommend smol as a replacement.
- libwebauthn is using Tokio exclusively, and mixing the runtimes is becoming a little awkward.
- We don't plan to have the GTK UI running in the same process as the credential service long-term, so we're not bound to async-std in the service code.
For those reasons, I think we should migrate to Tokio, as it's standard in the Rust ecosystem.
(Another alternative is to create a custom async runtime, but I think that's much more work than is useful right now. Unless we make an explicit decision to shrink our dependency graph for security/auditing purposes, I don't think this will make much of a difference.)
async-std was primarily chosen because of its compatibility with gtk-rs. We should migrate away from async-std for two reasons:
For those reasons, I think we should migrate to Tokio, as it's standard in the Rust ecosystem.
(Another alternative is to create a custom async runtime, but I think that's much more work than is useful right now. Unless we make an explicit decision to shrink our dependency graph for security/auditing purposes, I don't think this will make much of a difference.)