32 ms·
This is such an exhausting article to read. Useless introduction that assumes I'm familiar with their previous articles, so many long segues and needless anecdo
by ninkendo 5y ago
This is such an exhausting article to read. Useless introduction that assumes I'm familiar with their previous articles, so many long segues and needless anecdotes, it seemingly never gets to the point. I got about halfway through and gave up looking for where the actual point is.
Could someone explain what they're actually driving at?
> Just a type change! Shouldn’t change the assembly too much, right?
What reasonable person would think that? You're changing something from 64 bits wide to 128 bits wide. Of course the compiled code from the 64-bit version is looking at a single 64-bit register, with the 128-bit version looking at multiple registers. Why is this unexpected?
Who would ever expect that you could just change the width of the inputs and return type of a function and expect it not to break the ABI?
> Okay, so in C we can break ABI just by having the wrong types on a function and not matching it up with a declaration
Of course. Why wouldn't you think that?
> What if I told you this exact problem could happen, even if the header’s code read extern long long do_stuff(long long value);, and the implementation file had the right declaration and looked fine too?
Alright, I'm almost intrigued enough to keep reading. I hope they get to the point soon though.
> [pages and pages about linux package maintainers and red herrings about python and C++]
> [going on and on about "the problem" without having ever made it explicit]
At this point I give up trying to find the author's point. What needs to be saved about the ABI specifically? I haven't found the problem they're talking about and I've given up trying to skim for it. I certainly am not going to read this whole thing verbatim because they're just too much time-wasting cruft here.
- JonChesterfield 5y agoStandardise alias in order to unstick library evolution
- ninkendo 5y agoWhat is currently not possible, which alias will fix? That’s what I couldn’t get out of the article. If the answer is “the ability to change the types of library functions without changing their name” (which is what his first few examples were showing to be the “problem”), then of course you can’t do that, and I’m not convinced we should waste any time or effort trying to get that to work. If you want to change the types accepted/returned by a function, make a new function with a new name. Of course, if there’s something I’m missing here I’d love to know… the article has done a terrible job outlining it if that’s the case.
- rwj 5y agoBackwards compatibility is holding the evolution of C and C++ back. Design improvements can't get approved if they affect ABI. Many of those improvements affect performance. The ecosystem needs a way to move forward without breaking ABI.
- ninkendo 5y agoI guess I’ll have to take your word for it… this article has failed to make that case IMO.
- properparity 5y agoC++ shouldn't be a problem? Just add a new namespace: std::move_fast_and_break_things::vector Or maybe the other way around so you can keep using std::vector: move_fast_and_break_things::std::vector Then you can add a 'using namespace move_fast_and_break_things;' at the top of your files if you know you don't care about the ABI in your program.
- vlovich123 5y agoIn c++ you do this with inline namespaces (change the default inline namespace version, keep the old one around, everything continues to work correctly in theory).
- deleted 5y ago[deleted]
- brandmeyer 5y agoYou can do that with boost:: or absl:: right now. No need to involve the standards committee at all.
- noobermin 5y agoThis doesn't just apply to stl, this also means breaking boost or w/e and you're stuck with the same problem, users are mad and pitted against library writers.
- mirntyfirty 5y agoIt seems as though academic writing manages to simultaneously use too many words and too many references. Few papers get to the point and cover the point convincingly when they do.
- moltke 5y agoI liked Adlemen's genetic computing paper. It had tons of jargon and references but was only ~ two pages long. It's a super dense two pages if you're new to molecular biology though. I think that's what most academic writers should really be aming for but they get trained by professors/TAs measuring their papers in terms of length rather than content.
- exdsq 5y agoThe rabbit hole of shortest successful PhD thesis's is pretty cool
- topaz0 5y agoMaybe you're not the target audience. I quite enjoyed it.
- CyberRabbi 5y agoThis person seems to have some influence over C standards.
- spacechild1 5y agoIn fact, he is the project editor: https://thephd.dev/editing-the-c-standard https://thephd.dev/editing-the-c-standard He is also the author of sol2, arguably the best C++ Lua bindings library out there :-) His writing style might be a bit idiosyncratic, but he certainly is a brilliant person.
- KerrAvon 5y agoThat is really unfortunate given that they can’t seem to communicate concisely and clearly if this article is anything to go by.
- spacechild1 5y agoThis is his personal blog. He is perfectly capable of writing concise technical proposals.
- spacechild1 5y agoSee also https://thephd.dev/portfolio/standard https://thephd.dev/portfolio/standard
- deleted 5y ago[deleted]
- deleted 5y ago[deleted]