<div dir="ltr"><div>Yes, this is a rant. No it isn't polite. And, frankly, I don't give a shit. If your feelings get hurt by people using bad words to describe your work you have two options: curl up in a little ball and pretend the bad man isn't out there, or man up and FIX THE FUCKING RETARDED SHIT YOU'VE WRITTEN! (Sadly, I know which of these two I expect.)</div><div><br></div>The current system for building Mercury is an utter fucking disaster. It is quite possibly the single dumbest thing ever put down in code in the past fifty years. Not only does it default to building 14 "grades" (asm_fast.gc, asm_fast.gc.debug.stseg, asm_fast.gc.decldebug.stseg, asm_fast.gc.memprof, asm_fast.gc.prof, asm_fast.gc.profdeep, asm_fast.gc.trseg, asm_fast.gc.trseg.debug.stseg, asm_fast.par.gc.stseg, csharp, hlc.gc, hlc.gc.pregen, hlc.gc.trseg, hlc.par.gc, java), which means building the compiler by the conventional ./configure && make && sudo make install approach takes anywhere from 2 hours to 2 *DAYS* depending on the hardware, getting around this massive multiplicity of default grades requires advanced degrees in decoding whatever was pulled out of the documentation writers' asses the day the grades were "documented".<div><br></div><div>Look at the documentation you have on the grades. Look at it closely. Look at it WITHOUT YOUR YEARS OF HARD-WON ESOTERIC LORE. Tell me, can you see anywhere any slight HINT of which grades interact well with each other? Any slight HINT of which grades are likely to interact with each other by subtly fucking your end-users over with maddening heisenbugs? Even a slight hint of which grades don't make any sense whatsoever?<br><br>For example, where can I find in the docs something that tells me that hlc.gc.stseg doesn't make any sense? (Protip: you can't.) And for bonus points, what happens if you tell the configure script that you want hlc.gc.stseg? (Hint: it merrily accepts it, as does the build, which then mysteriously fails with bizarre compiler errors.)<br><br>Do you really hate your prospective users so much you won't even DOCUMENT your fucking "grades"!? Like with a simple chart that shows at intersection points whether the combination makes sense or not? I mean, I'm not even asking for code that does this fucking shit right: a configuration script that knows which grade combinations are legal/sensible/whatever, or a build system that doesn't expect to build the entire fucking world dozens of times up-front instead of building on demand. I'm asking for a few words that explain the grades and their legal/sensible combinations. Is that REALLY too much to ask after SEVENTEEN FUCKING YEARS of this language's existence!?<br><br>This rant brought to you by the disgusted giving up after trying to get Mercury running on a slow, non-x86 system for the past two days. I'll leave it so someone less furious and more diplomatic to explain why what utter shit you have for a build process.</div><div><div><br></div>-- <br><div class="gmail_signature">"Perhaps people don't believe this, but throughout all of the discussions of entering China our focus has really been what's best for the Chinese people. It's not been about our revenue or profit or whatnot."<br>--Sergey Brin, demonstrating the emptiness of the "don't be evil" mantra.</div>
</div></div>