Записки разработчицы
1.89K subscribers
370 photos
23 videos
4 files
1.08K links
Разговоры об IT, о разработке. О мобилках нативных и кроссплатформенных.
Личный аккаунт @azharkova
Download Telegram
#ios #swift Пол Хадсон (twostraws) завел репозиторий для публикации новинок Swift 5.6. Будет что-то интересное:
https://github.com/twostraws/whats-new-in-swift-5-6
👍6
#swift Вышла новая версия языка Swift 5.6:
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/Int

4. 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()

}
👍4
#swift Пол Хадсон (он же twostraws) уже подготовил разбор новинок Swift 5.7:
https://www.hackingwithswift.com/articles/249/whats-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
👍3
Forwarded from iOS Broadcast (Андрей Зонов)
Потокобезопасность swift через - lock

Многие считают что 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
🔥81
#swift Вышел Swift 5.10 https://www.swift.org/blog/swift-5.10-released/. Очень большое внимание уделено доработкам по многопоточности:
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) команда для отключения проверки изоляции хранимых свойств и переменных акторов, включая статики
👍2
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
На сайте Kotlin появилось руководство по настройке публикации Kotlin/Native артефактов для Apple таргетов как Swift package manager (SPM) зависимость

#apple #swift #spm #native @kotlin_broadcast
👍1
🏝🎉 Вышел Kotlin 2.1.0

👉 Новые фичи языка (разберу отдельно в @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
🔥11