I think once you get the design of the IR right and implement it relatively efficiently, an optimizing compiler is going to be complicated enough that tweaking the heck out of low-level data structures won't help much. (For a baseline compiler, maybe...but).
E.g. when I ported C1 from C++ to Java for Maxine, straightforward choices of modeling the IR the same and basic optimizations allowed me to make it even faster than C1. C1X was a basic SSA+CFG design with a linear scan allocator. Nothing fancy.
The Virgil compiler is written in Virgil. It's a very similar SSA+CFG design. It compiles plenty fast without a lot of low-level tricks. Though, truth be told I went overboard optimizing[1] the x86 backend and it's significantly faster (maybe 2x) than the nicer, more pretty x86-64 backend. I introduced a bunch of fancy representation optimizations for Virgil since then, but they don't really close the gap.
[1] It's sad that even in the 2020s the best way to make something fast is to give up on abstractions and use integers and custom encodings into integers for everything. Trying to fix that though!
> The point of the economic system is it channels some of the most ghoulish and horrible people to do good as an accidental side effect of their mad rush to wealth and power. Works really well, on average everyone wins.
When there is a functioning justice system that enforces the law, rather than a corrupt oligarchy/kleptocracy/kakistocracy.
The total cost of the entire program over its projected lifetime is $1.7 trillion. The F-35 is made by one company, Lockheed Martin (with some pieces made by a couple others). This entire program is a massive transfer of taxpayer money into one company.
Another data point is that it's estimated that all student debt in the US combined is $1.7 - 1.8 trillion.
Yeah, congress forces the military to contract out to companies in enough congressional districts to secure passage of the legislation. We basically force these companies into byzantine and inefficient supply chains because we treat it all as a jobs program.
Good luck building a bunch of new interstates today. Opposition was already coming in at the end of the interstate system buildout. Drill down and you'll find various odd connections (or lack thereof) throughout the system that resulted from community opposition.
The US interstate system is incredible extensive, uniform, and well-maintained (relatively speaking). States love federal dollars, and if there were federal dollars for train lines, they'd fall over themselves to get them. That doesn't seem to happen for a lot of reasons. It seems like there are a lot of corruption problems that seem to eat up train projects, but for some reason the interstate system, though replete with plenty of boondoggles, is an unstoppable road-spreading machine.
The interstate system only succeeded because the federal government took the very rare step of steamrolling all the states and individual landowners. It was done in service of putting people to work and stimulating the economy. But it was not a well-liked project.
Today, it is well-regarded, but when it was being done? No way.
You have to realize that once Google flips the bit on you and they think you are trying to scam them (or others via them) you are absolutely dead to them. They don't want to hear from you ever again. You're banned to hell. The fact that a billing system didn't get switched off isn't so surprising; the internal architecture of their systems is so complicated that it would take multiple human lifetimes to explain how it all works.
> The fact that a billing system didn't get switched off isn't so surprising; the internal architecture of their systems is so complicated that it would take multiple human lifetimes to explain how it all works.
There was a lawsuit about a decade ago where a company was owed about $500k in ad fraud refunds and Google kept saying they had paid it, it ended up being an incomplete part of their software that had inadvertently withheld $75 million!
Just wait until they get into the phase where they're big enough that they're eating all the baby startups and have to pick winners and losers amongst the myriad of overlapping features while also having the previous baby startups they acquired crank out new features.
E.g. when I ported C1 from C++ to Java for Maxine, straightforward choices of modeling the IR the same and basic optimizations allowed me to make it even faster than C1. C1X was a basic SSA+CFG design with a linear scan allocator. Nothing fancy.
The Virgil compiler is written in Virgil. It's a very similar SSA+CFG design. It compiles plenty fast without a lot of low-level tricks. Though, truth be told I went overboard optimizing[1] the x86 backend and it's significantly faster (maybe 2x) than the nicer, more pretty x86-64 backend. I introduced a bunch of fancy representation optimizations for Virgil since then, but they don't really close the gap.
[1] It's sad that even in the 2020s the best way to make something fast is to give up on abstractions and use integers and custom encodings into integers for everything. Trying to fix that though!
reply