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

Peter Collingbourne
Tue, 25 Nov 2014 03:15:58 -0000

Hi Alex,

A good recent summary of the language and its community is found here:
http://blog.golang.org/5years
You will see from that article that a number of companies and open source
projects have adopted the language. If you follow the links there you can
also read more about the philosophy behind the language.

I also just wanted to clarify that the 'gc' implementation of the Go
language,
which is the one maintained by the Go team at Google and the one that most
people use, is BSD licensed, and most of the runtime library code that
llgo uses is based on that implementation. There are other reasons besides
licensing why one would want to use the llgo frontend :)

Peter

On Mon, Nov 24, 2014 at 05:39:18PM -0800, Alex Rosenberg
wrote:
> I must profess a dislike for the trend of corporate languages-as-platforms
that appears to have spawned the Go project, along with several other recent
languages. Based on the disaster Oracle has made of Java, I think that having a
single corporation behind a language and not working toward standardization is
not a healthy sign.
>
> That you are working on a properly-licensed open source frontend is a great
start in a positive direction. I want to understand more about Go in order to
understand the issues that will come from integrating this frontend. Put another
way -- this is an opportunity for you to evangelize the language, teaching us
old C fuddy-duddies all about Go and why it deserves our attention. What is it
being used for? How widespread is the adoption? Is there some TL;DR reading out
there we should focus our time on? Is there an equivalent of Gary Berhardt's
excellent WAT presentation that addresses the gotchas in the language design
that we should also be aware of?
>
> Alex
>
> On Nov 19, 2014, at 1:53 PM, Peter Collingbourne <peter at pcc.me.uk>
wrote:
>
> > 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
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>

--
Peter