Bitcode - нова технологія Apple, про яку ніхто не розповідає

На WWDC 2015 була така кількість цікавих новинок, що багато розробників пропустили одне з найбільших нововведень, представлених Apple - Bitcode.

технологія
Після розміщення в 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 не боїться зміни архітектури процесорів

bitcode

Як показує історія, 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, але потім зник.

Проблема полягає в тому, що 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 грає "в довгу" і дає захопленим розробникам шанс підготуватися до того, що неминуче станеться у майбутньому.