Одновременно с Xcode 16 в этом году ожидается серьезное обновление языка Swift до версии 6
На официальном сайте уже какое-то время можно загрузить промежуточный снапшот для версии Swift 6.0 для Xcode (MacOS), Linux и Windows.
Одним из самых серьезных изменений многие считают включение Structure Concurrency Checking в режим полной проверки. Structural Concurrecy — это такой новый механизм для безопасного доступа к shared state из разных частей кода. Поддержка concurrency была в Swift и раньше, но была менее удобной по разным причинам, основной из которых являлась необходимость разработчику самостоятельно отменять все запущенные асинхронные задачи, если они больше не нужны. Сообществу пришлось что-то выдумать свое. Например, использовать механизмы наподобие promises (которые могут быть кому-то знакомы по миру JavaScript). Однако, все они не были частью стандартной библиотеки.
Со Structured Concurrency в Swift добавляется стандартный механизм, который делает код проще в обслуживании и легче в понимании. С помощью async-функций и ключевого слова await появляется возможность перехватывать ошибки также просто как и в синхронном коде. Также можно теперь делать for-await-in loop по последовательности с асинхронными элементами и много других интересных штук. Ну и наконец пропадает необходимость самостоятельно отлавливать и отменять ненужные более асинхронные задачи. Если функция вернула результат не дожидаясь ответа от async-задач, то все они будут автоматически отменены.
Конечно включение полной проверки на поддержку Structural Concurrency добавит работы разработчикам на первых порах, нужно будет привести в соответствие кодовую базу. Но это важный шаг в развитии языка, который добавит стабильности в приложения.
Больше примеров использования Structural Concurrency в Swift можно найти в этой статье
Post #169
468

- 🔥 3