Live data from Hacker News

“This change deletes the C implementations of the Go compiler and assembler”

github.com

11–20 of 137 posts

Re: “This change deletes the C implementations of the Go compiler and assembler”

#13

So what is the bootstrap process going to be? Other than already have a Go compiler I mean. Or is it have a Go cross compiler? Maybe it matters less, you used to always assume bootstrap from C but that more or less died with C++ based compilers, although you can do a multistage bootstrap from the last gcc before C++ still.

It is explained in the design document: https://docs.google.com/document/d/1P3BLR31VA8cvLJLfMibSuTdw...

Basically, you start from the last C version, and every version is supposed to be able to compile the next one.

Re: “This change deletes the C implementations of the Go compiler and assembler”

#14
One does wonder if the register re-naming from their abstract (but misleading) names to their proper machine names (e.g., from "SP" to "R13") wasn't at all a reaction to the (in)famous polemic on the golang build chain.[1]

[1] http://dtrace.org/blogs/wesolows/2014/12/29/golang-is-trash/

Re: “This change deletes the C implementations of the Go compiler and assembler”

#19
post #13

So what is the bootstrap process going to be? Other than already have a Go compiler I mean. Or is it have a Go cross compiler? Maybe it matters less, you used to always assume bootstrap from C but that more or less died with C++ based compilers, although you can do a multistage bootstrap from the last gcc before C++ still.

It is explained in the design document: https://docs.google.com/document/d/1P3BLR31VA8cvLJLfMibSuTdw... Basically, you start from the last C version, and every version is supposed to be able to compile the next one.

Ah ok, so there will be a pretty long chain from 1.2 eventually, but hopefully it will be part of the test suite...

Re: “This change deletes the C implementations of the Go compiler and assembler”

#20
post #13

Earlier quoted context omitted.

It is explained in the design document: https://docs.google.com/document/d/1P3BLR31VA8cvLJLfMibSuTdw... Basically, you start from the last C version, and every version is supposed to be able to compile the next one.

Ah ok, so there will be a pretty long chain from 1.2 eventually, but hopefully it will be part of the test suite...

Usually you don't keep the chain. You just keep a working compiler. You can also bootstrap from another implementation of the language, e.g., gccgo.

A common trick is to keep a highly portable interpreted version of the target language and then use this for bootstrapping, but often you attack new architectures by cross-compilation instead. It all depends.

Also, it is common for self-hosting languages to require themselves to build.

Post reply on HN