1..Net native — прекомпиляция для managed apps
Саммари:
* MSIL транслируется в нативный код, используется Microsoft VC++ optimizer back-end.
* Конкретных цифр-подробностей пока нет, обещается производительность сравнимая с нативным c++ и значительное сокращение времени запуска приложений.
* Метаданные никуда не теряются, рефлексия работает.
* Пока — только для winphone/winrt. На сегодня транслируется не весь код, как я понял, остаток будет полагаться на обычный jit.
Видео и ссылки для скачивания — тынц
2.Universal apps (+ анонс от Сомасегара).
Саммари:
* Общий код для winphone/winrt-проектов
* Код/отладка/тесты/дизайнер под обе платформы. 1 солюшн.
* Код для конкретной платформы никуда не делся,
1 картинка вместо лишнего текста
* Присутствует из коробки в vs2013 update 2 rc
3.Orleans — хостинг сервисов на основе actor-model от MS Research
Саммари (практически не разбирался, могут быть ляпы):
* Почти похоже на эрланг, только совсем не эрланг
* Подходит для сервисов массового обслуживания, поддерживается хостинг в Azure/"домашнем" кластере.
* Встроенное распределённое хранилище, отказоустойчивость и восстановление из коробки.
* Внутренняя логика актора — однопоточная, взаимодействие — асинхронное, на Task-ах и await-ах. Никакой возни с блокировками/разруливанием взаимодействия
* Практически линейная масштабируемость, поддержка пулов соединений (через всё те же акторы), производительность не падает при большом количестве акторов.
Ссылки — pdf, сайт
* Скомпилированный код не зависит от .Net Framework runtime
* Потенциально — поддержка любых языков, которые могут генерить MSIL, т.е. любого валидного IL.
* Генерики, GC, рефлексия — всё просто продолжит работать.
* Выпуск под все платформы (.net micro framework пока под вопросом)
* Производительность будет сопоставима с обычным C++. Время компиляции, судя по всему, тоже
Из спорных моментов пока непонятно, как быть с обновлениями фреймворка через win update (патчи и баги), с подгрузкой сторонних сборок, кодогеренацией, dynamic-кодом и тд и тп. Будем ждать подробностей.
Shared projects плюс не требующий фреймворка .net native... В общем в слухах о том, что MS собирается прикупить xamarin становится всё больше и больше смысла.
P.S. В ту же копилку — кросплатформенный WinJS, да ещё и open source (демо онлайн, в старой опере не работает). Ущипните меня, это точно МС?
Здравствуйте, Sinix, Вы писали:
S>P.S. В ту же копилку — кросплатформенный WinJS, да ещё и open source (демо онлайн, в старой опере не работает). Ущипните меня, это точно МС?
Здравствуйте, Sinix, Вы писали:
S>P.S. В ту же копилку — кросплатформенный WinJS, да ещё и open source (демо онлайн, в старой опере не работает). Ущипните меня, это точно МС?
Здравствуйте, Tesh, Вы писали:
T>Чем .Net Native отличается от уже давно существующего NGen? Тем, что работает на мобилках?
Если я правильно понял из презентаций:
1) Все нужное сливается в один исполняемый файл, без зависимостей от .Net Framework
2) На бекенде используется кусок микрософтовкого С++ компилятора со всеми возможными оптимизациями
3) Сделано множество ограничений (например недоступна рефлексия по приватным членам, нельзя динамически загружать сборки итд), которые опять же позволяют сделать оптимизации, принципиально недоступные в NGen
Здравствуйте, Tesh, Вы писали:
T>Чем .Net Native отличается от уже давно существующего NGen? Тем, что работает на мобилках?
Нет, ngen работает и на мобилках По факту там только последний этап, разруливание вызовов к другим сборкам, но тем не менее.
Если коротко, то вместо "ngen == сохранение выхлопа JIT в файл" получается полноценная прекомпиляция: код оптимизируются тем же бэкэндом, что и для vc++, результат компиляции не требует распространения рантайма.
Это то, что известно из презентации. Остальные детали пока не раскрывались (ну, или я пропустил статьи на тему).
Здравствуйте, Евгений Акиньшин, Вы писали:
ЕА>3) Сделано множество ограничений (например недоступна рефлексия по приватным членам, нельзя динамически загружать сборки итд), которые опять же позволяют сделать оптимизации, принципиально недоступные в NGen
А вот про это есть где-то инфа?
На презентации и в доках ограничения описаны очень расплывчато, где проблемы принципиальные, где проблемы текущей беты — фиг поймёшь. В Optimizing .NET for Modern Hardware упоминали, что рефлексия и динамическая подгрузка сборок никуда не денутся, но я слушал краем уха, могу и переврать
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Евгений Акиньшин, Вы писали:
ЕА>>3) Сделано множество ограничений (например недоступна рефлексия по приватным членам, нельзя динамически загружать сборки итд), которые опять же позволяют сделать оптимизации, принципиально недоступные в NGen S>А вот про это есть где-то инфа?
S>На презентации и в доках ограничения описаны очень расплывчато, где проблемы принципиальные, где проблемы текущей беты — фиг поймёшь. В Optimizing .NET for Modern Hardware упоминали, что рефлексия и динамическая подгрузка сборок никуда не денутся, но я слушал краем уха, могу и переврать
У меня пока времени разбираться нету, но на мсдн достаточно подробно вроде расписано:
Здравствуйте, Евгений Акиньшин, Вы писали:
ЕА>>>3) Сделано множество ограничений (например недоступна рефлексия по приватным членам, нельзя динамически загружать сборки итд), которые опять же позволяют сделать оптимизации, принципиально недоступные в NGen S>>А вот про это есть где-то инфа?
ЕА>У меня пока времени разбираться нету, но на мсдн достаточно подробно вроде расписано: ЕА>http://msdn.microsoft.com/en-us/library/dn600634.aspx ЕА>http://msdn.microsoft.com/en-us/library/dn584397.aspx
Угу, спасиб. С рефлексией всё ок.
Private reflection over types and members in the .NET Framework class library is not supported. You can, however, reflect over your own private types and members, as well as types and members in third-party libraries.
С Assembly.Load, если прописать сборку в rd.xml — тоже всё ок.