Swift 2023 將在哪些方面創新?

【CSDN 編者按】John McCall 作為 Apple Swift 團隊的一名工程師兼語言工作組成員在最新發布的一篇部落格中介紹了 Swift 的 2023 年度項目。

作者 | John McCall 編譯 | 劉春霖

在 Swift 項目中有很多令人振奮的工作正在進行中,但卻很難對其進行跟蹤,因為它發生在許多不同的儲存庫、拉動請求和論壇執行緒中。為了讓社區更好地了解全局,核心團隊調查了整個項目的工作組和開發人員,並收集了關於他們在未來一年的重點關注的內容的資訊。

社區組織

社區組織

長期以來,Swift 一直有一個集中的結構,由核心團隊直接監督項目的許多不同領域。

核心團隊最近開始重組,以便由專門的工作組承擔更多責任:

  • 語言工作組 —— 發展語言和標準庫

  • 網站工作組 —— 管理 swift.org 上的網頁內容

  • 文件工作組 —— 組織文件工具和庫的開發

  • C++互操作性工作組 —— 孵化語言提案以提高與 C++ 的互操作性

據介紹,這些新的工作組加入了長期存在的 Swift on Server 和 Diversity 工作組,使感興趣的使用者可以更有針對性的加入專門的工作組來做出貢獻。核心團隊正在研究創建更多的工作組,包括一個致力於提高 Swift 跨平臺可用性的工作組。

核心團隊更新

核心團隊更新

Mishal Shah 將加入核心團隊。作為支持 Swift 項目的底層基礎設施的領導者和倡導者,Mishal 在一段時間以來對 Swift 項目的發展方面發揮了重要作用。

語言發展

語言工作組專注於在五個主要語言領取取得進展:

  • 併發性。完成對 Sendable 和 actors 提供的嚴格資料隔離的語言支持。計劃包括關閉一些已知的執行緒安全漏洞,例如圍繞全局變數和某些 cross-actor 調用的漏洞。它還包括增加語言特性,配備一些功能來解決因 strict isolation 而產生的可用性問題,例如允許 non-Sendable 值在受限情況下在隔離域之間移動。

  • 泛型。語言工作組打算致力於可變參數泛型語言特性工作。這是一個預計需要多年時間才能完成的重要功能,最初側重於設計核心語言模型並實現編譯器和運行時基礎架構來支持它。一個早起的里程碑將是允許元組類型在其元素符合 Equatable 等協議時有條件地符合協議。

  • 所有權:

    • 開發功能讓程式設計師明確控制記憶體中的值的所有權。包括禁止隱式複製,在上下文之間轉移所有權,及明確地「借用」數值而不復制它們。

    • 添加對 non-copyable 類型的基本支持。這將提供通過限制關鍵值的生命週期來實現高性能的新方法。這些控制將啟用處理記憶體中資料的新方法,將當前「不安全」結構的性能與 Swift 標準庫功能的安全性相結合。

  • 宏。開發宏的基礎知識,並進一步支持創建豐富的庫和 DSL。這項工作將從創建 vision document 開始,為宏能夠在 Swift 中實現什麼以及它們如何融入語言進行設計。

  • C++互操作性。

    • 編寫文件,闡述如何使 C++ API 在 Swift 中可用,反之亦然。

    • 穩定當前在 Swift 中使用 C++ 的原型互操作性特徵,包括 owned value types、trivial value types、API 模式(如外部引用類型和迭代器),及一些關於方法、指針、l-value 和 r-value 引用的一些基本問題。

    • 穩定當前用於從 C++ 使用 Swift 的原型互操作性功能,包括 Swift 值類型、引用類型和函數如何公開給 C++ 的方式。

在 Swift 的演進過程中,任何由這項工作引起的語言更改都將被視為正常的。語言工作組還專注於改進和澄清演進過程,並將發佈管理提案過程的詳細文件,以及提案作者和審稿人的指南。

此外,語言工作組正計劃為即將到來的 Swift 6 語言模式完成預期的語言修訂。Swift 會定期引入新的語言模式,以便語言可以在不破壞現有程式碼的源兼容性的情況下取得進展。

構建系統集成和改進

構建系統集成和改進

編譯器開發團隊正在努力改進編譯器與構建系統和其他自身調用的互動方式:

  • 允許構建系統與 Swift 編譯器進行更深入地集成,讓他們在構建 Swift 程序的方式上有更大的靈活性,並使構建更加穩健。這項工作包括使 Swift 編譯器向顯式模組載入的方向發展,並將模組依賴的發現和編譯分離到單獨的編譯器調用。還包括增加發現模組的連結時依賴關係的能力,允許構建系統直接調用連結器本身,而不是要求通過 Swift 編譯器來調用它。

  • 提高自動生成的 Swift 文字接口和二進位制模組基礎設施的質量,以幫助庫作者更可靠、更高效地發佈他們的 Swift API。還將增加相關的診斷方法,以培養良好的工程實踐。

  • 開發特性以實現靈活的軟體集成,使不同團隊以不同節奏開發的軟體元件在編譯時和運行時都能順利地集成。

軟體包註冊

軟體包註冊

Swift 軟體包管理器的開發重點是與社區合作,一起開始開源軟體包註冊伺服器實現的工作。目標是創建將 Swift 軟體包生態系統從基於源程式碼控制的生態系統過渡到基於註冊表的系統所需的技術元件,從而增強生態系統的安全性和可靠性。其計劃將與 Swift Package Index 等社區運行的項目合作。

實施方面的改進

實施方面的改進

編譯器開發人員正專注於實現層面的改進:

  • 開發一個用純 Swift 編寫的 Swift 解析器,其功能與當前的 C++ 實現一樣完整。這為工具開發開闢了新的方向,並將最終取代 C++ 解析器。

  • 通過將類型推理實現遷移到支持 multi-statement closure 推理的更可擴展的基礎設施,提高結果生成器的類型檢查性能。

  • 通過與類型檢查器更緊密地集成,提高程式碼補全和依賴查找的工具的可靠性,如快速幫助和跳轉到定義,尤其是在不完整或不明確的程式碼中。

  • 在某些情況下,通過消除對轉換單元的需要,在轉換函數時產生更少的程式碼,尤其是在向泛型和匯入函數時。

  • 通過解釋類型佈局的緊湊編碼而不是發出專門的函數,在複製和銷燬複雜的結構體和列舉時,生成更少的程式碼。

  • 增加 SIL 最佳化器對新的語言特性的支持,以及與 object lifetimes 和複製有關的可預測的最佳化。團隊正在設計一套新的低級 SIL 工具,以便在現有的最佳化管道中保持所有權不變。這將導致可靠的診斷和可預測的性能。

  • 在 Swift 中重寫當前的程序間 side-effect 和 escape analyses,取代當前的 C++ 實現。新的實現提供了更準確的結果,而且明顯更簡單。

文件工作組

文件工作組

新成立的文件工作組很高興能夠推動整個 Swift 生態系統為實現更好的文件體驗。在接下來的一年裡,工作組將改進工具以解決文件需求,並指導新的工作,為 Swift 項目的文件做出貢獻。

為了鼓勵 Swift 生態系統中更多、更好的文件,工作組的舉措將包括兩個方面:

  • 簡化使用 Swift-DocC 開始編寫和發佈文件的過程。其中一個目標是使開發人員無需配置額外的外掛就能生成文件。

  • 擴大 Swift-DocC 的範圍,支持多目標項目配置和長篇散文內容。對於由多個庫組成的包,支持將包作為一個整體而不是每個單獨的庫發佈文件。

  • 該工作組還將支持新開源的 《Swift 程式語言》一書的開發,目標是用新資源庫的內容取代現有的出版方式。這項工作將包括定義為 Swift 語言編寫優秀文件的準則,其長期目標是為整個 Swift 生態系統定義文件準則,類似於 API 命名準則。

網站工作組

網站工作組

新成立的網站工作組致力於從以下幾個方面改進 swift.org 網站:

  • 改進網站訪問量最大的頁面的內容,包括主頁、入門指南和下載頁面。重要的是,這些頁面的使用是直觀的,包括正確的資訊,以實現這一目標。工作組還希望提高文件的可發現性,這是網站訪問者經常尋求的另一個領域。

  • 迭代佈局設計和導航。工作組計劃推出一個視覺化設計系統的基礎,該系統可以幫助社區在特定領域做出貢獻,如 Swift on Server 指南。

  • 鼓勵更廣泛的 Swift 社區參與 swift.org 的發展,使其更容易為網站和 Swift 文件做出貢獻。

  • 鼓勵發佈社區驅動的部落格文章,簡化流程,明確此類文章的準則。

  • 繼續探索基於 Swift 的生成網站的技術。

Swift on Server Workgroup

Swift on Server工作組將繼續專注於推進 Swift 在伺服器和 Linux 上的狀態,與社區合作創建高質量的庫和工具,並提高業界的認同度。該工作組重點在以下幾個方面:

  • 推動整個伺服器生態系統全面採用 Swift 併發模型,將 async/await API 作為面向使用者的 API 的標準。

  • 推動高級伺服器端功能的標準化,包括跟蹤、中介軟體、HTTP 通用類型和基本路由/HTTP 伺服器類型。

  • 提高對如何使用 SwiftPM 外掛來提高伺服器用例的工具狀態的認識,包括部署到雲平臺。

  • 增加 Swift 項目官方支持的所有平臺的工具鏈、庫和工具的覆蓋率和一致性。

  • 擴大 swift.org 上提供的針對伺服器的指南。

  • 在流行的行業工具(如 Dependabot、GitHub Security Advisory DB 等)中提升對 Swift 的支持。

差異化的 Swift

差異化的 Swift

將繼續支持 AI/ML 應用與差異化 Swift 的工作,重點是以下幾點改進:

  • 通過修復可區分的 Swift 中影響生產應用程序的問題來提高健壯性。隨著時間的推移,觀察到的這些問題越來越少,但是在問題跟蹤器中仍然有一些已知的問題(許多與簡單的複製程序有關)。

  • 使用差異化的 Swift 顯著提高編譯程式碼的性能。一個例子涉及編譯器生成的通過 Swift 函數的「向後傳遞」。原則上,這個傳遞的執行速度應該與該函數的原始(「向前」)版本差不多。目前,在許多情況下,向後傳遞的速度要慢上幾個數量級;在接下來的一年裡,工作人員計劃進行一些最佳化,這些最佳化應該會大大加快向後傳遞的速度。

  • 實現對 KeyPath 的性能改進。雖然嚴格上來說不是差異化的 Swift 的一部分,但在最佳化強類型模型進行自省時,關鍵路徑變得非常重要。作為第一步,需要努力向編譯器套件添加一組強大的關鍵路徑基準。

語言的變化要會經歷一個演變的過程,所以要關注你感興趣的工作的討論探索、主題和提案審查。

更多詳情可查看:https://www.swift.org/blog/focus-areas-2023/

相關文章

CNNVD 通報微軟多個安全漏洞

CNNVD 通報微軟多個安全漏洞

近日,CNNVD(國家資訊安全漏洞庫)正式通報微軟多個安全漏洞,其中微軟產品本身漏洞77個,影響到微軟產品的其他廠商漏洞8個。包括Micro...

CNNVD通報Oracle多個安全漏洞

CNNVD通報Oracle多個安全漏洞

近日,CNNVD通報Oracle多個安全漏洞,其中Oracle產品本身漏洞60個,影響到Oracle產品的其他廠商漏洞247個。包括Orac...

維他命每日安全簡訊(2023.06.25)

維他命每日安全簡訊(2023.06.25)

1、Pilot Credentials被黑洩露美國航空和西南航空部分資訊 據媒體6月24日報道,全球最大的兩家航空公司美國航空和西南航空披露...