[LLVMdev] Proposal: add Go frontend subproject based on llgo

Peter Collingbourne
Wed, 19 Nov 2014 21:53:17 -0000

Hi all,

I'd like to propose the contribution of a Go frontend subproject to the LLVM
project, based on the existing llgo project at https://github.com/go-llvm/llgo .
As with the previous contribution of the Go bindings, I have obtained
permission from all llgo contributors whose code is part of this contribution,
to contribute their changes to the LLVM project and relicense their changes
under the LLVM license. I am also willing to be the code owner for the
llgo subproject.

The frontend would live in the LLVM svn repository and if checked out into
tools/llgo would build as part of the regular LLVM build (with CMake only). We
would be keeping llgo compatible with top-of-tree LLVM, although I imagine
this would be less burdensome than the other subprojects as llgo is written
in Go and depends on the Go bindings previously contributed to LLVM.

llgo depends on certain third-party components, namely a copy of the Go
standard library (libgo), a Go program analysis library (go.tools) and two
library dependencies of the standard library (libbacktrace and libffi). These
would be mirrored into the llgo repository under a third_party directory. They
would retain their original licenses, which are BSD and GPLv3 with Runtime
Library Exception (the latter only applies to a handful of header files;
eventually we would seek to replace these).

As a first step, I have published:

http://reviews.llvm.org/D6327

with the initial code contribution. The mirrored third-party sources will be
added later, as the diff would be too large to review. If there is consensus
in the community, the next step I propose to take is to create the subproject
in svn and check in the initial version of the code.

Any comments on this contribution are appreciated.

Thanks,
--
Peter