News for hackers. Stuff that matters.
Re:24-core CPU and I can’t move my mouse by jchw on Monday July 10, 2017 @07:22AM (#14734920)
Go is a good example of a language with fast compilation times. Of course, the optimizer needs improvements, but I believe they keep managing to make it faster as they improve the output rather than slower.
Re:24-core CPU and I can’t move my mouse by atombender on Monday July 10, 2017 @09:21AM (#14735641)
Go's compilation times are fast, but it also took a significant dive in 1.5, when they rewrote the compiler in Go.

They're slowly improving it to return to pre-1.5 performance, but last I checked, it wasn't there yet. The impact is insignificant on small projects, of course, but easily felt on larger (100Kloc+) ones.

While the recent optimizer improvements are great, my wish is for Go to switch to an architecture that uses LLVM as the backend, in order to leverage that project's considerable optimizer and code generator work. I don't know if this would be possible while at the same time retaining the current compilation speed, however.

Re:24-core CPU and I can’t move my mouse by cdoxsey on Monday July 10, 2017 @10:26AM (#14736188)
The important point about Go in this case is that it's fundamentally more efficient because it has real modules and can do incremental compilation.

Sometimes people don't realize this because they always use `go build` which, as the result of a design flaw, discards the incremental objects. When you use `go install` (or `go build -i`) each subsequent build is super fast.

Re:24-core CPU and I can’t move my mouse by iainmerrick on Monday July 10, 2017 @12:00PM (#14737101)
Huh, really? Why is that? Non-incremental builds shouldn't be needed at all, but besides that, just based on the names I'd expect `go build` to be the cheap one and `go install` to be the expensive one.
Re:24-core CPU and I can’t move my mouse by lobster_johnson on Monday July 10, 2017 @05:17PM (#14739777)
It's unfortunately not a well-known feature. The Go extension to VSCode was using "go build" (without "-i") for a long time, and if you're working on something big like Kubernetes, it's almost impossible to work with.

The annoying thing is that "go install" also installs binaries if you run it against a "main" package. I believe the only way to build incrementally for all cases without installing binaries is to use "-o /dev/null" in the main case.

Re:24-core CPU and I can’t move my mouse by pjmlp on Monday July 10, 2017 @11:51AM (#14737018)
I seriously hope they don't do it.

Go being bootstrapped is a good argument against people that don't belive it is suitable for systems programming.

Depending on C or C++ as implementation always gives arguments it could not have been done differently.

Also we should not turn our FOSS compilers into a LLVM monoculture.

Re:24-core CPU and I can’t move my mouse by mpweiher on Monday July 10, 2017 @07:34AM (#14734982)
Wasn't that Wirth's rule for Oberon and/or Pascal? Any optimization introduced has to have sufficient cost vs. benefit ratio that it makes the compiler faster compiling itself.
Re:24-core CPU and I can’t move my mouse by jchw on Monday July 10, 2017 @07:56AM (#14735108)
In Go's case, I think they're simply improving a lot of unrelated aspects of the compiler while adding new optimizations. I like the idea of that rule but there are definitely cases where I would want an optimization that could take a long time during compilation but provide an immense benefit later.
Re:24-core CPU and I can’t move my mouse by azeirah on Monday July 10, 2017 @08:30AM (#14735293)
Ah yes, I remember that rule, I think it's incredibly clever. I believe he had another rule, language updates can only /strip/ features, so the core language will always get smaller and smaller.

Brilliant

Re:24-core CPU and I can’t move my mouse by xg15 on Monday July 10, 2017 @08:58AM (#14735464)
Intuitively, that doesn't seem clever to me. (You're committing yourself to a less efficient, more clumsy language for the benefit of... what exactly?)

How does that law improve the language without falling into the trap mentioned elsewhere in this thread? (Optimizing for a pleasant "compile experience" at the cost of everything else)

Re:24-core CPU and I can’t move my mouse by foobarchu on Monday July 10, 2017 @09:16AM (#14735604)
Well, the rule is attributed to Niklaus Wirth, whose credits include Modula, Modula-2, Oberon, Oberon-2, and Oberon-7. The -* languages are extensions of their originals, so it seems his rule only applies within a single edition of the language. They can add new things, because they are new languages.

The justification, then, seems to be that if you legitimately need new features, then the language has failed and you should start over anyway. I think Python 3 is sort of an offshoot of this idea, except that many of the new features keep getting backported to 2.7 anyway.

Re:24-core CPU and I can’t move my mouse by pjmlp on Monday July 10, 2017 @11:54AM (#14737056)
Given that Oberon-7 is a subset of Oberon, reducing it to the essential of a type safe systems programming language, I wouldn't consider it an extension. :)

There is also Active Oberon and Component Pascal, but he wasn't directly involved.

Re:24-core CPU and I can’t move my mouse by foobarchu on Tuesday July 11, 2017 @10:11AM (#14744296)
My mistake, I'm not intimately familiar with it. From what I can tell, Modula-2 and Oberon-2 were both extensions, though, to be used as successors to the previous language.