Google, for their upcoming Fuchsia operating system, has reviewed several programming languages. A summary was posted as a markdown document on their GoogleSource Git. It outlines how C, C++, Dart, Rust, Go, and Python will (or will not) be supported in the new operating system.

Usage is broken down into two components: “Fuchsia Platform Source Tree” and “End-developers”. If a programming language is supported for the Fuchsia Platform Source Tree, then it can be integrated into If it is supported for end-developers, then the SDK contains tools that enable it. Google has more control over code that enters their source tree, so they can introduce other languages without worrying about supporting it as a first-class citizen with their public SDK.

This brings us to the languages.

C is allowed in both contexts, although it is discouraged in new code except for low-level systems (ex: the kernel) and APIs that need long-term binary compatibility. It is expected that you will ask permission to write new code in C11.

C++, on the other hand, is allowed everywhere. It is supported for end-developers and the Fuchsia Platform Source Tree, and it can be used for any type of code. Fuchsia targets C++11, C++14, and C++17.

Interestingly, Google’s languages, Dart and Go, have some strong restrictions. Go is basically banned every except for netstack, which is allowed because it is an existing project that is not worthwhile to rewrite. Everything else is expected to be rewritten in some other language. Dart, on the other hand, is allowed for code that is not performance critical (ie: drivers or long-running core applications).

In terms of Python: No. (I mean… tools yes, but otherwise no.)

Last up is Mozilla’s Rust. This one is interesting for reasons alluded to at the end of the second paragraph. Google is interested in the language within the Fuchsia Platform Source Tree, but they do not want to support it from end-developers or directly in the kernel. It is too new for them to be confident in supporting it in an official SDK or in very low-level code – at least for now.

We still don’t know what Fuchsia will become, so we don’t know what will make sense in the future. For example, will Google allow third-party SDKs on their platform? Whether it even makes sense depends on whether Google will push it as an Android, as a Windows, or as a ChromeOS. If it’s big and open, then it would make sense that third-party platforms support their own languages, like .NET (ex: C#) or Rust, for end-user applications.