Только что вышло обновление Swift — языка программирования для macOS и iOS. По словам команды разработчиков, в версии 5.2 они уделили внимание упрощению работы с языком с точки зрения программиста: улучшили диагностику в компиляторе, автодополнение кода, надежность отладки, обработку зависимостей и инструментарий.
Разработчик Swift Джон Санделл пишет: «Общее число новых языковых функций в Swift 5.2 относительно небольшое, однако в обновление включены две новые возможности, которые могут существенно повлиять на работу Swift как функционального языка программирования в целом».
В предыдущих версиях компилятор пытался угадать точное местоположение ошибок, разбивая выражения и ища проблемы отдельно в каждой секции. В некоторых случаях это давало хорошие результаты, однако было и множество ошибок, которые таким образом обнаружить не удавалось.
Улучшения в автодополнении кода включают в себя более быстрый подбор вариантов за счет устранения ненужной проверки типов, возможность подстановки имен подразумеваемых членов для неполных литералов словарей и неполных тернарных выражений, а также более удобное отображение типов.
В этом выпуске также улучшены алгоритмы сборки. Компилятор поддерживает два режима работы — полномодульный и инкрементный, — что позволяет улучшить работу с инкрементными сборками: компилятор может использовать централизованную логику для кэширования, отложенных вычислений и отслеживания зависимостей между запросами. «В Swift 5.2 внутреннее представление объявлений в компиляторе является неизменным, и на этапе генерации кода в компиляторе может вызываться отложенное вычисление запросов, результаты которых кэшируются. Запросы более детализированы, чем старый этап проверки, поэтому устраняется ненужная работа, что увеличивает производительность. Также это позволяет улучшить корректность работы: исчезает значительное количество проблем, когда средство проверки типов не предвидело необходимость проверить то, что позже потребовалось для генерации кода», — рассказывает в своей статье Тед Кременек, член основной команды Swift и менеджер группы по языкам и средам выполнения в Apple.
Среди улучшений в отладчике — повышение универсальности LLDB при восстановлении информации о типах из отладочных данных. Команда разработки утверждает, что это даст отладчику возможность использовать больше информации о типах Swift. Среди других улучшений инструментария: обновились Swift Package Manager, SwiftSyntax и Language Server Protocol.
В дополнение к упомянутым выше улучшениям для разработчиков появилось и несколько новых возможностей, которые открывают новые способы создания понятных и удобных API.