Plans for the upcoming Google Go 1.5 release have Google eating its own dog food, so to speak.
Go is Google's up-and-coming language intended to offer simplicity and enable concurrency. A Google 1.5 bootstrap plan posted this week has the upgrade using a tool chain written in Go, at least in part.
"We have been planning for a year now to eliminate all C programs from the Go source tree. The C compilers -- 5c, 6c, 8c, 9c -- have already been removed," the document states. "The remaining C programs will be converted to Go: They are the Go compilers, the assemblers, the linkers and cmd/dist." The goal is to convert all C programs although that goal may not be reached.
Google's plan, however, introduces a bootstrapping issue. "If these programs are written in Go, that introduces a bootstrapping problem when building completely from source code: you need a working Go tool chain in order to build a Go tool chain." Thusly, building Go 1.5 will require having Go 1.4 available, the proposal says. "In general we'll keep using Go 1.4 as the bootstrap base version for as long as possible. The tool chain proper (compiler, assemblers, linkers) will need to be buildable with Go 1.4, whether by restricting their feature use to what is in Go 1.4 or by using build tags."
Bootstrapping, the document states, makes new ports more complex. "It was possible in the past to check out the Go tree on a new system and run all.bash to build the tool chain, and it would fail, and you'd make some edits, and try again. Now, it will not be possible to run all.bash until that system is fully supported by Go." New ports would be done by cross-compiling test binaries on a working system, copying binaries over to the target, and running and debugging them there.
Go 1.4, released last month, offered official support for Android development. The statically typed language provides concurrency to make it easy to write programs that get the most out of multicore and networked systems.