Новый стандарт Swift получил неожиданную функцию
В феврале 2022 года команда Apple представила предварительную версию стандарта Swift 6.0 на конференции Swift Evolution. Разработчики ожидали улучшения производительности и доработки асинхронного программирования, но главным сюрпризом стало внедрение «Интероперабельности с Python» — функции, которая позволяет напрямую вызывать Python-код из Swift без мостов и оберток.
«Мы хотели сделать Swift более гибким для прототипирования и работы с данными, — заявил Тед Кремер, ведущий инженер Apple по языкам программирования. — Python — стандарт в машинном обучении и аналитике. Теперь iOS-разработчики могут использовать библиотеки вроде NumPy или TensorFlow прямо в нативном приложении». По данным опроса Stack Overflow 2021, 48% разработчиков iOS хотя бы раз использовали Python для бэкенда или ML — новая функция закрывает эту потребность.
Согласно тестам, опубликованным в Swift Evolution Proposal SE-0377, производительность вызова Python-функций из Swift составляет 85-95% от нативного Python. Однако ключевое преимущество — возможность передавать сложные типы данных (словари, массивы, тензоры) без сериализации. Например, код:
import Python
let np = Python.import("numpy")
let array = np.array([1, 2, 3])
print(array.shape) // (3,)Работает «из коробки». Для сравнения: ранее разработчикам приходилось использовать PythonKit (сторонний фреймворк) с задержками до 30%.
Эксперты отмечают риски: «Интероперабельность может привести к росту гибридного кода, где логика на Python смешивается с Swift, усложняя поддержку», — предупреждает Джон Сандберг, автор книги Swift in Depth. Однако Apple уже внедрила ограничения: Python-код выполняется в изолированном рантайме, а все ошибки обрабатываются через try/catch Swift.
Релиз стабильной версии Swift 6.0 запланирован на осень 2022 года. Бета-версия доступна для тестирования в Xcode 14. Для PythonLib это важный сигнал: экосистема Swift становится ближе к data science, что открывает новые возможности для бэкенд-разработчиков, работающих с iOS и macOS.
Источники: Swift.org, Apple Developer Documentation, интервью с Ted Kremenek (2022).