苹果发布程序语言Swift数值运算项目Numerics

苹果的程序语言Swift标准函数库团队成员Steve Canon,宣布了一项名为Swift Numerics的开源项目,内置实数与复数运算模块,提供Swift开发者构建数值运算的基础,相关的数值运算模块都会捆绑在一起,以单一Swift组件发布。

目前Swift Numerics程序代码存储库中,已经有两个一直以来被开发者强烈要求的模块,其一是提案SE-0246的功能实例实数(Real Number)模块,以及提供复数运算的复数(Complex Number)模块。SE-0246提案在Swift加入基础数学函数API,提供像是三角函数与对数等通用运算,这项提案已经被接受,但由于编译器的限制,该API还不能被加到标准函数库中,因此实数模块将以独立的模块提供API,开发者现在就已经能在项目中使用这些功能。

而复数模块则是创建在基础实数类型之上,复数在数值运算上常会用到,尤其是在进行傅立叶转换的时候,处理音频或是电路仿真时都会用到复数,Steve Canon提到,在开发者日常使用时,函数库通常会自动隐藏这些复数消息,但是当要开发相关函数库时,复数模块会是很重要的工具。

之所以不在标准函数库中提供Swift Numerics功能,而要利用组件的形式发布,Steve Canon表示,这之中存在许多考量,但是最主要的原因是,他认为,并非所有内容都应该放进标准函数库中,随着时间变迁,Swift Numerics中的部分功能可能会被放进标准函数库中,但是在默认情况,有一些模块不应该默认加入每一个项目里,应该要有一个自己专属的地方,而Swift Numerics就是这类数值运算模块的集合,就像是SwiftNIO组件是专门提供网络相关功能一样。

另外,以组件打包的好处,还包括Swift Numerics的更新将不受Swift版本发布的时间限制,可以在进入稳定版之前,先发布测试模块进行试验。

Steve Canon提到,接下来他们还会为Swift Numerics加入重要的ShapedArray协议以及支持的类型,让开发者能方便地表达多维度的同质数据,此外,也会添加支持Float16。