我们有一个激动人心的消息要宣布!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 仍然带有一些实验性的色彩,但如今 Rust 已经拥有了出色的 IDE 支持。