蘋果的程式語言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。


Advertisement

更多 iThome相關內容