Google adds support for Apple’s Swift programming language to Fuchsia
There is still lots of mystery around Google’s Fuchsia operating system. Fuchsia first appeared on our radar during the summer of 2016 and I even went as far as building it myself from source to see what it could do. Since then Google has been busily developing the OS, however its purpose for existing is still unclear. Will it eventually replace Android? Or is it something completely independent?
Things got even more murkier this week when Google cloned the open source repository for Apple’s Swift programming language and started its own repository. This caused some concern among Swift fans as the move was initially interpreted as Google forking Swift with the aim of making its own incompatible version.
However, Google quickly set the record straight stating that “Swift at Google has enough folks working on it that we need a staging ground/integration point, and we decided it should be public.” In fact Google’s Swift repository adds “This repository exists to allow Googlers to collaborate and stage pull requests against the official Swift repository.” The official line is that Google “strongly encourage contributors to contribute directly to upstream whenever possible.”
Things got even more murkier this week when Google cloned the open source repository for Apple's Swift programming language and started it own repository.
The initial clarification about Swift’s role at Google was made by Chris Lattner, the venerated inventor of Swift, who now works for Google! Following Chris’ tweet, two more Googlers added more light. Alexander Lash, who writes Google apps for iOS, tweeted that his team is “planning to contribute to lib/Syntax – we’re interested in linting, formatting, and refactoring.” While Fuchsia engineer Zac Bowling wrote, “And my team is adding support to Swift to target Fuchsia.”
Swift on Fuchsia
This last tweet is even more surprising. Google writes a lot of iOS apps and now that Swift is an open source language that can be used on Linux as well as on Apple’s operating systems (i.e. iOS, macOS, watchOS, and tvOS) there is a certain logic to Google contributing code to the Swift project. But it seems that Google has big plans for Fuchsia and is keen that just about every compiler under the sun can run on it. To date Fuchsia has support for C and C++; Dart, as used by Flutter; Go, Google’s own open source programming language; and Rust, from Mozilla Research.
And my team is adding support to Swift to target Fuchsia.
The key here isn’t that Google is somehow favoring Swift over C or its own Go language, but rather that Google wants to make Fuchsia as broad as possible. While the reasons for Fuchsia’s existence remain a mystery, it is now clear that Google wants to make it a general purpose OS. Where is it will eventually find its niche (on mobile, on the desktop, on servers, IoT, AI, or whatever) is certainly unknown, but during the developmental stage Google is ensuring that whatever technology is finally needed to make Fuchsia as success (whatever that means), then the OS can support it.
Fuchsia is not Linux
In closing it is worth mentioning that Fuchsia isn’t a variation of Linux or some kind of Unix-like OS. There maybe similarities and a certain level of compatibility with Linux and other Unix-like operating, due to basic level of POSIX support. However, Fuchsia is not Linux. We live in a Linux/Unix dominated world. Android uses Linux, ChromeOS uses Linux, and MacOS is based BSD Unix.
Windows is different and there were a lots of alternatives to Linux/Unix in days gone by (like OpenVMS). But Unix won the day. It looks like Google is trying something new. Fuchsia uses the Zircon microkernel, but while it does maintain modern OS characteristics like virtual memory, threads and inter-process communication, it doesn’t implement them like Linux/Unix.
The key to understanding Fuchsia might be this line from the Zircon documentation “Zircon targets modern phones and modern personal computers with fast processors, non-trivial amounts of RAM with arbitrary peripherals doing open ended computation.” It is the “arbitrary peripherals doing open ended computation” bit that is interesting. The way I read that is that Fuchsia is designed for systems where there is lots of hardware acceleration. So… welcome to the machine!