На WWDC 2015 было такое количество интересных новинок, что многие разработчики пропустили одно из самых больших нововведений, представленных Apple, — Bitcode.

На сессии, посвященной Bitcode, представитель Apple Андреас Вендкер сказал, что Bitcode позволит App Store оптимизировать приложения для различных устройств перед загрузкой пользователями. Другими словами, существующие приложения в App Store смогут использовать преимущества новых процессоров без каких-либо действий со стороны разработчиков, в полностью автоматическом режиме, без обновления и повторной публикации.

Screen-Shot-2015-06-17-at-10.28.10-AM
После размещения в App Store приложения будут преобразованы в Bitcode.

На практике это означает следующее… Если Apple внезапно изменит архитектуру процессора в том или ином устройстве, разработчикам больше не нужно будет обновлять свои приложения для ее поддержки. Благодаря тому, что App Store автоматически повторно скомпилирует приложения, они с первого же дня смогут работать с новыми процессорами, независимо от того, слышали ли вообще разработчики об их появлении или нет.

Что же представляет собой Bitcode

Это сложный вопрос. Чтобы ответить на него, вы должны иметь представление о Low Level Virtual Machine (LLVM) — универсальной системе трансформации, которая используется для преобразования существующего кода в машинный код для различных архитектур.

LLVM состоит из двух частей: фронтенда и бекенда. Первая — это язык программирования, с помощью которого вы создаете свое приложение, например Objective-C, Swift, Python или Ruby. Вторая служит для компиляции этого приложения в машинный код, то есть набор инструкций, понятный отдельно взятому процессору.

Bitcode при этом является своеобразной прослойкой, промежуточным языком, который может повторно компилировать приложения в набор инструкций. Bitcode использует LLVM, чтобы получить код приложения и перевести его в Bitcode. Технология знает также, как превратить этот код в исполняемое приложение, основанное на необходимом наборе инструкций.

Проще говоря, это позволит Apple добавлять поддержку новых архитектур в бекенд App Store, который покажет Bitcode, как скомпилировать приложение для новой архитектуры.

Apple не боится смены архитектуры процессоров

Screen-Shot-2015-06-17-at-1.12.14-PM

Как показывает история, Apple — одна из немногих компаний, успешно переживших смену архитектуры в своих ключевых продуктах. Линейка компьютеров Mac пережила ее дважды.

Самыми значимыми переменами был переход с архитектуры PowerPC на Intel в 2005-м. Apple отказалась от устаревшей аппаратной платформы, предоставив разработчикам новые возможности и предварительно предупредив их.

Из недавних изменений можно вспомнить переход на 64-битную архитектуру в iPhone два года назад. Тогда разработчикам пришлось повторно компилировать свои приложения, чтобы добавить в них поддержку 64-битного процессора iPhone 5s. С Bitcode разработчикам больше не нужно будет переделывать свои приложения даже после существенных изменений вычислительной архитектуры.

Если Apple внезапно перейдет на новую архитектуру, скажем, в iPad Pro, благодаря Bitcode приложения сторонних разработчиков будут поддерживать новое устройство сразу после его релиза.

Эта новая технология имеет огромное значение, она позволит разработчикам идти в ногу со временем при запуске новых устройств или смене архитектуры на существующих.

iOS-разработчик Калеб Дэвенпорт говорит, что у Bitcode есть как плюсы, так и минусы. Apple больше не нужно ждать разработчиков, чтобы представить обновленные инструменты для поддержки новых устройств.

Меня пугает лишь то, что мое приложение может быть скомпилировано в конфигурациях, которые я не смогу проверить, что, в свою очередь, приведет к ошибкам, которые я не смогу воспроизвести.

Калеб Дэвенпорт ждал появления 64-битных устройств в продаже, чтобы протестировать свое приложение на «реальном» железе и только потом добавить в него соответствующую поддержку. В случае с Bitcode, который автоматически компилирует приложения для новых устройств без участия разработчиков, могут пройти недели, прежде чем разработчик купит новое устройство для тестов, в то время как пользователи будут использовать его приложение и сталкиваться с возможными ошибками.

Другие разработчики считают иначе. Так, Сьорд Дженссен положительно воспринимает нововведения Apple, поскольку они уменьшат объем работы, которую ему нужно выполнить для поддержки новых устройств. Он полагает, что, если бы Apple внезапно перешла на процессоры Intel в новых iPhone, с его стороны не требовалось бы никаких действий, чтобы обеспечить поддержку устройств в день релиза.

Остальные разработчики воспринимают Bitcode со смешанными чувствами. Технология кажется удивительной, но в ней еще предстоит разобраться.

Bitcode был в описании 404-й сессии WWDC, но потом исчез.
Bitcode был в описании 404 сессии WWDC, но потом исчез.

Проблема в том, что Apple не предоставляет разработчикам достаточной информации. Несмотря на свое огромное значение, Bitcode был очень осторожно упомянут на WWDC и даже исключен из некоторых сессий. В тех приложениях, где используются библиотеки с закрытым исходным кодом, как, например, CocoaPods, Bitcode и вовсе не желателен, поскольку может вызвать ошибки, пока разработчики библиотек сами не добавят поддержку новой архитектуры.

Скорее всего, больше подробностей появится ближе к выходу iOS 9 и watchOS 2, но все-таки странно, что Apple не предоставила полную документацию о Bitcode на WWDC, мероприятии, которое и создано для освещения таких изменений.

Независимость от архитектуры в будущем

Пользователь Medium под псевдонимом Inertial Lemon полагает, что эти изменения сигнализируют о чем-то большем. Bitcode обязателен в приложениях для Apple Watch, но лишь рекомендован для iOS, а, как мы знаем, теперешние рекомендации в будущем часто перерастают в обязательные требования.

Для Apple Watch это означает, что в следующем поколении часов могут использоваться совершенно другие процессоры, но для разработчиков это не будет иметь никакого значения — App Store автоматически приспособит существующие приложения под новые устройства.

Кроме того, Bitcode может сигнализировать о возможном изменении архитектуры Mac. Боб Мэнсфилд, которого убрали из высшего исполнительного руководства, чтобы он возглавил «специальные проекты», является одним из кандидатов для работы над этим. Apple уже производит процессоры для iOS-устройств, поэтому переход на чипы собственного производства в Mac не выглядит таким уж сумасшествием.

Есть только один камень преткновения — Bitcode пока не поддерживается в приложениях для OS X. Возможно, ключевым словом здесь является «пока», ведь человек, представлявший эту технологию на WWDC, работает в команде OS X.

Такие изменения означали бы для Apple возможность перехода Mac с архитектуры Intel на ARM без необходимости адаптировать базу существующих сторонних приложений. В этом случае компания избавится от зависимости от Intel, испытывающей трудности со своевременной поставкой чипов, из-за которых откладывались релизы новых продуктов Apple.

Надо понимать, что это длительный процесс и Bitcode не обязательно сигнализирует о подобных изменениях в ближайшем будущем. Но, так или иначе, Bitcode сделает Apple более гибкой для радикальных изменений аппаратных средств в своих устройствах. Также в будущем компании не нужно будет уведомлять разработчиков об изменениях, что позволит ей сохранить информацию о новых устройствах в тайне до самой презентации.

У разработчиков поубавится работы по адаптации приложений при следующих больших обновлениях. По сути, им вообще ничего не нужно будет делать, хотя многие и подозревают, что процесс не будет настолько прост.

Bitcode должен достигнуть критической массы, прежде чем смена архитектуры станет простым процессом. Но Apple играет «в долгую» и дает увлеченным разработчикам шанс подготовиться к тому, что неизбежно произойдет в будущем.

via