构建 Async Rust 的共同愿景

2021年3月18日 · Niko Matsakis 代表 Async 基础工作组

Async 基础工作组认为 Rust 可以成为构建分布式系统的最受欢迎的选择之一,从嵌入式设备到基础云服务。无论他们用它做什么,我们都希望所有开发者都喜欢使用 Async Rust。要实现这一点,我们需要将 Async Rust 从今天的“MVP”状态中提升出来,并使其对所有人开放。

我们正在发起一项合作努力,以建立一个关于 Async Rust 的共同愿景文档我们的目标是让整个社区参与到一场集体想象中:我们如何使使用异步 I/O 的端到端体验不仅成为一个务实的选择,而且成为一个令人愉快的选择?

愿景文档从现状开始...

“愿景文档”从一系列角色开始。每个角色都与特定的 Rust 价值(例如,性能、生产力等)相关联,这由他们的背景决定;这种背景也影响了他们在使用 Rust 时的期望。

让我向您介绍一个角色,Grace。作为一名经验丰富的 C 开发人员,Grace 习惯于高性能和控制,但她喜欢使用 Rust 来获得内存安全的想法。这是她的传记

Grace 编写 C 和 C++ 代码多年。她习惯于破解许多底层细节,以便从代码中获得尽可能高的性能。她也经历过很多由于 C 语言内存错误导致的史诗般的调试过程。她对 Rust 很感兴趣:她喜欢从 C 中获得相同的控制和性能,同时获得内存安全带来的生产力优势的想法。她目前正在尝试将 Rust 引入她正在处理的一些系统,并且她也在考虑将 Rust 用于一些全新的项目。

对于每个角色,我们将编写一系列“现状”故事,描述他们在试图实现目标时面临的挑战(并且通常会以戏剧性的方式失败!)。这些故事不是虚构的。它们是使用 Async Rust 的人们的真实经历的融合,这些经历是通过访谈、博客文章和推文报告给我们的。为了让您了解情况,我们目前有两个例子:一个是Grace 必须调试她编写的自定义 future,另一个是来自 GC 语言的程序员 Alan -- 遇到堆栈溢出并必须调试原因

编写“现状”故事有助于我们弥补知识诅咒:致力于 Async Rust 的人们往往是 Async Rust 的专家。我们已经习惯了成为生产力所需的解决方法,并且我们知道可以让你摆脱困境的小技巧。这些故事帮助我们评估所有细微之处对仍在学习的人产生的累积影响。这为我们提供了确定优先级所需的数据。

...然后讲述我们将如何改变它

当然,愿景文档的最终目标不仅仅是告诉我们现在在哪里,而是我们要去哪里以及我们将如何到达那里。一旦我们在现状故事方面取得了良好进展,下一步将是开始集思广益,讨论关于“闪亮的未来”的故事。

闪亮的未来故事讲述了未来 2 或 3 年异步世界可能的样子。通常,它们会重演与“现状”故事相同的场景,但有一个更快乐的结局。例如,也许 Grace 可以访问一个能够诊断她卡住的任务并告诉她它们被阻塞在何种 future 上的调试工具,因此她不必在日志中搜索。也许编译器可以警告 Alan 可能的堆栈溢出,或者(更好的是)我们可以调整 select 的设计以首先避免该问题。我们的想法是雄心勃勃,首先专注于我们想要创建的用户体验;我们将找出沿途的步骤(如果需要,可能需要调整目标)。

让整个社区参与进来

Async 愿景文档为 Async Rust 社区提供了一个论坛,以便为 Async Rust 用户规划出色的整体体验。Async Rust 的设计有意不采用“一刀切”的心态,我们不希望改变这一点。我们的目标是为端到端体验建立一个共同愿景,同时保留我们已经建立的松散耦合、以探索为导向的生态系统。

我们用于编写愿景文档的过程鼓励积极协作和“正和”思维。它从集思广益阶段开始,在此期间,我们的目标是收集尽可能多的“现状”和“闪亮的未来”故事。这个集思广益阶段将持续六周,直到 4 月底。在前两周(直到 2021-04-02),我们只收集“现状”故事。之后,我们将接受“现状”和“闪亮的未来”故事,直到集思广益阶段结束。最后,为了结束集思广益阶段,我们将为“最幽默的故事”或“最具支持性的贡献者”等奖项选出获奖者。

集思广益阶段完成后,工作组负责人将开始工作,将各种故事和闪亮的未来组合成一个连贯的草案。该草案将由社区和 Rust 团队审查,并根据反馈进行调整。

想帮忙吗?

如果您想帮助我们编写愿景文档,我们很乐意让您贡献您的经验和愿景!现在,我们专注于创建现状故事。我们正在寻找可以撰写 PR 或在问题或其他地方谈论他们经验的人。如果您想开始,请查看现状故事的模板——它包含了您打开 PR 所需的所有信息。或者,您可以查看如何制定愿景页面,该页面详细介绍了整个愿景文档流程。