WinRT is as much about manycore processing as it is about the UI.

Sun 25 September 2011

The long-term success of every operating system is tied to the progress of hardware, which has taken a 90-degree turn from "faster every generation" to "more parallel every generation." For the better part of a decade, the chips in new machines have run no faster, but there have been more processors living side-by-side. Many of us run "octocore" desktops and Santa will be delivering 16-core systems to good little programmers this year.

The days of single-threaded programming is over. Done. When someone complains about performance and find out out that your code uses 1/16 or 1/32 of the power available, there's going to be a lot of trouble. But nevermind *your* problems, think about the OS vendors looking at a future with dozens of cores inside a single machine. And not just dozens of cores, but the absolute certainty that the entire hardware infrastructure will be parallelized. The next decade will bring the wholesale reinvention of the PC architecture and I'll bet dollars to donuts that at least one major operating system is going to screw up and lose years of performance improvements. At this point, with Windows still recovering from the Vista debacle and still trying to get its mobile feet firmly planted, it's not at all certain that the Windows hegemony will last through 2025.

WinRT, the runtime used for the new "Metro-style" programs of Windows 8, gives Microsoft a new system-level interface that is designed for highly-parallelized programs. Every function that is expected to take more than 1/20th of a second to execute has been recast in an asynchronous form: developers will certainly be able to screw up and write programs that block/freeze, but they will have difficulty blaming that problem on the OS.

A highly asynchronous system-level API gives Microsoft the top-down leverage it needs to squirrel around at the lowest levels, reworking the OS incrementally to work with more-and-more side-by-side processing. The dramatic break in UI appearance is both a powerful aesthetic incentive and a subtle indicator of compliance -- you want the Metro UI and, if you have it, your code is built on a foundation that has firm asynchronous roots.

Given the development tempo and lifespan of enterprise applications, it is not a moment too soon for this change.