Go and Google App Engine
10 May 2011
Tags: appengine, release

David Symonds

Nigel Tao

Andrew Gerrand

* Introduction

Google’s App Engine provides a reliable,
scalable, easy way to build and deploy applications for the web.
Over a hundred thousand apps are hosted at appspot.com and custom domains
using the App Engine infrastructure.
Originally written for Python apps, in 2009 the system added a Java runtime.
And today, at Google I/O, we’re thrilled to announce that Go will be next.
It’s marked as an experimental App Engine feature for now,
because it’s early days, but both the App Engine and Go teams are very
excited about this milestone.

By early days, we mean that it’s still rolling out.
As of today, the App Engine SDK for Go is [[http://code.google.com/p/googleappengine/downloads/list][available for download]],
and we will soon enable deployment of Go apps into the App Engine hosting infrastructure.
Today, through the SDK, you’ll be able to write web apps,
learn about the APIs (and the language, if it’s new to you),
and run your web app locally.
Once full deployment is enabled, it’ll be easy to push your app to Google’s cloud.

One of the cool but less obvious things about this news is that it provides
a very easy way to play with Go.
You don’t even need to have Go installed beforehand because the SDK is
fully self-contained.
Just download the SDK, unzip it, and start coding.
Moreover, the SDK’s “dev app server” means you don’t even need to
run the compiler yourself;
everything is delightfully automatic.

What you’ll find in the SDK is many of the standard App Engine APIs,
custom designed in good Go style, including Datastore,
Blobstore, URL Fetch, Mail, Users, and so on.
More APIs will be added as the environment develops.
The runtime provides the full Go language and almost all the standard libraries,
except for a few things that don’t make sense in the App Engine environment.
For instance, there is no `unsafe` package and the `syscall` package is trimmed.
(The implementation uses an expanded version of the setup in the [[https://golang.org/doc/play/][Go Playground]]
on [[https://golang.org/][golang.org]].)

Also, although goroutines and channels are present,
when a Go app runs on App Engine only one thread is run in a given instance.
That is, all goroutines run in a single operating system thread,
so there is no CPU parallelism available for a given client request.
We expect this restriction will be lifted at some point.

Despite these minor restrictions, it’s the real language:
Code is deployed in source form and compiled in the cloud using the 64-bit x86 compiler (6g),
making it the first true compiled language that runs on App Engine.
Go on App Engine makes it possible to deploy efficient,
CPU-intensive web applications.

If you want to know more, read the [[http://code.google.com/appengine/docs/go/][documentation]]
(start with “[[http://code.google.com/appengine/docs/go/gettingstarted/][Getting Started]]”).
The libraries and SDK are open source, hosted at [[http://code.google.com/p/appengine-go/][http://code.google.com/p/appengine-go/]].
We’ve created a new [[http://groups.google.com/group/google-appengine-go][google-appengine-go]] mailing list;
feel free to contact us there with App Engine-specific questions.
The [[http://code.google.com/p/googleappengine/issues/list][issue tracker for App Engine]]
is the place for reporting issues related to the new Go SDK.

The Go App Engine SDK is [[http://code.google.com/p/googleappengine/downloads/list][available]]
for Linux and Mac OS X (10.5 or greater);
we hope a Windows version will also be available soon.

We’d like to offer our thanks for all the help and enthusiasm we received
from Google’s App Engine team in making this happen.
