💬 Pofat 的話
上禮拜論壇熱熱鬧鬧,這禮拜換社群裡有許多有趣的事情,希望大家喜歡。
🌎 On Swift Community
FaceTime 「聽」得到手語
FaceTime 在群組通話時會自動把在說話者的頭像變大以利識別,沒想到這功能竟然支援手語,太性感了吧!從 iOS 14 開始支援至今也兩年的時間了,只是我現在才知道。
Feedback Is Not Responding…
如果你對 Apple 回應 Feedback 的積極度感到失望,甚至憤怒,你並不孤單。不妨聽聽 Casey Liss 的怒吼 (從 1:15:50 起),還滿抒壓的。
TCA 再進化:ReducerProtocol
寫過 TCA 的人應該對它都會有「充滿模版程式碼」的印象,如今透過 Swift 5.7 的新功能加持而變得更簡潔了,我截幾張圖讓大家可以快速地感受一下:
原本的 state、action、envrironemtn 與 reducer
如今可以包在同一個 struct 裡,也因此獲得了 namespace 的能力
組合 (combine)reducer 也利用 partial builder 變成 DSL 的方式
Environment 的管理利用 property wrapper 變得更容易
新語法看起來很精彩,但我更佩服 TCA 的兩位作者總是能不停地利用 Swift 的新特性推進和生成各種可能性,為社群注入新面貌,實在很想感受他們在發掘和思考新事物的觀點。
ExtensionKit 解密
ExtensionKit 是 macOS Ventura 的新功能,卻異常地低調。WWDC22 沒有任何相關的 session 或 lab,只有一頁橫空出世的文件。
ExtensionKit 主要是提供一些 extension points,別人便可以寫一些程式碼讓你的 app 執行(小、小程序?) ,而這篇三部曲的文章給了很好的介紹與上手教學。
Xcode 14 Beta:燃燒吧 M1 M2
Xcode 14 Beta 4 - 6 有個 bug 會讓 simulator 不斷地飽受 PosterBoard crash 因而讓 CPU 使用率狂飆、大量電源被吸走 ,電腦也會變得很燙。
推友發現罪魁禍首是 Wallpaper 的某個 plist 不見了,加回去即可,而他的尋找方式值得學習,原來 fs_usage
可以查出某個 process 的所有檔案系統互動。
SwiftTUI
一個 SwiftUI 的開源專案,但竟然是做出一個 terminal based 的介面 !?怎麼感覺可以拿來做文字 RPG。。。
總之有 terminal 就按讚啦!
🗣️ On Swift Forum
A New Swift Parser for SwiftSyntax
Swift compiler 開始以 Swift 實作主要元件的第一步即是 SwiftSyntax ,且支援 SPM,用途是將 Swift 的程式碼轉化成語法樹。目標分成兩階段:第一是在全平台上取代現有的 C++ parser (SwiftSyntaxParser); 接著便是整入 compiler。
想開發 Swift compiler 卻又因 C++ 卻步的人別錯過這大好的機會!
全值語言
前 Apple 工程師 Dave Abrahams 最近忙著開發一個新的語言 - Val,它的核心思想直指一個大膽的問題:「如果一個語言只支援可變的值語義,會長什麼樣?」
這個實驗性的語言起源於他今年與其他學者共同發表的期刊論文,其中發展出的物件模型很有趣(比如 copy 變成一件需要顯式註明的事),他將這些特性整理成 Swift 可能可以借鑑的未來方向,當成趣味讀物也挺有意思。
GraphQL 將進入 SSWG 生態系
以 Swift 改寫 GraphQL js 的版本已進入 SSWG 的審核階段,將實作在 Swift NIO 之上以完全整合至整個 server side。這也才注意到 SSWG 的提案是有分三個不同的成熟階段,sandbox 和 incubation 都是在開發中的前兩階段,最後至少要有三個不同且規模適當的獨立使用者使用、來自至少兩個組織的貢獻者與 work group 投票才能進到 graduated 畢業。
🎉 Swift Commits
Add a Swift parser library that is written in Swift
將 SwiftParser 加入 Package.swift 的首發 PR!
Add benchmarks that measure KeyPath read and write performance
KeyPath 即將進行一系列的讀寫效能改善,處理效能的第一步當然就是先量測。順道一提我很喜歡從測試開始看不熟的 PR ,因為那是了解 PR 內容最快的方式之一,從中也能學到不少技巧。
[Sema] property wrapper missing wrappedValue check should add fixit to new line
Property wrapper 沒宣告 wrappedValue 時 compiler 的修正沒有換到行,這個修小 bug 的 小 PR 讓我學到 compiler 是如何插入修正的程式碼。
🤪 Pofat 選推
Swift Swift
原本的週末計畫,直到我開始寫這期週報
笑�
別問
最後來個 Swift 5.7 燈謎吧,請問印出的數字順序為何?