上周,我们在柏林举办了一场“全员大会”,吸引了来自 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,在各种工具之间共享。
- 贡献:改善编译器的贡献体验。
社区
- Mozilla Activate:发布了页面改版
- RustBridge “打包”:发布了大量资源。
- 活动:制定了活动标准,包括
文档
- 版本规划:确定 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:网络服务
- 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
以及所有组织和主持会议的团队负责人!