iOS 14.2 добавляет поддержку JIT-компиляции, позволяющую эмулировать приложения с полной производительностью

Возможно, вы знаете о некоторых неофициальных приложениях для iOS, которые предлагают некоторую форму эмуляции. Эти приложения работают на основе хаков и эксплойтов, что значительно снижает производительность — но это скоро изменится. Apple незаметно добавила поддержку JIT-компиляции (Just-In-Time) в iOS 14.2, что позволит эмуляторам работать на полной скорости на iPhone и iPad.

Райли Тестут, разработчик AltStore, поделился с 9to5Mac подробностями о том, как это изменение повлияет на неофициальные приложения, предлагающие эмуляцию консолей и виртуальных машин. Но сначала позвольте мне кратко объяснить, что такое JIT и как он работает на iOS.

JIT, или Just-In-Time компиляция, — это способ запуска программного обеспечения, которое будет скомпилировано во время его выполнения, в то время как традиционное программное обеспечение полностью компилируется до его выполнения. С JIT исходный код переводится в машинный код в режиме реального времени.

Apple никогда не предлагала официальную поддержку JIT-компиляции на iOS, но некоторые разработчики находили способы запускать ее с помощью хаков, что сопровождалось множеством ошибок и низкой производительностью. Однако эти эксплойты были полностью удалены в iOS 14. По крайней мере, до сих пор.

Как описал Тестут, Apple добавила поддержку JIT-компиляции во вторую бета-версию iOS 14.2 — но компания никогда публично об этом не упоминала. Поддержка сохранялась на протяжении всех бета-версий и была оставлена в финальном релизе. Разработчик считает, что это намеренное внедрение, а не ошибка Apple, но пока подтвердить это невозможно.

Благодаря поддержке JIT-компиляции в iOS 14.2 приложения-эмуляторы теперь могут работать на полной скорости без хаков, джейлбрейка и других компромиссов.

Например, с JIT Delta теоретически сможет эмулировать более мощные системы, такие как PS2, GameCube и Wii; без JIT нам пришлось бы ждать еще несколько лет, прежде чем оборудование стало бы способным на это. Сначала я был настроен скептически, но теперь больше склоняюсь к мысли, что это было намеренное изменение.

Однако это не означает, что вы увидите приложения-эмуляторы в App Store или даже другие приложения, использующие JIT. Тестут сообщил нам, что текущая реализация работает только для сайдлоад-приложений, которые обычно устанавливаются через Xcode и другие инструменты разработчика, а не через App Store. Другими словами, это функция, предназначенная для разработчиков с отладочными целями.

Я сомневаюсь, что ограничение JIT только для сайдлоад-приложений было первоначальной целью (и, скорее всего, связано с необходимостью запускать неподписанный код при отладке с помощью Xcode), но мне было бы интересно посмотреть, сохранится ли это ограничение в долгосрочной перспективе.

Но если у вас есть AltStore, вы скоро сможете наслаждаться такими приложениями, как UTM, который предлагает виртуальные машины на iOS, и DolphiniOS, который по сути является эмулятором GameCube и Wii для iPhone и iPad, работающим с максимальной производительностью.

В видео ниже вы можете увидеть, насколько плавно работает DolphiniOS на iOS 14.2 без джейлбрейка, используя нативную реализацию JIT:

Существует новая версия AltStore, совместимая с JIT-приложениями, которая в настоящее время находится в бета-версии, но скоро будет доступна всем пользователям AltStore. Если вы хотите узнать больше о том, как установить и использовать AltStore, ознакомьтесь с нашей специальной статьей об этом.