Apfelschorle. Мысли про Apple.

Замена двигателя "на ходу", или как Apple незаметно переезжает на язык программирования Rust

Статья вдохновлена публикацией Apple is quietly rewriting iOS and it’s not in Swift or Objective-C от Devlink Tips на платформе Medium.

rust

Apple не так и часто делает громкие заявления о том, как устроены её технологии внутри. Чаще всего мы видим красивые презентации про новые функции, а изменения в фундаменте операционной системы проходят мимо внимания широкой публики. Но именно там — на уровне кода, который управляет железом и безопасностью, — решается будущее линеек iPhone, iPad и Mac.

В последние годы появились убедительные признаки того, что Apple всё активнее использует язык программирования Rust в своей работе над сервисами и при разработке новых версий своих ОС. Не Swift, который компания сама разработала и активно продвигает вот уже больше 10 лет, и не классический Objective-C, а именно Rust — инструмент, о котором ещё несколько лет назад знали в основном энтузиасты.

Почему Apple вообще нужен новый язык?

История языков программирования в экосистеме Apple всегда была про баланс удобства и контроля. Сначала — Objective-C, смесь C, SmallTalk и объектной модели, которая десятилетиями держала на своих плечах техническую базу macOS и iOS. Потом, уже при Тимe Куке, появился Swift: более современный и удобный для новичков.

Swift отлично подошёл для приложений и интерфейсов, но при этом остался зависим от старых библиотек на C. То есть полностью избавиться от ошибок памяти или уязвимостей Apple не смогла. Внутри системы по-прежнему жили десятки миллионов строк кода на C и Obj-C, с которыми разработчики постоянно боролись.

Rust же решает эту проблему иначе. Он изначально создавался так, чтобы гарантировать безопасность памяти и работать с многопоточностью без тех головных болей, к которым привыкли программисты на C. Для компании масштаба Apple это означает две вещи: меньше критичных багов и выше стабильность для пользователей.

Так что же? Swift — плохой язык? Нет, просто кажется, что компания осознала, что его одного будет недостаточно для по-настоящему крепкой, современной и безопасной базы для своих операционных систем.

Почему именно сейчас?

Если посмотреть шире, тренд на Rust уже стал очевидным. Microsoft внедряет его в Windows, Google использует в Android, Amazon — в инфраструктуре AWS. Каждая из этих компаний поняла, что классические языки вроде C++ слишком уязвимы для современного мира, где безопасность — это не только «удобство», а вопрос доверия пользователей и даже политики.

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

Что получат пользователи?

Конечно, ни один владелец iPhone не увидит уведомления «теперь ваш телефон работает на Rust». Но на практике выигрывает каждый: техническая база на Rust принесет в ОС более стабильную работу приложений, меньше уязвимостей в безопасности и ускоренную работу в фоновом режиме.

Попробую объяснить на пальцах плюсы Rust. Одна из главных проблем при создании сложных программ — ошибки, связанные с памятью. Например, из-за ее "утечек" приложения могут вылетать или зависать.

Представьте, что у вас есть шкаф с ящиками, и программа должна точно знать, какой ящик открыт, какой закрыт, и что в нём лежит. На традиционных языках вроде C++ иногда случается путаница: ящик закрыли, но программа пытается в него заглянуть. Или наоборот — ящик открыли дважды и вещи перепутались. Это приводит к сбоям, «утечкам» ресурсов и даже к уязвимостям в безопасности. Rust же устроен так, что такие ошибки он просто не даст совершить. В его системе правил каждый ящик «принадлежит» только одному человеку (приложению/процессу), и если он отдаёт его другому, то прежний уже не может туда лезть.

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

Звучит как сказка какая-то. В чем подвох?

Справедливости ради, не все разработчики или эксперты считают, что Apple настроена на полный масштабный переход на Rust. И вот их основные аргументы:

Справедливые сомнения, не правда ли? Apple чаще действует эволюционно, а не революционно. А переписывать всё с нуля может быть слишком рискованно, особенно для систем, которыми прямо сейчас пользуются миллиарды людей.

Итог

Но Apple уже однажды удивила разработчиков, анонсом языка Swift. Теперь компания делает новый шаг, пусть и куда менее заметный. Rust становится её «секретным оружием»: фундаментальной технологией, которая не бросается в глаза, но задаёт тон на годы вперёд.

Можно сказать так: Swift отвечает за красивый фасад, Rust — за прочный фундамент. Вместе они смогут сделать iOS, iPadOS и macOS системами, которым можно доверять и которые готовы к вызовам будущего.