This document lists the technologies that we prefer to use by default.
If you would like to build something that does not conform to our standard tech stack:
If there are enough exceptions of the same kind (i.e. at least 3), we can consider updating our policy so that these cases are no longer considered exceptions.
We use TypeScript and React in web environments (e.g. web apps, browser extensions).
We use Go to write backend services.
syntect-server is a minimal HTTP server written in Rust that wraps the Syntect syntax highlighting library (also written in Rust) to expose a JSON API. This service does not require a lot of maintenance, but when it does, it is a pain.
Why do we put up with this pain? As of October 2019, Syntect continues to be the best option for us to deliver high quality syntax highlighting to our users across a wide variety of languages. References:
LSIF generators and language servers should usually be written in the language that they are designed to analyze for two reasons: