This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gccgo: A gcc frontend for Go, a new programming language


Sebastian Pop <sebpop@gmail.com> writes:

> I haven't looked at the gccgo branch yet, but have quickly browsed
> over the material at golang.org, and I found no document describing,
> at a high level, the design of the compiler(s) and the runtime of go.

As far as I know there is no such document.

First let me say that while gccgo's runtime is currently different
from gc's (the other Go compiler), I hope that gccgo's runtime will
pick up pieces of gc's over time.

> How are the goroutines implemented/translated by gccgo?

In gccgo goroutines are simply implemented as pthreads.  In gc they
are implemented as coroutines multiplexed onto pthreads.

> How are the channels implemented?

They are basically just buffers controlled by locks that feed into the
goroutine scheduling one way or another.

> What kind of memory model did the go authors
> had in mind: shared memory, NUMA, or heterogeneous systems?

Shared memory.

> I have
> the impression that go targets, for now, only shared memory systems
> with pthreads.

Yes.

> I would appreciate pointers either to high level design documents, or
> to the source code.

The source code is there at http://golang.org/ or in
svn://gcc.gnu.org/svn/gcc/branches/gccgo.  For gc the runtime supports
is in src/pkg/runtime, for gccgo it is libgo/runtime.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]