Programming languages endorsed for server-side use at Meta

Supporting a programming language at Meta is a very careful and deliberate decision. We’re sharing our internal programming language guidance that helps our engineers and developers choose the best…

Eric Garcia
5 min readintermediate
--
View Original

Overview

The article discusses Meta's careful approach to endorsing programming languages for server-side use, highlighting Rust as the latest addition to its supported languages. It outlines the criteria for language support and provides insights into the primary server-side languages used at Meta.

What You'll Learn

1

How to choose the best programming language for server-side projects at Meta

2

Why Rust is becoming increasingly important for server-side applications at Meta

3

When to use supported versus community-supported languages at Meta

Key Questions Answered

What programming languages are supported for server-side use at Meta?
Meta primarily supports Hack, C++, Rust, and Python for server-side development. Rust is the latest addition, especially encouraged for performance-sensitive back-end services and CLI tools, while Hack is recommended for business logic applications.
What does it mean for a language to be supported at Meta?
A supported language at Meta guarantees a good experience with code editing, debugging, and deployment, along with core libraries and long-term commitment. Developers are encouraged to use supported languages for new projects to ensure ongoing support.
How does Meta evaluate new programming languages for support?
Meta evaluates new programming languages based on the significant engineering investment required to support them at scale. This includes considerations for core libraries, security, operational risk, and developer experience.
What are the implications of using community-supported languages at Meta?
Using community-supported languages at Meta comes with fewer guarantees and requires teams to take on maintenance responsibilities. It's generally advised to avoid these languages for new applications unless there is already a significant investment in them.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Key Actionable Insights

1
When starting a new project at Meta, prioritize using a supported language to ensure long-term support and a better development experience.
Supported languages come with guarantees of core library support and a robust development environment, which can save time and resources in the long run.
2
Consider adopting Rust for performance-sensitive applications or CLI tools, as Meta is committed to its long-term support.
With an increasing footprint of Rust in Meta's products, early adoption can provide advantages in performance and flexibility.
3
Evaluate the operational risks associated with language fragmentation when choosing a programming language for critical services.
A fragmented language stack can complicate security and operational response, making it essential to choose a supported language for critical applications.

Common Pitfalls

1
Choosing a community-supported language for new applications can lead to increased maintenance burdens and lack of support.
This often happens because teams may underestimate the long-term implications of not having robust support, which can lead to inefficiencies and increased costs.