Swift 5.6 釋出

2022-03-15 11:00:23

Swift 5.6 現已正式釋出。此版本包括了對型別系統的許多增強、改進了與指標的互動,並增加了使用包管理器執行新外掛命令的能力。

 流程中的一些提案也在 Swift 5.6 中得以實現:

  •  - Unavailability Condition
  •  - Sendable@Sendableclosures
  •  - 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 編譯器標誌來啟用,從而實現並行檢查的增量遷移路徑。

更多詳情可檢視:

展開閱讀全文