http://www.thomgerdes.com/2011/12/winrt-.....files.html
Один из немногочисленных пока обзоров Windows Runtime.
> The first thing I noticed is that Windows is doing a lot to break the  API down into Namespaces, and for the most part each metadata file  describes one namespace. So my first reaction was to put the contents of  each metadata file into one Delphi unit. This doesn't quite work though  because of a few things: One metadata file may actually contain  multiple namespaces, one namespace might be included in several metadata  files, and there are circular dependancies between types in the various  metadata files.
Не ожидал такого дерьма от Microsoft. Это же из C++, это должно быть похоронено, алё? Один файл – один модуль, имена одинаковые. Что опять за творчество восьмидесятых?
> Generic Interfaces
> Generics are used pretty heavily throughout WinRT. In the C++ language  bindings, they end up translating down to a template class, and the  pre-compiled headers actually have to parametrize every instance of a  generic class. This is pretty ugly and it'd be much nicer to just  declare the interface and have the compiler do the right thing. Delphi  has a similar problem for similar reasons. Generic Interfaces are  supported by the compiler, but the problem arises in that you cannot  specify a GUID for parametrized instances of a given generic interface.  So for now, I've had to create a unique interface for every  parameterized interface in WinRT.
А вот про Generics в API не знал. Здесь WinRT лучше, чем IBM SOM. Однако,
> But how do you go about assigning a  GUID to the interfaces? The answer lies in RoGetParameterizedTypeInstanceIID.
Функция эта доступна только в Windows 8, из–за этого нельзя компилировать с других OS. Кстати, не проверял, но, может быть, было бы достаточно унаследовать GUID–интерфейс от не–GUID–ного generic interface. Ну или оставить generic interface as is, а получать его через Supported(), а GUID вычислять на целевой платформе.
Впрочем, компилятор следующей версии Delphi наверняка изменится в такую сторону, что эти workaround станут не нужны. Что нравилось в Delphi, так это сращивание с компонентными технологиями Windows до такой степени, что использовать их из Delphi удобнее, чем из C++ и C# от Microsoft. Это же и её минус как плохо переносимого ЯП. Я раньше думал, это Borland додумался TDateTime сделать из Double. Ан нет, это из COM пошло. Ну хоть проблема 2000 не грозит на время существования Солнечной Системы.
Плохо, что WinRT доступен только в Win8. Потребуется лет восемь, чтобы на нём можно было писать для массового пользователя. Лучше бы, наоборот, в 2001м году вместо .NET был бы выпущен WinRT, входил бы в обновления OS и был бы доступен везде, а .NET, наоборот, был бы доступен не ранее какой–нибудь версии Windows.
