News for hackers. Stuff that matters.
Re:Facebook Go Libraries by MatthewJBrown on Thursday November 13, 2014 @02:19PM (#8603443)
In fact, you should be glad that "go fmt" exposed the fact you were relying on something that you should not have. Better to find a bug sooner rather than later, and relying on implementation details of your particular language implementation is a bug.
Re:Facebook Go Libraries by couchand on Thursday November 13, 2014 @07:01PM (#8604993)
It seems to me like it would be very much in line with the Go philosophy to automatically uncover this in some way other than just an impossible-to-debug pre-compile sort, like disallowing it on a language level. Perhaps that's a Hard Problem, though, so not a reasonable request.
Re:Facebook Go Libraries by skj on Friday November 14, 2014 @07:05AM (#8606723)
Well, they could do what they did with map iteration: make it happen arbitrarily different each program execution.
Re:Facebook Go Libraries by couchand on Friday November 14, 2014 @08:35AM (#8606999)
Breaking it randomly and requiring debugging is not the same as telling you you're doing something wrong and where.
Re:Facebook Go Libraries by skj on Friday November 14, 2014 @11:55AM (#8608113)
Worked for maps :)

The same exact argument applies. The code was broken to begin with, the implementation behavior did not break anything.

And, just like with map iteration ordering, it's very difficult/impossible for the compiler to say "hey don't depend on this!".

The only way that I can think of to get this concept (that import order in code and init() order in runtime are unrelated) is to have things break.

Re:Facebook Go Libraries by couchand on Friday November 14, 2014 @12:49PM (#8608409)
I guess I've personally never seen the value of static initializers (in other languages at least), they always seem like the source of hard-to-find bugs. So perhaps that's really where my complaint is. Is there a compelling use for them in Go over explicit initialization?

I suppose if the runtime randomizes things, at least you would never experience it consistently working in the first place, so maybe the issue wouldn't ever come up.

Re:Facebook Go Libraries by skj on Friday November 14, 2014 @01:32PM (#8608674)
Right, that's the idea.

Regarding static initializers, I use them for precompiling regexps and templates, but not much more than that.