|
| ▲ | dchftcs 3 hours ago | parent | next [-] |
| At some point velocity will slow down too. Figuring out edge cases in production to add or subtract a few lines, or backtracking from a bad change. |
|
| ▲ | gorgoiler 3 hours ago | parent | prev | next [-] |
| You’re right about the impossibility of reviewing for style, clarity, and coherence. For correctness though, Windows is famous for being insistent on backwards compatibility over timespans measured in decades and that must surely be automated to the hilt. As a third-party developer in the late 2000s I remember my boss giving me a CDROM binder (binders?) of every single OS release that Microsoft had ever put out. I assume he’d been given it my his developer-relations rep at Microsoft. My team and I used it to ensure our code worked on every MSDOS/Win* platform we cared to target. I expect that, internally, the Windows team have crazy amounts of resources to implement the most comprehensive regression testing suite ever created. To that extent, at least, you’d be able to tell if the Rust version did what the old code did even if you didn’t read the code itself. |
| |
| ▲ | monocasa 2 hours ago | parent [-] | | > For correctness though, Windows is famous for being insistent on backwards compatibility over timespans measured in decades and that must surely be automated to the hilt. That hasn't been nearly the same goal for decades now. For instance, Crysis literally won't run on win10 or later anymore. On top of that, security bugs aren't the kind of thing you can automate away during a rewrite that no one has the bandwidth to actually review. |
|
|
| ▲ | dmitrygr 3 hours ago | parent | prev | next [-] |
| What makes you think any existing recent code added to Windows has been reviewed by anyone? This is the company that broke the start menu and the login screen in two consecutive updates. |
| |
| ▲ | monocasa 3 hours ago | parent | next [-] | | I've heard some inside stories from microsofties. They do still review code, but the first wave of layoffs in 2022 mainly hit principal engineers and above because some bean counters said "oh, these are the engineers that are costing us the most per head", so it's kind of the inmates running the asylum now. And I'll say that their biggest sin was always that their code from the late 90s on was about 20% too clever for their own good. Kind of goes to that classic quip about how how it takes twice your brain power to debug code as it takes to write it, so if you were already maxing out just writing it, then you're not smart enough to debug it. That's half of why features seemed to get a 1.0 release, then get replaced with something rather than iteratively improved (the other half being FAANG style internal incentive structures). Were all seeing the effects of them clearing house of their weaponized autism that was barely keeping the wheels on the wagon. They do review, but they don't have the ability to do it properly at scale anymore. Which makes rewriting everything even more batshit. | |
| ▲ | stackghost 3 hours ago | parent | prev [-] | | Also the company whose start menu ads made the interface so laggy their "solution" was to just preload the bloat. |
|
|
| ▲ | charcircuit 3 hours ago | parent | prev [-] |
| With this mindset I feel like you would also think bumping a C++ compiler toolchain version is impossible due to all the different changes to code generation that could happen. This is already done today and has similar issues where technically all the code can be affected, but it's not reviewed via a process of manually reading every line. |
| |
| ▲ | monocasa 3 hours ago | parent | next [-] | | There's a nearly incalculable difference between bumping a compiler version and rewriting it in a different language. | | |
| ▲ | charcircuit 3 hours ago | parent [-] | | A C++ compiler translates C++ to an assembly. This project would translate C++ to another language. It's not that different of a concept. | | |
| ▲ | dagmx 2 hours ago | parent | next [-] | | It’s significantly more straight forward to go from a higher level to a lower level representation than it is to go between different high level representations. That’s not to trivialize what a compiler does, but it’s effectively going from a complex form to its building blocks while maintaining semantics. Changing high level languages introduces fundamentally different semantics. Both can decompose to the same general building blocks, but you can’t necessarily compose them the same way. At the simplest example, a compiler backend (the part you’re describing) can’t reason about data access rules. That is the domain of the language’s compiler frontend and a fundamental difference between C++ and Rust that can’t just be directly derived. | |
| ▲ | monocasa 3 hours ago | parent | prev | next [-] | | A compiler isn't using a statistical model of language more complex than anyone could understand with a lifetime of study to do its translation, adheres to a standard for that translation, and if you're important enough (and Microsoft internal teams are for MSVC), you get heads up on what specifically is changing so you know where to look for issues. This is "lets put our postgres database on blockchain because I think blockchain is cool" level of crap you see in peak bubble. | |
| ▲ | overgard 3 hours ago | parent | prev [-] | | Compilers are deterministic. |
|
| |
| ▲ | Krssst 3 hours ago | parent | prev [-] | | There is a C++ standard that everyone writing C++ code follows and newer version are usually compatible with one another regardless of toolchain version. Behavior of the toolchain should not change. Worst case you can use deterministic, reliable tools to automatically detect problematic locations if there really is a behavior change. (compiler warnings/errors for example) AI code generation is not deterministic and has no guarantee of behavior, thus requires review unless incorrect code is acceptable. | | |
| ▲ | charcircuit 3 hours ago | parent [-] | | >AI code generation is not deterministic You don't have to use AI code generation to be what is generating the code or you could require some kind of proof of equivalence to verify the code that was generated. |
|
|