今年6月,苹果工程师推出了Swift System,一个为其用于底层系统调用接口的新库。而现在,苹果开源Swift系统,并增加了Linux支持。
Swift系统背后的想法是为所有支持Swift平台的底层系统接口提供一站式解决方案。那么让我们来看看它的新功能:
保留导入的C接口
我们现在使用的大多数操作系统都支持使用C语言编写的某种类型的系统接口,并且数十年来一直保持不变。这些API可以直接从Swift中使用,但是从C导入的此类弱类型系统接口容易出错并且难以管理。
例如,在类似UNIX的操作系统(例如Linux和Apple的OS)中,弱类型函数有几个缺点,它们无法利用Swift所具有的表现力和类型安全性。
引入常态Swift接口
Swift System模块引入了几种语言功能,以提高表达能力并减少机会错误。例如System,使用FileDescriptor命名空间中的默认参数将开放系统调用定义为静态函数:
在将此版本与C中的原始版本进行比较时,您可以发现明显的差异,例如:
System
使用原始的可表示结构和选项集。这样的强类型有助于在编译时识别错误,并且更容易在较弱的C类型之间进行转换。- 使用标准语言机制会引发错误,并且不会遗漏任何错误。
FilePath
是一个受管理的,以null终止的字节袋,它符合ExpressibleByStringLiteral
–比使用UnsafePointer<CChar>
更加安全。
重要的是要注意,System
它不是跨平台的,而是多平台的库。它在每个受支持的平台上提供一组单独的API和行为,这些API和行为紧密反映了底层OS接口。