Чего ждать разработчикам от WWDC 2023?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Анна Жаркова

Ведущий мобильный разработчик

Всем привет, с вами я, Анна Жаркова, ведущий разработчик компании Usetech. 

Apple уже опубликовала анонс WWDC 2023, который пройдет 5-9 июня. А это значит, что время загадывать и угадывать, что же нового нам представят из инструментария iOS SDK.

И начнем мы со Swift 5.8, который официально вышел (ссылка). В новой версии появились доработки, связанные как с самим sdk и Swift, так и SPM, инструментом документации и SwiftSyntax. Часть новинок уже разобрал у себя Пол Хадсон, и об этом можно почитать здесь, здесь и здесь.

SDK

SE-0274: Concise magic file names - краткие псевдонимы для файлов

С помощью #file теперь можно будет включить вывод пути к исходному файлу в формате Module/<filename>.swift

// New behavior, when enabled
print(#file)
// Old behavior, when needed
print(#filePath)

SE-0362: Piecemeal adoption of upcoming language improvements — в этой фиче появляется флаг компиляции -enable-upcoming-feature X, где X — имя фичи в формате UpperCamelCaseFeatureName. Например, так мы можем брать что-то из разработки под Swift 6 для Swift 5.8.

SE-0365: Allow implicit self for weak self captures, after self is unwrapped Неявное использование self для слабых ссылок после их развертывания

class ViewController {
let button: Button
func setup() {
button.tapHandler = { [weak self] in
guard let self else { return }
dismiss()
}
}
func dismiss() { ... }
}

SE-0367: Conditional compilation for attributes условная компиляция атрибутов

#if compiler(>=9999) && COMPILATION_CONDITION
public typealias IntegerLiteralType = StaticBigInt
#else
public typealias IntegerLiteralType = UInt64
#endif

SE-0368: StaticBigInt новый тип для больших Int

SE-0369: Add CustomDebugStringConvertible conformance to AnyKeyPath — добавляет соответствие протоколу CustomDebugStringConvertible для AnyKeyPath. Это позволит отображать отладочную ссылку как \ParentTypeName.PropertyName. Сейчас этот путь отображается как KeyPath<ParentTypeName, PropertyTypeName>

SE-0370: Pointer Family Initialization Improvements and Better Buffer Slices

SE-0372: Document Sorting as Stable — касается функций сортировки в Swift. Теперь они официально отмечены как “устойчивые”. Это означает, что элементы, которые равны по значению, будут оставаться в том же порядке, в котором были в исходном массиве после сортировки.

SE-0373: Lift all limitations on variables in result builders — Снятие ограничений на переменные в теле замыкающих выражений. Ослабляет некоторые ограничения на переменные, используемые в теле замыкающих выражений, позволяя писать код, который ранее возвращал ошибку компиляции.

**SE-0374: Add sleep(for:) to Clock** — решает дисбаланс в API между интерфейсами sleep для clock и tasks. Добавленный API позволяет работать с duration, что решает проблему:

let clock: any Clock<Duration> = ContinuousClock()
// Duration-based
try await clock.sleep(for: .seconds(1))

SE-0375: Opening existential arguments to optional parameters Открытие существующих аргументов для опциональных параметров.

Исправляет проблему, связанную с использованием дженерик функций с опциональными значениями. В версии Swift 5.7 использование протоколов для вызова универсальных функций не работало с опциональными значениями, но теперь в Swift 5.8 это исправлено:

func optionalDouble<T: Numeric>(_ number: T?) -> T {
let numberToDouble = number ?? 0
return numberToDouble * 2
}
let first = 1
let second = 2.0
let third: Float = 3
let numbers: [any Numeric] = [first, second, third]
for number in numbers {
print(optionalDouble(number))
}

SE-0376: Function Back Deployment Обратное развёртывание функции

SE-0376 добавляет новый атрибут @backDeployed, который позволяет использовать новые API в более старых версиях фреймворков. Благодаря этому атрибуту код функции записывается в двоичный файл приложения и уже в рантайме в зависимости от версии iOS используется либо заранее подготовленный файл, либо нативная реализация нового API.

При этом надо понимать, что @backDeployed применяется только к функциям, методам, сабскриптам и вычисляемым свойствам.

SE-0381: DiscardingTaskGroups позволит создавать группы задач, отбрасывающие дочерние задачи сразу после их завершения вместо явного использования await.

Swift Package Manager

SE-0362: Piecemeal adoption of upcoming language improvements

SE-0378: Package Registry Authentication

Источник: https://habr.com/ru/companies/usetech/articles/731808/


Интересные статьи

Интересные статьи

Недавно Java дошла до юбилейной 20-й версии, а у нашей Java-конференции JPoint своя круглая дата: впервые она прошла 10 лет назад. Каких именно докладов о языке-юбиляре ожидать на конференции-юбиляре ...
Уважаемые Хабровчане, Ни для кого не секрет, что российские системы хранения данных несмотря на бурное развитие последние годы все ещё существенно отстают по многим функциям от зарубежных. Аэродиск ту...
2021 год подходит к концу. И сегодня хочется о том, какой фундамент он заложил на год грядущий в разрезе разработки мобильных игр и геймдева в целом — какие тенденции начали прослеживаться уже сейчас,...
Всем привет. Меня зовут Александр Наумов, и последние 5 лет я занимаюсь тестированием сайта Утконос ОНЛАЙН — руковожу группой QA.Идея написать эту статью пришла ко мне пару месяцев назад. Я возвращалс...
Как и многие мобильные разработчики, мы с нетерпением ждали презентации Flutter и теперь хотим поделиться с читателями Хабра переводом статьи Tadas Petra о том, как можно...