Swift System

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)
}

SystemPackage 添加为依赖项

要在 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