Earlier quoted context omitted.
> tends to emphasize compile speed over producing optimal executables So they opted to handle the easy problem.
Compile time is a big deal when you have millions of lines of code that constantly change and very expensive devs that are spending large amounts of time waiting. The infrastructure Google uses to distribute and track builds across datacentres and the world to make compile time of large applications bearable isn't exactly trivial. Optimal executables aren't that important most of the time. Hardware is cheaper than de…
Go 1.3 Linker Overhaul
11–20 of 33 posts
Re: Go 1.3 Linker Overhaul
#12Earlier quoted context omitted.
Compile time is a big deal when you have millions of lines of code that constantly change and very expensive devs that are spending large amounts of time waiting. The infrastructure Google uses to distribute and track builds across datacentres and the world to make compile time of large applications bearable isn't exactly trivial. Optimal executables aren't that important most of the time. Hardware is cheaper than de…
> Compile time is a big deal when you have millions of lines of code that constantly change and very expensive devs that are spending large amounts of time waiting. 1) Sure. Most of us do not. So why should we care and/or trade other stuff for compile time improvements? 2) That's when you don't have a module loading system and have to build everything everytime.
Re: Go 1.3 Linker Overhaul
#13Earlier quoted context omitted.
Go's gc toolchain (as opposed to gccgo) tends to emphasize compile speed over producing optimal executables, so they may be flat-out deciding to leave some potential whole-program optimizations on the table to for link speed--pure speculation, though. (And don't know re: your question.)
> tends to emphasize compile speed over producing optimal executables So they opted to handle the easy problem.
I think having some sort of optional 'really fast compile' vs. 'optimal performance' build is the ideal - fast cycle development, then on deploy build something fast. I think gc go vs. gccgo is potentially a model for this :-)
Re: Go 1.3 Linker Overhaul
#14Earlier quoted context omitted.
Go's gc toolchain (as opposed to gccgo) tends to emphasize compile speed over producing optimal executables, so they may be flat-out deciding to leave some potential whole-program optimizations on the table to for link speed--pure speculation, though. (And don't know re: your question.)
Now that the modules are mentioned in the discussion: can one Go application consist of more .so or .dlls all writren in Go at all?
Re: Go 1.3 Linker Overhaul
#15Earlier quoted context omitted.
> Compile time is a big deal when you have millions of lines of code that constantly change and very expensive devs that are spending large amounts of time waiting. 1) Sure. Most of us do not. So why should we care and/or trade other stuff for compile time improvements? 2) That's when you don't have a module loading system and have to build everything everytime.
1) Cause the creators of the language decided to. Don't like it, feel free to fork it.
Which is an no-op answer. That can be the answer for any kind of engineering decision, including the most idiotic ones.
We're concerned with what's best here, not merely with what has been decided.
>Don't like it, feel free to fork it
Another BS non answer.
Re: Go 1.3 Linker Overhaul
#16Earlier quoted context omitted.
1) Cause the creators of the language decided to. Don't like it, feel free to fork it.
> Cause the creators of the language decided to Which is an no-op answer. That can be the answer for any kind of engineering decision, including the most idiotic ones. We're concerned with what's best here, not merely with what has been decided. > Don't like it, feel free to fork it Another BS non answer.
Yeah I was being facetious with my original reply, and frankly I get your point, I was pointing out however that you _can_ fork it to make it work the way you'd prefer. If you truly don't want to (or can't) do that, then open a ticket or send something to a mailing list.
If this really matters to you, do something about it that can make an actual difference.
Re: Go 1.3 Linker Overhaul
#17Earlier quoted context omitted.
Now that the modules are mentioned in the discussion: can one Go application consist of more .so or .dlls all writren in Go at all?
Go links static executables only.
Are there any plans for making ".so" modules in native Go?
Re: Go 1.3 Linker Overhaul
#18Earlier quoted context omitted.
Go's gc toolchain (as opposed to gccgo) tends to emphasize compile speed over producing optimal executables, so they may be flat-out deciding to leave some potential whole-program optimizations on the table to for link speed--pure speculation, though. (And don't know re: your question.)
> tends to emphasize compile speed over producing optimal executables So they opted to handle the easy problem.
Also the problem with the lowest cost/benefit for them. Also the problem with the highest benefit. One calls this a "no-brainer."
Re: Go 1.3 Linker Overhaul
#19Earlier quoted context omitted.
> tends to emphasize compile speed over producing optimal executables So they opted to handle the easy problem.
I'm trying to contribute to the Chromium project and believe me, when you're waiting over an hour to compile 1 day's worth of patches, you begin to dream of faster compile speeds :-) I think having some sort of optional 'really fast compile' vs. 'optimal performance' build is the ideal - fast cycle development, then on deploy build something fast. I think gc go vs. gccgo is potentially a model for this :-)
But that is mostly a problem because incremental compiling in C++ is difficult for well-known reasons. Incremental compiling is well-supported in many other languages (e.g. Java) and is usually very fast. So, the issue of compilation time is IMO overstated by Go proponents.
Besides that, e.g. JRebel and DCEVM provide true hotswapping. So, generally, developing e.g. a web service in Java does not have a visible compile and deploy cycle at all.
I think having some sort of optional 'really fast compile' vs. 'optimal performance' build is the ideal
Why not have really fast compiles and JIT compilation when needed to make it fast (Java, C#, F#) or just JIT compilation (JavaScript). Of course, the trade-off is that you have to carry around a VM, but the JVMs and JS VMS are ubiquitous.
Re: Go 1.3 Linker Overhaul
#20Earlier quoted context omitted.
> tends to emphasize compile speed over producing optimal executables So they opted to handle the easy problem.
So they opted to handle the easy problem. Also the problem with the lowest cost/benefit for them. Also the problem with the highest benefit. One calls this a "no-brainer."
Of course, Go is a language that is more amendable for quick compilations. But it would be more interesting to see a solution that provides good optimizations and improves programmer productivity. Go doesn't really have an answer to that (except: use gcc-go), while the competition has (e.g. JIT compilers).