Rust 团队柏林全体会议:回顾

2018 年 4 月 6 日 · Aaron Turon

上周,我们在柏林举行了一次“全体会议”活动,吸引了 50 多位来自 15 个不同的 Rust 团队或工作组的参与者,其中大多数是志愿者贡献者。这是第一次举办此类活动,其地点反映了目前欧洲团队成员的集中程度。这次活动非常成功,我们计划至少每年重复一次。

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

我们也要求与会者在 #RustAllHands 标签上发布关于他们经历的博客和推文;内容团队也将收集和总结这些内容。

各团队的亮点

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

语言设计

  • :为 2018 版本制定了一个提案。
    • 稳定化程序宏的前向兼容子集,该子集明确选择不使用卫生(通过要求所有名称在调用站点进行解释)。
    • 根据我们目前所学到的知识,制定一个修订后的程序宏 API 表面。
    • 稳定化通过普通 use 语句导入宏的功能。
    • Alex Crichton 将推动稳定化过程。.
  • 外部类型:处理了剩余的稳定化问题
  • 改进 derive:一个提案,旨在使 derive 在 Rust 2018 中更加符合人体工程学。
  • 最佳实践:建立一个跨领域的指南工作,包括 API 指南,但也包括风格、lint 和 Lang 团队的建议。

编译器

  • 工具集成:关于编译器客户端的需求、可组合插件以及编译器的新查询架构进行了广泛的讨论和规划。
  • 查询编译:一个端到端查询编译的计划,即完全增量编译。
  • 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 日志中提取错误

工作组:CLI 应用程序

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

工作组:网络服务

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

工作组:嵌入式设备

  • 工作组概述幻灯片
  • 稳定版上的嵌入式 Rust:解决了所有已知的阻止程序和几个中等优先级别的问题。
  • 嵌入式 Rust 书籍:定义了受众和基本纲要。

工作组:WebAssembly

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

不安全代码指南

  • 重启工作组:重新深入研究了两种相互竞争的方法(基于“有效性”和“访问”的方法),并对这两种方法进行了实质性的迭代。Niko Matsakis 和 Ralf Jung 将撰写关于这些想法的博客文章
  • 紧急问题:解决了几个需要做出的近期决策,包括 union 语义、Pin 语义、thread::abort 等等。

网站

  • 领域工作组草图:在几次会议中,四个以领域为中心的工作组(上面列出)为每个领域开发了一些初始的着陆页草图。

Rust 影响范围

新的工作组

除了现有团队的工作之外,我们还有足够的关键人员来组建两个新的工作组。

  • 验证:汇集对测试、静态分析和形式验证感兴趣的人员。
  • 代码生成:致力于改进 rustc 生成的代码的质量,包括大小和运行时性能。

验证工作组已正式宣布,代码生成工作组也应很快宣布!

一般性思考和感谢

拥有一个明确的目标——Rust 2018——以及大多数团队成员的出席,使得全体会议非常有趣且富有成效。我们努力通过异步在线沟通保持 Rust 社区的开放和包容,但偶尔聚在一起面对面交流也很重要。上周的雄心壮志和善意精神真正体现了 Rust 社区的精神。

当然,如果没有大量的帮助,这样的活动是不可能实现的,我想感谢共同组织者和 Mozilla 柏林办公室的工作人员

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

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