ARM-версия Windows 10 вскоре получит новый набор инструментов SDK для Windows 10 ARM64, позволяющий разработчикам создавать родные 64-битные приложения для этой платформы. Но это не решит проблему отсутствия совместимости с существующими высокопроизводительными программами, которые ради безопасности или доступа к большему объёму оперативной памяти исполняются исключительно в режиме x86-64. Таковыми являются многие игры высокого класса, а также, например, некоторые приложения пакета Adobe Creative Cloud, недоступные в 32-битных версиях.
![](https://i.playground.ru/p/pOrD-RWJO1VD9HB9uoJ1dw.jpeg?760xauto)
В беседе с ZDNet менеджер подразделения Windows Эрин Чапл (Erin Chapple) рассказала, что эта проблема, возможно, никогда не будет решена:
«Реализация эмуляцииx 86-64 в дополнение к x86 требует вдвое больших инженерных трудозатрат. Кроме того, Windows поддерживает только уровень абстракции Windows on Windows (WOW) для 32-бит, а не для 64-бит приложений. Нам нужно будет добавить поддержку 64-битной версии Windows on Windows».
Это будет совершенно новая работа, а не просто развитие существующей поддержки исполнения 32-бит приложений x86 на 64-бит Windows 10 ARM. Вдобавок конечная производительность будет куда менее предсказуемой.
![](https://i.playground.ru/p/Wz3h-JqItwHBPrTbd4NdUA.jpeg?760xauto)
«Технически это реализуемо, но существует ещё разумный компромисс между требуемыми трудозатратами и преимуществами, которые получит конечный пользователь. Когда мы посмотрели на статистику наиболее используемых Windows-приложений x86, мы обнаружили, что большинство из них имеют 32-бит версии. Многие приложения вообще выпускаются только в 32-бит версиях. Большинство 64-битных приложений — это игры, которые находятся за пределами целевой аудитории таких ноутбуков. Наконец, те приложения, которые являются изначально 64-битными, как правило, создаются с расчётом на очень мощные компьютеры для достижения максимальной производительности. В результате мы решили сосредоточить наши инженерные вложения на создании собственного ARM64 SDK, чтобы разработчики могли компилировать родные приложения для ARM-устройств Windows», — подчеркнула руководитель.
![](https://i.playground.ru/p/dpQtuGv_yH-x3YbivHgbUw.jpeg?760xauto)
Эрин Чапл также прокомментировала сообщения о недостаточной производительности эмуляции x86 на платформе Windows 10 ARM:
«Если программа использует жёсткий диск, графику или сеть, всё это выполняется на уровне ядра и работает напрямую, с максимальной производительностью. Если же приложениеx86 слишком завязано на CPU, то для трансляции команд требуется больше ресурсов по сравнению с исполнением родного кода ARM. Многое зависит также от типа и назначения программы. Во время нашего внутреннего тестирования мы обнаружили, что производительность большинства x86-приложений, работающих в режиме эмуляции, вполне отвечает ожиданиям пользователей относительно отзывчивости».
![](https://i.playground.ru/p/dTIUfNbcyu6uo8IlWwlLgg.jpeg?760xauto)
Избежать эмуляции на новой платформе Windows 10 ARM до сих пор можно было только создав UWP-приложение для Microsoft Store. Разработчики могли перекомпилировать существующее настольное ПО, если оно использовало лишь функции WinRT API и Core-версии .NET. Если же они задействовали функции вроде WinForms, требующие полной версии .NET, оставалось полагаться только на эмуляцию 32-битного кода x86.
![](https://i.playground.ru/p/PFgmKV7grc87l98Ccq4mzA.jpeg?760xauto)
В будущем, если разработчикам понадобится 64-битная производительность традиционного ПО или исполнение родного кода ARM, в идеале им необходимо будет компилировать написанные на C++ программы напрямую при помощи SDK для Windows 10 ARM64. Microsoft планирует осуществить запуск этого набора инструментов во время мероприятия Build 2018 в мае.
Поначалу такие приложения нельзя будет публиковать в магазине Windows Store, так что они заработают только в Windows 10 Pro ARM, а не в Windows 10 S ARM. Будет ли SDK поддерживать функции вроде WinForms, которые требуют наличия настольной версии .NET?
«Мы всё ещё работаем над нашими планами относительно развития ARM64 SDK, в том числе, обдумываем, какие версии .NET будут поддерживаться», — сказала госпожа Чаппл.
![](https://i.playground.ru/p/8jkTE7uFeSNrEY9U8-2Kdg.jpeg?760xauto)
Любопытно, что и программы самой Microsoft доступны на ARM-платформе в разных версиях. Например, браузер Edge пока является 32-битным на Windows 10 ARM и исполняется без эмуляции, но участники программы Windows Insider уже могут тестировать 64-битную версию Edge (скомпилированную, очевидно, при помощи Windows ARM64 SDK).
![](https://i.playground.ru/p/N_IH_WkCAmtQALD9pCsoNg.jpeg?760xauto)
В то же время Internet Explorer и Office остаются по-прежнему 32-бит x86-приложениями: оставлены они в таком виде ради совместимости с расширениями и дополнениями (тем более, что программы пакета Office, как правило, нетребовательны к производительности CPU). В общим и целом, пока платформа Windows 10 ARM призвана стать основой для создания доступных и максимально мобильных устройств с акцентом на время автономной работы и интегрированную поддержку LTE. Они не предназначены для прямой конкуренции в области производительности с 64-битными системами на базе чипов Intel или AMD.
Костыли
Кербувим Керман Скорее уж инвалидное кресло.