Tokio 改版 的 RFC

2017年9月19日

大家好,Tokio 社区!

Carl、Alex 和我一直在努力开发简化、精简和聚焦 Tokio 项目的方法。作为这项工作的一部分,我们编写了第一个 Tokio RFC

以下是关于提案内容的快速概览。

  • tokio-core 中添加一个全局事件循环,默认情况下自动管理。 此更改消除了在绝大多数情况下设置和管理您自己的事件循环的需要。

    • 此外,通过使 Handle 同时实现 SendSync 并弃用 Remote,消除 tokio-coreHandleRemote 之间的区别。 因此,即使使用自定义事件循环也变得更简单。
  • 将所有任务执行功能与 Tokio 解耦,而是通过标准的 futures 组件提供。 与事件循环一样,提供一个默认的全局线程池,足以满足大多数用例,从而无需任何手动设置。

    • 此外,当在线程本地运行任务(对于非 Send futures)时,提供更可靠的 API,以帮助避免丢失唤醒。
  • 在新的 tokio crate 中提供上述更改,它是今天 tokio-core 的精简版本,并且最终可能会重新导出 tokio-io 的内容。 tokio-core crate 已被弃用,但为了向后兼容性仍将可用。 从长远来看,大多数用户应该只需要依赖 tokio 即可使用 Tokio 栈。

  • 文档重点主要放在 tokio 上,而不是 tokio-proto 上。 提供更广泛的 cookbook 风格的示例和通用指南,以及更深入的 futures 使用指南。

总而言之,这些更改,以及 async/await,应该会在使 Tokio 成为对新手友好的库方面取得长足的进步。 请查看 RFC 并留下您的反馈!

一旦我们就 RFC 达成共识,我们计划成立一个实现期的工作组,主要专注于文档和示例。 从那时起,我们将与 Hyper 团队合作,以确定故事的下一章。 敬请关注!

—Aaron Turon