GoGo is a self-compiling Go compiler for 64-bit Linux running on 64-bit Intel x86 processors. It is written in a subset of the Go language which supports variables, structures, arrays, functions and pointers, i.e., just enough to be able to compile itself.

GoGo can handle multiple source files and is capable of rudimentary linking, although the Go runtime is required in order to assemble runnable ELF binaries. Our compiler only creates assembly code as output, albeit commented for readability, if desired. For supportive data structures as well as basic input and output functions, GoGo relies on our libgogo which is a collection of functions written in Go and Plan9 assembly.

GoGo has been created together with Michael Lippautz for the Compiler Construction course during the summer term 2010. As the Go language specification had not been finalized when we started working on our compiler, our syntax definition may no longer be compatible with the current language specification. Please keep this in mind when bootstrapping our compiler and use the Go runtime from March 2010.

This project is no longer maintained.