蘋果公司揭祕首批列入 Swift 原始碼相容性開源專案清單
阿新 • • 發佈:2018-12-25
近日,蘋果公司在 Swift 官方網站上正式釋出首批列入原始碼相容性開源專案的清單。原始碼相容性問題是未來 Swift 新版本的重要目標。為了實現這個目標,(蘋果公司的 Swift 編譯器團隊)建立了一個開放社群公有的原始碼測試套件,用於 Swift 自身編譯器的原始碼在逐漸開發過程中針對這些原始碼保持迴歸測試相容性。凡是列入到本測試套件的專案,均會針對 Swift 最新開發版本進行定期編譯測試,以實現 Swift 持續系統整合,也為我們的 Swift 編譯器程式設計師能夠深刻理解 Swift 語言在現實應用中的相容性要求。
首批專案清單:
驗收標準
被列編入本專案的基本條件包括:
- 專案編譯目標位 Linux / macOS 或者 iOS / tvOS / watchOS裝置
- 使用Xcode或者SPM軟體包管理器
- 同時支援在Linux / macOS上編譯
- 原始碼開放,使用git方式在網際網路上公開
- 產品分支使用Swift 3.0相容性編譯
- 有穩定的團隊長期維護專案
- 能夠相容最新的Xcode / swiftpm 測試版編譯
- 而且專案功能與在編專案沒有重疊(換句話說即使符合條件但如果與我們Perfect功能雷同則不會被列編)
- 允許使用的開源協議:
- BSD
- MIT
- Apache License, version 2.0
- Eclipse Public License
- Mozilla Public License (MPL) 1.1
- MPL 2.0
- CDDL
新增專案
要將滿足驗收標準的專案新增到套件中,需要執行以下步驟:
- 確保專案在針對 Swift 3.0 GM 特定情況下成功構建;
- 根據開源相容性套件儲存庫建立一個提取請求,修改 projects.json 以包含要新增到測試套件中的專案引用。
專案索引是一個 JSON 檔案,其中包含包含 Xcode 或 Swift Package Manager 目標操作的儲存庫列表。
新增新的 Swift Package Manager 專案,案例如下:
{
"repository": "Git",
"url": "https://github.com/example/project.git",
"path": "project",
"branch": "master" ,
"maintainer": "[email protected]",
"compatibility": {
"3.0": {
"commit": "195cd8cde2bb717242b3081f9c367ccd0a2f0121"
}
},
"platforms": [
"Darwin"
],
"actions": [
{
"action": "BuildSwiftPackage",
"configuration": "release"
},
{
"action": "TestSwiftPackage"
}
]
}
commit
欄位指定提交雜湊值將儲存庫固定。它包含在一個compatibility
欄位中,該欄位指定了 Swift 的版本,該版本已知可以編譯。可以指定與 Swift 的不同版本相容的多個 commit
。
platforms
欄位指定可用於構建專案的平臺。目前可以指定 Linux 和 Darwin。
如果不支援測試,請刪除測試操作條目。
新增新的 Swift Xcode 工作區,可使用如下模板:
{
"repository": "Git",
"url": "https://github.com/example/project.git",
"path": "project",
"branch": "master",
"maintainer": "[email protected]",
"compatibility": {
"3.0": {
"commit": "195cd8cde2bb717242b3081f9c367ccd0a2f0121"
}
},
"platforms": [
"Darwin"
],
"actions": [
{
"action": "BuildXcodeWorkspaceScheme",
"workspace": "project.xcworkspace",
"scheme": "project OSX",
"destination": "platform=macOS",
"configuration": "Release"
},
{
"action": "BuildXcodeWorkspaceScheme",
"workspace": "project.xcworkspace",
"scheme": "project iOS",
"destination": "generic/platform=iOS",
"configuration": "Release"
},
{
"action": "BuildXcodeWorkspaceScheme",
"workspace": "project.xcworkspace",
"scheme": "project tvOS",
"destination": "generic/platform=tvOS",
"configuration": "Release"
},
{
"action": "BuildXcodeWorkspaceScheme",
"workspace": "project.xcworkspace",
"scheme": "project watchOS",
"destination": "generic/platform=watchOS",
"configuration": "Release"
},
{
"action": "TestXcodeWorkspaceScheme",
"workspace": "project.xcworkspace",
"scheme": "project OSX",
"destination": "platform=macOS"
},
{
"action": "TestXcodeWorkspaceScheme",
"workspace": "project.xcworkspace",
"scheme": "project iOS",
"destination": "platform=iOS Simulator,name=iPhone 7"
},
{
"action": "TestXcodeWorkspaceScheme",
"workspace": "project.xcworkspace",
"scheme": "project tvOS",
"destination": "platform=tvOS Simulator,name=Apple TV 1080p"
}
]
}
新增新的 Swift Xcode 專案,模板如下:
{
"repository": "Git",
"url": "https://github.com/example/project.git",
"path": "project",
"branch": "master",
"maintainer": "[email protected]",
"compatibility": {
"3.0": {
"commit": "195cd8cde2bb717242b3081f9c367ccd0a2f0121"
}
},
"platforms": [
"Darwin"
],
"actions": [
{
"action": "BuildXcodeProjectTarget",
"project": "project.xcodeproj",
"target": "project",
"destination": "generic/platform=iOS",
"configuration": "Release"
}
]
}