Meta將Rust語言納入其伺服器端程式語言

banq發表於2022-07-28

在 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 語言生態系統的長期承諾和支援。

 

相關文章