После года разработки компания Apple представила релиз языка программирования Swift 4.0, второй значительный выпуск после открытия исходных текстов проекта. Официальные сборки подготовлены для Linux (Ubuntu 16.04, 16.10) и macOS (Xcode). Исходные тексты распространяются под лицензией Apache 2.0.

В отличие от прошлых выпусков в Swift 4.0 сохранена полная обратная совместимость с исходными текстами ветки Swift 3. Изменения в Swift 4.0 сосредоточены на расширении возможностей стандартной библиотеки и реализации таких возможностей, как архивирование/сериализация структур и перечисляемых типов (например, теперь поддерживается сериализация в JSON и plist). В состав включена новая реализация типа String, которая отличается более высокой производительностью, обеспечением корректности Unicode и предоставлением инструментов для создания, использования и манипуляций подстроками (substring, многострочные литералы). Расширены возможности словарей и коллекций (тип Collection).

Представлена новая команда “swift run” для сборки и запуска исполняемых файлов, определённых в текущем пакете. Реализована идея эксклюзивного доступа к памяти, предотвращающая ситуации, когда может быть произведено изменение переменой, которая в данный момент используется или изменяется в другой части программы. Расширены возможности пакетного менеджера, в который добавлена функциональность, упрощающая одновременную разработку нескольких пакетов (несколько пакетов одновременно могут помечаться для релиза), представлен новый Package API, позволяющий управлять настройками сборки.

Напомним, что язык Swift наследует лучшие элементы языков C и Objective-C, и предоставляет объектную модель, совместимую с Objective-C (Swift-код может смешиваться с кодом на С и Objective-C), но отличается использованием средств автоматического распределения памяти и контроля переполнения переменных и массивов, что значительно увеличивает надёжность и безопасность кода. Swift также предлагает множество современных методов программирования, таких как замыкания, обобщенное программирование, лямбда-выражения, кортежи и словарные типы, быстрые операции над коллекциями, элементы функционального программирования. Версия для Linux не привязана к Objective-C Runtime, что позволяет использовать язык в окружениях, в которых отсутствует поддержка Objective-C.

Pеализация Swift построена с задействованием технологий свободного проекта LLVM. Для обеспечения высокой производительности Swift-программы компилируются в машинный код, выполняемый в тестах Apple на 30% быстрее кода на Objective-C. Вместо сборщика мусора в Swift используются средства подсчёта ссылок на объекты. В поставку входит пакетный менеджер Swift Package Manager, предоставляющий средства для распространения модулей и пакетов с библиотеками и приложениями на языке Swift, управления зависимостями, автоматизированной загрузки, сборки и связывания компонентов.