我们有一个激动人心的消息要宣布!rust-analyzer 项目,一个新的 Rust 语言服务器协议 (LSP) 实现,现在正式成为更广泛的 Rust 组织的一部分!🎉
首先,我们要感谢所有帮助我们走到今天的人,从贡献者到赞助商,再到 Rust 社区中所有使用 rust-analyzer 的用户。没有你们,我们不可能做到这一点。
这种组织变革的直接影响有限——对于 rust-analyzer 用户或贡献者来说,没有任何变化。但是,此更改为技术工作扫清了障碍,使 rust-analyzer 在不久的将来成为 Rust 的官方推荐语言服务器。
如果您之前犹豫是否要尝试 rust-analyzer,今天是一个好机会。它不仅是一个非常强大的 Rust 语言服务器,而且根据 VS Code 统计数据,它是所有编程语言中评价最高的 LSP 实现之一。我们强烈建议您今天尝试一下 rust-analyzer,即使我们还需要一些时间才能完成必要的流程,并从现有的官方推荐 LSP 实现 (RLS) 正式切换过来。
rust-analyzer 在许多编辑器中都享有极佳的支持
- 对于 VS Code,请从市场安装 rust-analyzer 扩展。
- 对于 Neovim,请按照 这篇博文 中的设置说明进行操作。对于 Vim,请参阅 coc-rust-analyzer。
- 对于 Emacs,请按照 这篇博文 中的设置说明进行操作。
对于其他编辑器,请查看 手册。
最后,如果您使用的是基于 IntelliJ 平台的 IDE,例如 CLion、IDEA 或 PyCharm,则不需要 rust-analyzer。您应该使用 JetBrains 开发的强大的 IntelliJ Rust 插件。
历史与未来
rust-analyzer 项目始于 2017 年底 (首次提交)。当时,现有的 LSP 实现 RLS 已经为 Rust 提供了 IDE 支持多年。虽然它很好地处理了最重要的功能,但它显然远远没有其他语言的最新 IDE 提供的体验。
最初,计划只是尝试对 Rust 进行错误容忍的解析;但是,当您有一个好的解析器时,在它之上 添加一个简单的 LSP 服务器 非常诱人。长话短说,它出乎意料地花费了很少的精力就得到了一个原型,该原型已经可以用作 IDE,这发生在 2018 年秋季。在那个关键时刻,公司 Ferrous Systems(当时本身也才刚刚成立)介入为原型的进一步开发提供资金。
在 2019 年,当时新生的 rust-analyzer 社区努力构建 IDE 的基础。到 2020 年,我们意识到我们所构建的不再是一个原型,而是一个对日常 Rust 编程已经非常有用的工具。这最终导致了 RFC2912:“将 rust-analyzer 作为我们的官方 LSP(语言服务器协议)实现”。RFC 在社区中获得了压倒性的支持:它仍然是有史以来投票最多的 Rust RFC。但是,计划中出现了一个小问题——rust-analyzer 不是一个官方的 Rust 项目!这就是我们今天要解决的问题!
接下来,我们将按照 RFC 中概述的计划进行:宣传 rust-analyzer 作为 Rust IDE 支持的未来,收集反馈,并在获得积极结果的情况下,停止使用 RLS,即当前推荐的语言服务器。因此,再次尝试 rust-analyzer,并在 跟踪问题 上留下反馈。
过渡后,我们将加倍努力进行技术方面的工作。
尽管 rust-analyzer 今天已经非常令人兴奋,但它只是将编译器对代码的复杂理解带入文本编辑器时可能实现的功能的冰山一角。我们的最终目标是创建一个 API,用于分析和转换 Rust 代码,并完全访问语义。
资金
当前过渡中最难解决的问题之一是资金问题。今天,Rust 被组织成一组相对独立的项目(rustc、cargo、rustup、rustfmt),并且故意没有办法直接为特定项目提供资金。新的 Rust 基金会 是赞助 Rust 的官方场所,基金会理事会负责监督资金分配。然而,一直鼓励个人寻求个人资金。虽然 Rust 项目可能会宣传针对个人贡献者的资金机会,但它不会正式 *认可* 这些努力,也不会促进对整个团队的资金支持。
rust-analyzer 从其 OpenCollective 和后来的 GitHub Sponsors 收到了大量资金,由 Ferrous Systems 管理。此 OpenCollective 为个人贡献者和 Ferrous Systems 员工的努力提供资金。有关此方面的详细信息可以在他们的 透明度报告 中找到。
幸运的是,OpenCollective 一直以一种可以将其转移到不同的帐户持有者的方式进行管理。通过这次过渡,OpenCollective 将从“rust-analyzer OpenCollective”更名为“Ferrous Systems OpenCollective (rust-analyzer)”。这使当前的赞助商能够继续赞助,并明确表明他们选择的项目将继续获得资金。
从某种意义上说,OpenCollective 被交给了 Ferrous Systems。所有赞助积分将转移到 https://ferrous-systems.com/open-source/#sponsors。
我们要感谢 Ferrous Systems 在此过程中表现出的开放性和灵活性,感谢他们周到地确保 rust-analyzer 周围的资金状况清晰,并感谢他们承担了筹款工作。
最终,rust-analyzer GitHub Sponsors 也将从 rust-analyzer GitHub 组织中迁移出去。
当然,公司支持 rust-analyzer 开发的另一个好方法是雇用 参与 rust-analyzer 开发的人员 继续进行开发。
感谢
我们再次感谢所有帮助 rust-analyzer 走到今天的人。从实验到成为 Rust 的官方推荐 LSP 实现,没有我们的贡献者、赞助商和用户的帮助,我们不可能做到这一点。
结论
这就是我们目前所处的位置!感谢 rustc、clippy、cargo、LSP、IntelliJ Rust、RLS 和 rust-analyzer 的优秀贡献者,Rust 今天已经拥有了强大的 IDE 支持,即使它仍然带有一点实验性的风格。