Swift System 为系统调用和底层货币类型提供了符合 Swift 语言习惯的接口。我们的愿景是使 System 成为所有受支持的 Swift 平台上底层系统接口的唯一归宿。
System 是一个多平台库,而不是一个跨平台库。它在每个受支持的平台上提供一组独立的 API 和行为,密切反映了底层的操作系统接口。只需导入一次,即可引入针对目标操作系统的原生平台接口。
我们目前的Immediate goal是简化构建跨平台库和应用程序,例如 SwiftNIO 和 SwiftPM。System 不会消除使用 #if os()
条件语句来实现跨平台抽象的必要性,但它确实使填充特定于平台的部分更加安全和更具表现力。
import SystemPackage
let message: String = "Hello, world!" + "\n"
let path: FilePath = "/tmp/log"
let fd = try FileDescriptor.open(
path, .writeOnly, options: [.append, .create], permissions: .ownerReadWrite)
try fd.closeAfter {
_ = try fd.writeAll(message.utf8)
}
要在 SwiftPM 项目中使用 SystemPackage
库,请将以下行添加到您的 Package.swift
文件中的依赖项中:
.package(url: "https://github.com/apple/swift-system", from: "1.0.0"),
最后,将 "SystemPackage"
作为可执行目标的依赖项包含在内
let package = Package(
// name, platforms, products, etc.
dependencies: [
.package(url: "https://github.com/apple/swift-system", from: "1.0.0"),
// other dependencies
],
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "SystemPackage", package: "swift-system"),
]),
// other targets
]
)
Swift System 包的源代码是稳定的。版本号遵循 语义化版本控制 -- 对公共 API 的源代码破坏性更改只能在新主版本中出现。
在贡献之前,请阅读 CONTRIBUTING.md。
有关许可证信息,请参见 LICENSE。