Rust 团队在柏林的全员大会:回顾

2018 年 4 月 6 日 · Aaron Turon

上周,我们在柏林举办了一场“全员大会”,吸引了来自 15 个不同 Rust 团队或工作组的 50 多人参加,其中大多数是志愿者贡献者。这是第一次举办这样的活动,其地点反映了目前团队成员在欧洲的集中度。这一周取得了巨大成功,我们计划至少每年举办一次。

这次聚会的动力部分来自于我们 雄心勃勃的计划,要在今年晚些时候发布 *Rust 2018 版*。一周以工作为中心的面对面交流是启动这些努力的绝佳方式!

我们还要求与会者在 #RustAllHands 标签下发布博客和推文,分享他们在活动中的体验;内容团队将收集和总结这些内容。

按团队划分的亮点

下面我们将回顾上周讨论的最重要事项。请注意,与往常一样,在会议中达成共识并不意味着任何最终决定已经做出。所有重大决定都将通过通常的 RFC 流程 进行。

语言设计

  • :为 2018 版制定了一份提案。
    • 稳定一个向前兼容的程序宏子集,该子集明确选择退出卫生(通过要求所有名称在调用站点进行解释)。
    • 根据我们迄今为止的经验,制定一个修订后的程序宏 API 表面。
    • 稳定通过正常的 use 语句导入宏。
    • Alex Crichton 将推动稳定过程.
  • 外部类型:解决了 稳定过程中的剩余问题
  • derive 的改进:一项 提案,旨在使 Rust 2018 中的 derive 更符合人体工程学。
  • 最佳实践:建立一个跨领域指南工作,涵盖 API 指南,还包括风格、lint 和 Lang 团队的建议。

  • SIMD:讨论了稳定过程的最后步骤;我们希望在 1.27 版本中稳定
  • 分配器:为稳定全局分配器制定了一个保守的提案;Simon Sapin 创建了一个 新的跟踪问题

编译器

  • 工具集成:关于编译器客户端、可组合插件和编译器的新查询架构需求的广泛讨论和规划。
  • 查询编译:一个端到端查询编译计划,即完全增量编译。
  • libsyntax:一个长期计划,用于改进 libsyntax,在各种工具之间共享。
  • 贡献:改善编译器的贡献体验。

社区

文档

  • 版本规划:确定 2018 版所需的资源,这对 Rust 书架意味着什么,以及谁将负责每个部分。
  • 团队博客:“本周 Rust 文档”将迁移到新的 文档团队博客
  • Doxidize(又名 rustdoc2):进行了 首次公开发布;它类似于 https://docusaurus.org.cn/,但适用于 Rust。
  • 中级文档:为 想法生成做出了贡献。

工具

  • 版本规划,特别是针对 rustfix 工具。
  • Clippy lint 审计:制定了今年让 Clippy 达到 1.0 的计划,方法是将 lint 分为正确性、性能、风格、复杂度、迂腐和育苗类别。
  • 自定义测试框架:就 RFC 中的大多数细节达成共识
  • IDE:讨论了对代码补全的改进、稳定性改进以及重构和自动导入支持等新功能。

Cargo

  • Xargo 集成:将更多平台提升为一级平台可以满足嵌入式开发的迫切需求;否则,计划在 2018 年晚些时候采用 “支持 std 的 Cargo”路线。关键见解:将完全淘汰 rustup 中的“目标”概念。
  • Rustup 集成:通过 Xargo 集成,我们可以简化 rustup;计划在 2018 年晚些时候通过 Cargo 公开新的接口。
  • 自定义注册表:准备稳定。
  • 配置文件:v2 设计已经明确,Aleksey Kladov 计划实施
  • 公共依赖项:对计划进行了重大修改,以减少对生态系统的影响。Aaron Turon 将撰写一篇博客文章
  • 构建系统集成:确定了两个要实现的功能,以将 RLS 与 Cargo 解耦。
  • 项目模板:制定了一个最小设计;withoutboats 将撰写一个 RFC
  • 自定义工作流:设计了工作流自定义功能,这对框架很有用;Aaron Turon 已经撰写了一篇 博客文章

基础设施

  • bors 队列:为减少 Rust 2018 的 PR 队列,制定并资源化了许多想法。
  • crater:pietroalbini 正在测试一个用于运行 crater 的机器人!
  • Travis 日志机器人:TimNN 已经 编写了一个机器人,用于从 Travis 日志中 提取错误

WG:CLI 应用

  • WG 概述幻灯片.
  • 调查和策略:深入研究调查数据并制定策略;文章即将发布。
  • 分发:crates.io 上的“分发友好”徽章
  • 可扩展的 Cargo 安装:现场撰写了 一个 RFC

WG:网络服务

  • WG 概述幻灯片.
  • 启动 WG:确定了 WG 的目标,包括 async/await、文档、中级 HTTP 库和 Tower 生态系统。启动公告即将发布!
  • Async/await:为 RFC 确定了最终设计和稳定方法(博客文章和 RFC 链接 在此)。

WG:嵌入式设备

  • WG 概述幻灯片
  • 稳定版上的嵌入式 Rust:解决了所有已知阻碍因素以及一些中等优先级问题。
  • 嵌入式 Rust 手册:定义了受众和基本大纲。

WG:WebAssembly

  • WG 概述幻灯片.
  • 2018 版规划,包括为发布确定工具链和手册工作范围。
  • JS 集成:深入研究了在 wasm-bindgen 中集成 JS 回调与 Rust 函数。
  • 生态系统集成:wasm-bindgen 现在支持 CommonJS!
  • 代码膨胀减少了 panic 的占用空间,从 44k 降至 350 字节。

不安全代码指南

  • 重启 WG:重新研究了两种竞争方法(“有效性”和“访问”),对两者进行了大量迭代。Niko Matsakis 和 Ralf Jung 将撰写博客文章介绍这些想法
  • 紧迫问题:解决了一些需要立即做出的决定,包括 union 语义、Pin 语义、thread::abort 等等。

网站

  • 领域 WG 草图:在几个会议中,四个以领域为中心的 WG(如上所述)为每个领域开发了一些初始的着陆页草图。

Rust 影响力

  • 准备发布,发布发生在本周早些时候!

新的工作组

除了现有团队的工作外,我们还拥有足够的成员来组建两个新的工作组

  • 验证:将对测试、静态分析和形式验证感兴趣的人员聚集在一起。
  • 代码生成:努力提高 rustc 生成的代码质量,包括大小和运行时性能。

验证 WG 已经 正式宣布,代码生成 WG 很快也会宣布!

总体反思和感谢

拥有明确的目标——Rust 2018——以及大多数团队成员的参与,使得全员大会变得非常有趣和富有成效。我们努力通过异步在线沟通来保持 Rust 社区的开放和包容性,但偶尔也需要面对面聚会。上周的雄心壮志和善意完美地体现了 Rust 社区的精神。

当然,这样的活动离不开许多人的帮助,我要感谢共同组织者和 Mozilla 柏林办公室的工作人员

  • Johann Hofmann
  • Jan-Erik Rediger
  • Florian Gilcher
  • Ashley Williams
  • Martyna Sobczak

以及所有组织和主持会议的团队负责人!