#ios #swift Пол Хадсон (twostraws) завел репозиторий для публикации новинок Swift 5.6. Будет что-то интересное:
https://github.com/twostraws/whats-new-in-swift-5-6
https://github.com/twostraws/whats-new-in-swift-5-6
GitHub
GitHub - twostraws/whats-new-in-swift-5-6
Contribute to twostraws/whats-new-in-swift-5-6 development by creating an account on GitHub.
👍6
#swift Вышла новая версия языка Swift 5.6:
https://www.swift.org/blog/swift-5.6-released/
Довольно много интересных новшеств, из которых особенно хочется выделить следующие:
1. Existential
Новая конструкция позволит довольно удобным образом указывать условие соответствие протоколу, которое будет работать для любого типа на его основе:
2.
Протокол Sendable появился в Swift 5.5 для обозначения конструкций, которые можно спокойно шарить между потоками. Раньше мы могли использовать только с классами. Теперь
3. SE-0320 - Allow coding of non
Протокол
4.
Теперь можно использовать плейсхолдеры типа:
let
Это позволит компилятору определить верно часть типа, а не подставить его жестко и полностью.
5. SE-0290 - Unavailability Condition
Обратное условие #available для выполнения кода при соответствии версии iOS:
https://www.swift.org/blog/swift-5.6-released/
Довольно много интересных новшеств, из которых особенно хочется выделить следующие:
1. Existential
any
(SE-0335)Новая конструкция позволит довольно удобным образом указывать условие соответствие протоколу, которое будет работать для любого типа на его основе:
protocol DataSourceObserver {
... }
struct DataSource {
var observers: [any DataSourceObserver] {
... }
2.
Sendable
and @Sendable
closures (SE-0302)Протокол Sendable появился в Swift 5.5 для обозначения конструкций, которые можно спокойно шарить между потоками. Раньше мы могли использовать только с классами. Теперь
@Sendable
позволит нам использовать с замыканиями:actor MyContactList {
func filteredElements(_ fn: @Sendable (ContactElement) -> Bool) async -> [ContactElement] { … }
}
3. SE-0320 - Allow coding of non
String
/ Int
keyed Dictionary
into a KeyedContainer
Протокол
CodingKeyRepresentable
позволит создать enum ключей CodingKeys для кодирования/декодирования ключей не только типов String/Int4.
Type Placeholders (SE-0315)Теперь можно использовать плейсхолдеры типа:
let
score1 = 5
let score2: Int = 5
let score3:
_ = 5
Это позволит компилятору определить верно часть типа, а не подставить его жестко и полностью.
5. SE-0290 - Unavailability Condition
Обратное условие #available для выполнения кода при соответствии версии iOS:
guard #available(iOS 13, *) else {
loadMainWindow()
return
}
if #unavailable(iOS 13, *) {
loadMainWindow()
}
Swift.org
Swift 5.6 Released!
Swift 5.6 is now officially released!
👍4
#swift Пол Хадсон (он же twostraws) уже подготовил разбор новинок Swift 5.7:
https://www.hackingwithswift.com/articles/249/whats-new-in-swift-5-7
https://www.hackingwithswift.com/articles/249/whats-new-in-swift-5-7
Hacking with Swift
What’s new in Swift 5.7
Or as I’ve started calling it, what isn’t new in Swift 5.7?
🔥3
Forwarded from iOS Broadcast (Андрей Зонов)
Observation все еще в стадии активного Review
Это значит что он может не войти в финальный релиз Swift 5.9 который поставляется с Xcode 15. Хочется верить что мы получим в сентябре SwiftData и Observation, так как они тесно связаны.
Что интересного можно узнать из proposal:
👉 Combine ObservableObject и Kotlin Observable являются референсами для нового фреймворка
👉 Мотивация: в Swift уже есть несколько подходов для обзервинга, KVO, ObservableObject но для развития языка нужен новый подход без NSObject и Combine
👉 Изначально ревью должно было завершиться 24 апреля, но 30 мая решили таки внести изменения и продлить до 12 июня. Все еще в ревью 😉
#swift #proposal
Это значит что он может не войти в финальный релиз Swift 5.9 который поставляется с Xcode 15. Хочется верить что мы получим в сентябре SwiftData и Observation, так как они тесно связаны.
Что интересного можно узнать из proposal:
👉 Combine ObservableObject и Kotlin Observable являются референсами для нового фреймворка
👉 Мотивация: в Swift уже есть несколько подходов для обзервинга, KVO, ObservableObject но для развития языка нужен новый подход без NSObject и Combine
👉 Изначально ревью должно было завершиться 24 апреля, но 30 мая решили таки внести изменения и продлить до 12 июня. Все еще в ревью 😉
#swift #proposal
👍3
Forwarded from iOS Broadcast (Андрей Зонов)
Потокобезопасность swift через - lock
Многие считают что Swift Concurrency это наше все и чтобы достичь потокобезопасности нужно использовать акторы. Это правильный ход мышления, но не всегда применимый. Для кейсов где Structured concurrency не подходит Apple добавили в iOS 16 OSAllocatedUnfairLock.
В приведенной статье автор приводить пример использования OSAllocatedUnfairLock и NSRecursiveLock в разрезе классической задачи хранилища в UDF
#swift #concurrency
Многие считают что Swift Concurrency это наше все и чтобы достичь потокобезопасности нужно использовать акторы. Это правильный ход мышления, но не всегда применимый. Для кейсов где Structured concurrency не подходит Apple добавили в iOS 16 OSAllocatedUnfairLock.
В приведенной статье автор приводить пример использования OSAllocatedUnfairLock и NSRecursiveLock в разрезе классической задачи хранилища в UDF
#swift #concurrency
#swift Apple обновили и собрали в одном месте туториалы по разработке на Swift:
https://developer.apple.com/tutorials/develop-in-swift-tutorials
https://developer.apple.com/tutorials/develop-in-swift-tutorials
🔥8❤1
#swift Вышел Swift 5.10 https://www.swift.org/blog/swift-5.10-released/. Очень большое внимание уделено доработкам по многопоточности:
1. Поддержка полной диагностики корректности реализации работы с concurrency через сборку с флагом -strict-concurrency=complete
Например, этот фрагмент кода в Swift 5.9 будет считаться корректным, хотя и содержит нарушения доступа к ресурсу (data races)
Для Swift 5.10 проблема будет обозначена:
Конкретную ситуацию можно исправить разными способами:
- сделать обращение к MyModel.shared через await
- сделать MyModel.init и MyModel.shared неизолированными, весь код, которому нужен актор, перенести в изолированный метод
- изолировать useShared в @MainActor
2 Новая nonisolated(unsafe) команда для отключения проверки изоляции хранимых свойств и переменных акторов, включая статики
1. Поддержка полной диагностики корректности реализации работы с concurrency через сборку с флагом -strict-concurrency=complete
Например, этот фрагмент кода в Swift 5.9 будет считаться корректным, хотя и содержит нарушения доступа к ресурсу (data races)
@MainActor
class MyModel {
private init() {
MainActor.assertIsolated()
}
static let shared = MyModel()
}
func useShared() async {
let model = MyModel.shared
}
await useShared()
Для Swift 5.10 проблема будет обозначена:
warning: expression is 'async' but is not marked with 'await'
let model = MyModel.shared
^~~~~~~~~~~~~~
await
Конкретную ситуацию можно исправить разными способами:
- сделать обращение к MyModel.shared через await
- сделать MyModel.init и MyModel.shared неизолированными, весь код, которому нужен актор, перенести в изолированный метод
- изолировать useShared в @MainActor
2 Новая nonisolated(unsafe) команда для отключения проверки изоляции хранимых свойств и переменных акторов, включая статики
Swift.org
Swift 5.10 Released
Swift was designed to be safe by default, preventing entire categories of programming mistakes at compile time. Sources of undefined behavior in C-based languages, such as using variables before they’re initialized or a use-after-free, are defined away in…
👍2
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
На сайте Kotlin появилось руководство по настройке публикации Kotlin/Native артефактов для Apple таргетов как Swift package manager (SPM) зависимость
#apple #swift #spm #native @kotlin_broadcast
#apple #swift #spm #native @kotlin_broadcast
👍1
Forwarded from Kotlin Multiplatform Broadcast
👉 Новые фичи языка (разберу отдельно в @kotlin_broadcast, но ничего такого)
👉 Улучшения K2 компилятора, что также повлияло и на kapt (который deprecated)
👉 KMP Базовая поддержка Swift Export, стабильный Gradle для опций компилятора и много чего ещё
👉 В Kotlin/Native улучшили поддержку iosArm64
👉 Поддержка новых версий Gradle и Android Gradle Plugin
Ждем багфиксы в 2.1.10 и потом обновляемся. За разборами с большими подробностями идите в @kotlin_broadcast
#kotlin #gradle #k2 #kmp #swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
💻 Apple выпустила новое расширение Swift для VS Code
В блоге Swift-разработчиков рассказали о релизе нового расширения Visual Studio Code для работы с кодом на Swift. Компания хочет предоставить пользователям всех платформ одинаково удобные инструменты.
Apple продолжает реализовывать планы по трансформации Swift в язык программирования для кроссплатформенной разработки. Новое расширение для VS Code предназначено для разработчиков серверных приложений, прошивок для IoT-устройств, приложений для Linux и Windows.
👉 Подробнее в статье
#новость #ios #swift
В блоге Swift-разработчиков рассказали о релизе нового расширения Visual Studio Code для работы с кодом на Swift. Компания хочет предоставить пользователям всех платформ одинаково удобные инструменты.
Apple продолжает реализовывать планы по трансформации Swift в язык программирования для кроссплатформенной разработки. Новое расширение для VS Code предназначено для разработчиков серверных приложений, прошивок для IoT-устройств, приложений для Linux и Windows.
👉 Подробнее в статье
#новость #ios #swift
🔥11