Поддержка 64-бит приложений x86 никогда не появится в Windows 10 ARM"
![](http://iseverodvinsk.ru/wp-content/uploads/2018/06/9gly4hga.jpg)
ARM-версия Windows 10 вскоре получит новый набор инструментов SDK для Windows 10 ARM64, позволяющий разработчикам создавать родные 64-битные приложения для этой платформы. Но это не решит проблему отсутствия совместимости с существующими высокопроизводительными программами, которые ради безопасности или доступа к большему объёму оперативной памяти исполняются исключительно в режиме x86-64. Таковыми являются многие игры высокого класса, а также, например, некоторые приложения пакета Adobe Creative Cloud, недоступные в 32-битных версиях.
В беседе с ZDNet менеджер подразделения Windows Эрин Чапл (Erin Chapple) рассказала, что эта проблема, возможно, никогда не будет решена: «Реализация эмуляции x86-64 в дополнение к x86 требует вдвое больших инженерных трудозатрат. Кроме того, Windows поддерживает только уровень абстракции Windows on Windows (WOW) для 32-бит, а не для 64-бит приложений. Нам нужно будет добавить поддержку 64-битной версии Windows on Windows». Это будет совершенно новая работа, а не просто развитие существующей поддержки исполнения 32-бит приложений x86 на 64-бит Windows 10 ARM. Вдобавок конечная производительность будет куда менее предсказуемой.
«Технически это реализуемо, но существует ещё разумный компромисс между требуемыми трудозатратами и преимуществами, которые получит конечный пользователь. Когда мы посмотрели на статистику наиболее используемых Windows-приложений x86, мы обнаружили, что большинство из них имеют 32-бит версии. Многие приложения вообще выпускаются только в 32-бит версиях. Большинство 64-битных приложений — это игры, которые находятся за пределами целевой аудитории таких ноутбуков. Наконец, те приложения, которые являются изначально 64-битными, как правило, создаются с расчётом на очень мощные компьютеры для достижения максимальной производительности. В результате мы решили сосредоточить наши инженерные вложения на создании собственного ARM64 SDK, чтобы разработчики могли компилировать родные приложения для ARM-устройств Windows», — подчеркнула руководитель.
Эрин Чапл также прокомментировала сообщения о недостаточной производительности эмуляции x86 на платформе Windows 10 ARM: «Если программа использует жёсткий диск, графику или сеть, всё это выполняется на уровне ядра и работает напрямую, с максимальной производительностью. Если же приложение x86 слишком завязано на CPU, то для трансляции команд требуется больше ресурсов по сравнению с исполнением родного кода ARM. Многое зависит также от типа и назначения программы. Во время нашего внутреннего тестирования мы обнаружили, что производительность большинства x86-приложений, работающих в режиме эмуляции, вполне отвечает ожиданиям пользователей относительно отзывчивости».
Избежать эмуляции на новой платформе Windows 10 ARM до сих пор можно было только создав UWP-приложение для Microsoft Store. Разработчики могли перекомпилировать существующее настольное ПО, если оно использовало лишь функции WinRT API и Core-версии .NET. Если же они задействовали функции вроде WinForms, требующие полной версии .NET, оставалось полагаться только на эмуляцию 32-битного кода x86.
В будущем, если разработчикам понадобится 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 будут поддерживаться», — сказала госпожа Чаппл.
Любопытно, что и программы самой Microsoft доступны на ARM-платформе в разных версиях. Например, браузер Edge пока является 32-битным на Windows 10 ARM и исполняется без эмуляции, но участники программы Windows Insider уже могут тестировать 64-битную версию Edge (скомпилированную, очевидно, при помощи Windows ARM64 SDK).
В то же время Internet Explorer и Office остаются по-прежнему 32-бит x86-приложениями: оставлены они в таком виде ради совместимости с расширениями и дополнениями (тем более, что программы пакета Office, как правило, нетребовательны к производительности CPU). В общим и целом, пока платформа Windows 10 ARM призвана стать основой для создания доступных и максимально мобильных устройств с акцентом на время автономной работы и интегрированную поддержку LTE. Они не предназначены для прямой конкуренции в области производительности с 64-битными системами на базе чипов Intel или AMD.