This is only true if you happen to be dealing with integers larger than 32 bits (rarely in most of today's code). The real performance benefit of x64 has more to do with a larger number of general-purpose registers. More registers allow (but don't guarantee) programs to spend less time accessing main memory, thus gaining some speed.
Also, why should the Win64 ABI constrain everything? Certainly it'd only be needed around the edges, but for .NET code calling other .NET code, you're free to do interesting things. (Like pass a GUID or tuple in a single register if it'd help.)
Being a good OS citizen and sticking to the Win64 ABI also makes some things significantly simpler for the rest of the runtime. An obvious example of where this pays off is native interop (e.g. P/Invoke, COM interop, C++/CLI), but one less obvious example of where this comes into play is actually managed exception handling (which is built on top of the underlying Structured Exception Handling mechanism that Windows provides). Not only does adhering to the unified ABI allow managed exceptions to interop with native exceptions, but it also makes things simpler for debuggers, anything that needs to walk the stack, etc.
Remember, the CLR is really more of an execution engine, and not so much a "virtual machine". We try not to disrupt the architectural conventions of the underlying platform, since we're not trying replace the OS environment itself.
--Henry Baba-Weiss [MSFT]
Are you equating .NET in general with Silverlight? Honest question.
It's hard not to see this as informed by how badly Longhorn failed. Microsoft tried to make .NET the basis of their OS platform during Longhorn and failed miserably, in part because it was simply not built for that. CLR belongs as a layer on top.
[Disclaimer: I used to work at MS. Did not work on the Windows Runtime. These are my personal opinions.]
As far as Longhorn failing, certainly that was both a disaster in management and not just technology. After all, MS Corp felt generics were and impractical academic and theoretical idea that couldn't be properly implemented in a language like C# or the CLR.
What?!
Generics were only added to .NET 2.0, because it wasn't going to be done on time for the .NET 1.0/1.1 releases.
There are papers from the .NET Beta days already describing the way generics could be implemented, but additional work was still needed at the time.
Here's a history by Don Syme, who was one of the main people on this project:
http://blogs.msdn.com/b/dsyme/archive/2011/03/15/net-c-gener...
Quotes:
"But I do want to say one thing straight: Generics for .NET and C# in their current form almost didn't happen: it was a very close call, and the feature almost didn't make the cut for Whidbey (Visual Studio 2005)"
"being told by product team members that "generics is for academics only""
"It was only through the total dedication of Microsoft Research, Cambridge during 1998-2004, to doing a complete, high quality implementation in both the CLR [...] and the C# compiler, that the project proceeded."
Microsoft's C# track record shows MC Corp's commitment to higher-level programming pretty well, IMO. LINQ got added just to hit the "LINQ" target (and Erik Meijer mighta been a big force there). But even then: the C# 3.0 were only implemented to hit LINQ, not added as general language features. One big example: declaration type inference is half-assed and only exists to facilitate anonymous types. They've had years since to clean up the design and haven't shown any indication of doing so.(I still think C#'s the best out of the "mainstream" languages, but they could be doing a whole ton better.)
As for MSR vs MS Corp, as you put it.
It is called Microsoft Systems Research, it is still a Microsoft unit, with researchers on Microsoft's payroll.
So it is plain and simple, Microsoft.
You can target WinRT with the usual set of .NET languages, the only difference being the classes one uses.
Does C stop being C, if you don't use libc?
Which was cleared for anyone that cared to access the information available after the BUILD conference.
But hey, it is easier to form opinions based in twitter spread rumours, or something like that.
If you're talking about apps in the windows app store (so-called metro-style apps or whatever the current name is), then you're right that it meant throwing out a lot of code, but it's not true that all existing .NET code was excluded. It took some rejiggering. But once again, that's only if you want to deliver via the app store.
EDIT: asveikau has rightly pointed out I have confused two matters.
(Microsoft is not great at naming products.)
My only regret is the confusing x86/x64 message. Many will interpret perf improvements being due to the 64 bitness of new compiler