Furthermore, less complexity means fewer bugs, API easier to learn, and code that is easier to maintain and extend. 6/12
-
Show this thread
-
Safe code inspires confidence. No need to anxiously test runtimes with thread sanitizer, miri, or loom. No need to even use those tools because safe code is immune to the kinds of bugs they catch! 7/12
1 reply 1 retweet 13 likesShow this thread -
Don't worry about tunables because you can tune everything in a custom runtime. 8/12
1 reply 1 retweet 12 likesShow this thread -
Because there is freedom to tune all the moving parts, you should be able outperform all other runtimes by yourself! 9/12
1 reply 1 retweet 14 likesShow this thread -
If you look at how big the presently popular runtimes are, I want to reduce the complexity 10-20x in terms of lines of code and the size of API. 10/12
1 reply 1 retweet 12 likesShow this thread -
I'm also excited to see more people building more async runtimes in Rust! I really think so far we've only been scratching the surface and there is so much yet to explore. 11/12
1 reply 1 retweet 16 likesShow this thread -
Curious to hear thoughts and happy to answer questions! 12/12
4 replies 1 retweet 12 likesShow this thread -
Replying to @stjepang
That sounds great, but we definitely need to make sure that libraries can easily support all these various custom runtimes. At the moment there's too many different types between the different runtimes, so most libraries just get forked entirely instead.
1 reply 0 retweets 0 likes -
Replying to @CryZe107
I agree this is a real problem, but I also think it's not as big as is commonly believed. The solution is to use types from the futures crate instead, and when tempted to use types from a runtime, try to push that use onto the user of your library instead.
1 reply 0 retweets 2 likes -
To illustrate what I mean by that, consider async-h1, a beautifully simple HTTP client/server that consists of just two functions and only uses traits from the futures crate in its API. https://github.com/http-rs/async-h1/blob/f930e7bbbb48c21c69535ab86a4cdc5a36ecde49/examples/server.rs#L30 …
1 reply 0 retweets 6 likes
The point here is that async-h1 is not establishing TCP connections by itself, which is the part specific to runtimes. Instead, it's leaving that part to the user of the library, and only interfacing with it through traits from the futures crate.
-
-
Is there a spawn in futures? I haven't ever managed to stay 100% in futures traits.
1 reply 0 retweets 1 like -
Replying to @InsanityBit @CryZe107
There isn't, but I'd suggest to instead return your future to the user so that they can spawn it however they want. Or use the Spawn trait when that isn't possible.
1 reply 0 retweets 1 like - 1 more reply
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.