2 days ago
- 作者从2017年开始使用Rust,并认为异步Rust由于与Rust独特约束的结合而显得复杂,并非设计不佳。
- 许多应用程序可能不需要N:M线程(如异步),因为现代计算机对于OS线程来说已经足够快,但开发者仍希望Rust具备此功能,以便与Go和C++竞争。
- Rust的零成本抽象目标阻止了采用需要重量级运行时的类似Go的异步模型,这可以从绿色线程的移除中看出。
- 异步Rust中关于Arc和Mutex的问题实际上是通用的并发问题,并非异步独有的,并且源于糟糕的设计思维,而非异步本身。
- 异步Rust面临'crate染色'问题,大多数与IO相关的crate都是异步的,迫使同步程序引入异步依赖,并且Tokio主导了生态系统,限制了执行器的选择。
- 该语言缺乏对trait、Drop和闭包的异步支持,使得异步成为二等公民,尽管正在探索效果系统扩展。
- sans-IO模式通过将IO与逻辑分离来反转控制,允许在同步和异步实现之间共享代码,并减少依赖膨胀。