hyperswitch
tokio
hyperswitch | tokio | |
---|---|---|
1 | 222 | |
- | 28,787 | |
- | 1.2% | |
- | 9.5 | |
- | 7 days ago | |
Rust | ||
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
hyperswitch
tokio
-
Why doesn't Rust care more about compiler performance?
docs.rs is just barely viable because it only has to build crates once (for one set of features, one target platform etc.).
What you propose would 1) have to build each create for at least the 8 Tier 1 targets, if not also the 91 Tier 2 targets. That would be either 8 or 99 binaries already.
Then consider that it's difficult to anticipate which feature combinations a user will need. For example, the tokio crate has 14 features [1]. Any combination of 14 different features gives 2^14 = 16384 possible configurations that would all need to be built. Now to be fair, these feature choices are not completely independent, e.g. the "full" feature selects a bunch of other features. Taking these options out, I'm guessing that we will end up with (ballpark) 5000 reasonable configurations. Multiply that by the number of build targets, and we will need to build either 40000 (Tier 1 only) or 495000 binaries for just this one crate.
Now consider on top that the interface of dependency crates can change between versions, so the tokio crate would either have to pin exact dependency versions (which would be DLL hell and therefore version locking is not commonly used for Rust libraries) or otherwise we need to build the tokio crate separately for each dependency version change that is ABI-incompatible somewhere. But even without that, storing tens of thousands of compiled variants is very clearly untenable.
Rust has very clearly chosen the path of "pay only for what you use", which is why all these library features exist in the first place. But because they do, offering prebuilt artifacts is not viable at scale.
[1] https://github.com/tokio-rs/tokio/blob/master/tokio/Cargo.to...
-
A Journey From JS To Rust
Currently, the de facto standard async runtime is tokio. Beginners can just use tokio without much thought.
-
Exploring the top Rust web frameworks
Gotham is a flexible web framework built for stable Rust that promotes “stability, safety, security, and speed.” It provides async support with the help of Tokio and hyper out of the box.
-
Building a simple Kubernetes Controller in Rust - Part 1
Because of the nature of Kubernetes and its operation being "network operations", kube-rs considers all the operations as "async" operations, and we need a way to manage it. The well-known and mostly used way of doing it is with the tokio framework. Adding tokio, with features of "macros" (to use macros like #[tokio::main]) and a runtime (rt-multi-thread) should be enough. Additionally, we need to return an error to this function, so we will be using anyhow crate, that allows us to return errors without worrying about the error type
- Why I'm Writing a Scheme Implementation in 2025 (The Answer Is Async Rust)
-
The Inevitability of the Borrow Checker
The situation in Rust seems to be pretty complicated. But I did find that panicking within a thread you spawn kills just that thread and not the whole program. And it seems that Tokio has the same behavior.
https://github.com/tokio-rs/tokio/issues/2002
And web frameworks like Tower provide standard ways of Helen’ handling panics and turning them into error responses.
https://docs.rs/tower-http/latest/tower_http/catch_panic/ind...
So I don’t think panics are necessarily meant to be program-killing in Rust, even if Result types are heavily recommended instead.
-
Zig; what I think after months of using it
There's compiler-level traits like `Iterator` and `Future` which enforce references. If wanting to do intrusive pointers into them, one risks creating overlapping references: https://github.com/tokio-rs/tokio/issues/3399
- Build It Yourself
-
Rusty Backends
Full Tokio compatibility
-
Rust Implementation Guide - from efficient learning to implementation
[20] Tokio - An asynchronous Rust runtime
What are some alternatives?
actix - Actor framework for Rust.
smol - A small and fast async runtime for Rust
Servo - Servo aims to empower developers with a lightweight, high-performance alternative for embedding web technologies in applications.
futures-rs - Zero-cost asynchronous programming in Rust
this-week-in-rust - Data for this-week-in-rust.org
async-std - Async version of the Rust standard library