Swift 5.6 現已正式釋出。此版本包括了對型別系統的許多增強、改進了與指標的互動,並增加了使用包管理器執行新外掛命令的能力。
流程中的一些提案也在 Swift 5.6 中得以實現:
- - Unavailability Condition
- -
Sendable
和@Sendable
closures - - Type placeholders(以前稱為「Placeholder types」)
enum Either<Left, Right> {
case left(Left)
case right(Right)
}
// Inferred as 'Either<ClosedRange<Int>, Range<Int>>'
let either: Either<_, Range<Int>> = .left(0...10)
- - 允許在
KeyedContainer
中對非String
/Int
鍵入的 Dictionary 進行編碼 - - 臨時未初始化的緩衝區。這引入了一種建立臨時未初始化記憶體空間的新方法,這在與需要提供用於儲存計算結果的記憶體的 C API 互動時特別有用。
- - 放寬 C 函數指標引數的診斷。此更改允許將不安全指標的可變體(例如
UnsafeMutablePointer
)傳遞給採用不可變體(例如UnsafePointer
)的API,而無需顯式轉換。 - - 從不安全的指標型別中刪除 Sendable 一致性
- - 引入了 existential any
protocol DataSourceObserver { ... }
struct DataSource {
var observers: [any DataSourceObserver] { ... }
}
- - 增量遷移到並行檢查。在 Swift 5.6 中,關於 Sendable 的診斷預設是被抑制的,但可以通過明確定義對 Sendable 的符合性或使用 -warn-concurrency 編譯器標誌來啟用,從而實現並行檢查的增量遷移路徑。
更多詳情可檢視: