博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
苹果公司揭秘首批列入 Swift 源代码兼容性开源项目清单
阅读量:2492 次
发布时间:2019-05-11

本文共 3648 字,大约阅读时间需要 12 分钟。

近日,苹果公司在 上正式发布首批列入源代码兼容性开源项目的清单。源代码兼容性问题是未来 Swift 新版本的重要目标。为了实现这个目标,(苹果公司的 Swift 编译器团队)建立了一个开放社区公有的源代码测试套件,用于 Swift 自身编译器的源代码在逐渐开发过程中针对这些源代码保持回归测试兼容性。凡是列入到本测试套件的项目,均会针对 Swift 最新开发版本进行定期编译测试,以实现 Swift 持续系统集成,也为我们的 Swift 编译器程序员能够深刻理解 Swift 语言在现实应用中的兼容性要求。

首批项目清单:

验收标准

被列编入本项目的基本条件包括:

  1. 项目编译目标位 Linux / macOS 或者 iOS / tvOS / watchOS设备
  2. 使用Xcode或者SPM软件包管理器
  3. 同时支持在Linux / macOS上编译
  4. 源代码开放,使用git方式在互联网上公开
  5. 产品分支使用Swift 3.0兼容性编译
  6. 有稳定的团队长期维护项目
  7. 能够兼容最新的Xcode / swiftpm 测试版编译
  8. 而且项目功能与在编项目没有重叠(换句话说即使符合条件但如果与我们Perfect功能雷同则不会被列编)
  9. 允许使用的开源协议:
    • BSD
    • MIT
    • Apache License, version 2.0
    • Eclipse Public License
    • Mozilla Public License (MPL) 1.1
    • MPL 2.0
    • CDDL

添加项目

要将满足验收标准的项目添加到套件中,需要执行以下步骤:

  1. 确保项目在针对 Swift 3.0 GM 特定情况下成功构建;
  2. 根据创建一个提取请求,修改 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@example.com",  "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@example.com",  "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@example.com",  "compatibility": {    "3.0": {      "commit": "195cd8cde2bb717242b3081f9c367ccd0a2f0121"    }  },  "platforms": [    "Darwin"  ],  "actions": [    {      "action": "BuildXcodeProjectTarget",      "project": "project.xcodeproj",      "target": "project",      "destination": "generic/platform=iOS",      "configuration": "Release"    }  ]}

更多精彩内容,详见 Swift 官方网站:

你可能感兴趣的文章
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(三) 构建镜像
查看>>
Spring 全家桶注解一览
查看>>
JDK1.8-Stream API使用
查看>>
cant connect to local MySQL server through socket /tmp/mysql.sock (2)
查看>>
vue中的状态管理 vuex store
查看>>
Maven之阿里云镜像仓库配置
查看>>
Maven:mirror和repository 区别
查看>>
微服务网关 Spring Cloud Gateway
查看>>
SpringCloud Feign的使用方式(一)
查看>>
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>
vue中 不更新视图 四种解决方法
查看>>
MySQL 查看执行计划
查看>>
OpenGL ES 3.0(四)图元、VBO、VAO
查看>>
OpenGL ES 3.0(五)纹理
查看>>
OpenGL ES 3.0(八)实现带水印的相机预览功能
查看>>