rust-analyzer 加入 Rust 组织!

2022年2月21日 · rust-analyzer 团队代表整个 Rust 团队发布

我们有一个令人兴奋的消息要宣布!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 在许多编辑器中享有出色的支持

对于其他编辑器,请查看 手册

最后,如果你使用基于 IntelliJ-Platform 的 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 并在 跟踪 issues 上留下反馈。

过渡完成后,我们将加倍投入技术方面的工作。

虽然 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 支持,尽管它仍然带有一点实验性的色彩。