Meta将Rust语言纳入其服务器端编程语言


在 Meta 支持一种编程语言是一个非常谨慎和深思熟虑的决定。
Rust 是 Meta 支持的服务器端语言列表中的最新成员。

Meta 支持的语言意味什么?
在我们深入了解各个细节之前,以下是 Meta 中支持的含义(并不意味着): 

  • 如果支持一种语言,开发人员可以指望在代码编辑、调试、构建和部署以及核心库和互操作性方面获得良好的体验。开发人员还可以指望这种体验不会消失——他们不会被要求放弃支持的语言。在大多数情况下,Meta 建议为新项目和服务选择支持的语言。 
  • 完全支持一种语言是 Meta 的一项重大投资,因此“长尾”语言是社区支持的。对于这些语言,保证少得多,采用它们的团队将不得不承担维护负担。在大多数情况下,团队应该避免将它们用于新的应用程序,除非团队已经对语言进行了大量投资。 

Meta 主要支持的服务器端语言是 Hack、C++、Rust 和 Python 。 

  • 对于性能敏感的后端服务,我们鼓励使用 C++ 和 Rust。Rust 是这个列表的新成员。我们的产品和服务中的 Rust 足迹正在迅速增加,我们致力于 Rust 的长期发展并欢迎早期采用者。  
  • 对于CLI 工具,我们推荐使用 Rust。这是今年的新建议。  
  • 对于业务逻辑和相对无状态的应用程序,Hack 生态系统具有 Meta 最高级别的自动化和支持,是推荐的语言。 
  • 最后,Meta 继续大力支持我们的 Python 开发人员。对于数据科学、机器学习应用程序和 Instagram,Python 仍然是首选语言,我们继续投资于这个生态系统的体验。  
  • 对于特定用例,我们支持其他语言,包括 Java、Erlang、Haskell 和 Go。这些语言目前在特定用例之外没有得到广泛支持。  

我们是如何获得支持的语言列表的? 
让我们解释一下为什么我们有一个受支持的语言列表,以及为什么我们通常不愿意将语言添加到该列表中(尽管 Rust 是新添加的)。主要原因是支持元规模的编程语言需要大量的工程投资,而且成本分布广泛——不仅仅是由用户承担。一些例子: 

  • 支持核心库。孤立的服务很少,我们拥有的语言越少,核心库的负担就越小。 
  • 安全和隐私。分散的堆栈提高了在我们的服务中构建重要的安全和隐私功能的复杂性。
  • 操作风险。如果某些服务遇到严重问题,则需要立即提供帮助。我们在诊断和解决生产问题方面积累了令人难以置信的专业知识,我们的事件响应依赖于能够读取、理解和调试服务来帮助解决重大事件。避免碎片化可降低运营风险。 
  • 专业知识。我们建立并维持大量具有每种语言专业知识的工程师。 
  • 开发者经验。支持的语言有团队致力于改进 IDE 支持、构建速度、调试体验等领域。  

为项目选择次优语言可能会在时间、效率和生产力方面付出高昂的代价。因此,值得对我们评估的每种语言进行严格审查。上面的例子展示了我们在支持一种语言方面投入了多少。


Rust 是 Meta 最新的服务器端语言
自从我们开始使用 Rust 以来,在 Meta 中使用 Rust 的项目数量以加速的速度增加。我们很高兴看到 Rust 被添加到这个服务器端支持的语言列表中,为我们的工程师提供了更多的工具、灵活性和对他们工作的支持。Meta 致力于为我们的开发人员使用的编程语言提供长期支持,此举标志着 Meta 对 Rust 语言生态系统的长期承诺和支持。