I was seeing if we were all on the same page with what we meant by rewritten. Obviously if its advertizing an upgrade some changes are done.
Of course, but do you really need to rewrite that string handling routine ? That socket API ? The message passing sub-system ? Of course not. It works, it's been tried and tested and you don't need to add to it to implement new features.
The Initially statement was that Windows needed a TOTAL rewrite, one of the responses was it was a rewrite.
My response was about the initial statement. Rarely does anything need a "total" rewrite. A lot of code is debugged, working and still extensible/clean. Why rewrite it ? Rewriting makes sense if a piece of code doesn't permit extending it anymore or implementing a new feature on top of it means adding so much code for edge cases that the "standard path" becomes a edge case itself. Then you just rewrite to make the standard path more flexible.
A total re-write can make a big difference. We can see that with difference between FCP7 and FCP X for instance.
And even that isn't a total rewrite I bet. No one ever sits down, hits "New Project" and starts with a blank template once you've got a big enough code base. There's always something that's tried, true, tested, debugged that you don't need to change.
Heck, even implementing ARM support in the Windows kernel doesn't require a total rewrite. The NT kernel is written with portability in mind and at a time ran on 4 different architectures at the same time (MIPS, PPC, Alpha, x86 with an unofficial SPARC port which I'm not counting). It still runs on at least 3 right now (x86, x86_64 and ia64).