波報 #34 - 我冨奸我道歉
Swift 大小事 2023/2/13 - 2023/2/19
💬 Pofat 的話
上一期大膽地預告要開副刊,結果我站哨時出事在空中飛了好幾天,直接就冨奸,非常抱歉。這件事也讓我學到一個教訓 - 以後預告不要押時間(!?)
開玩笑的,副刊「清道夫生存指南」週三早上台灣時間九時發刊,敬請期待。
🌎 On Swift Community
The Swift Programming Book 改用 DocC 發佈
除了堅定自產自銷的決心,也讓開發者更容易貢獻內容。


TCA 1.0 即將發佈
雖然 TCA 已經是 SwiftUI 中越來越常見的架構框架,不過一直都還不是正式版的狀態,如今 1.0 終於板上釘釘,也寫了一篇文讓大家預覽正式版的模樣,包含 Reduer
與 Effect
兩塊主要元件的 breaking change ,已經在使用的人務必了解如何轉移。
而最近正在熱烈討論的 navigation tool 並不會包括,不過未來會做 backward compatible ,所以大家別太擔心。


Homebrew 4.0.0
蘋果開發者們的好朋友也迎來了主要版號的更新,加速了 tap update 的速度外也準備要遷出 Google Analytcis 到自有的資料庫!


Xcode 14.3 支援顯示 preview 的 output
Preview 卻用不上 debug 最終大法 print 實在可惜,不過這些都已成歷史,新版的 Xcode 可以在 console 裡看 preview 的 output,配合除蟲必用的 _printChanges()
簡直絕殺,在 preview 就可以觀察變化了。
我覺得 preview 最大的用處之一是它可以創造一個更小的封閉環境,可以專注在一個小的區域裡找問題,省下不少力氣,現在你可以更仰賴 preview 了。


開源寒冬
這個故事值得一讀,core-js 作者專職開發開源多年,有大量使用者,但他的生活已經快過不下去,尤其是還發生了交通意外而仍求償巨額,科技業正值萎糜,原本就不理想的獨立開源工作生態圈似乎也更加惡劣了。(註:該作者對烏俄戰爭的看法比較靠近雙方都有錯誤,你可能不會接受這想法,但我認為這和開源現況與他的開發故事可以分開看待)


同時也看到 Fastlane 不再被 Google 資援的訊息,因此也一段時間沒有發版,雖然主要維護者也在這推之後釋出了新版,但這一切仍然令人沮喪。


🎉 Swift commits
[NameLookup] Type Aliases should resolve as opaque
如果你定義一個函數其回傳的值為 typealias ,而且該 typealias 又等於 protocol,應該要認定為 opaque type(即 some),這樣才合乎原本的方針,只是目前會被解讀成 existential type,這個 PR 修復了這問題,編譯時期會檢查是不是能夠滿足推導底下的型別。
[Macros] Enable global peer macros
這個 PR 有點意思,Peer Macro 的定義可以參考 SE-0389 ,懶得點進去的話只要知道這是可以幫你注入模板程式碼的新工具即可,然而這些稍後才會被展開的程式碼並不會被注入 AST 裡,而是放在輔助宣告的地方裡,需要時才取用,一如 local property wraper 與 lazy var。
最近朋友在和我分享 Kotlin 編譯加速的原理時,提到了他們裡面有個 annotation 的判斷器,利用猜測大概型別會長怎樣才加速編譯,當我們聊到 Swift 有沒有對應 annotation 的東西時是貌似沒有,不過總覺得 Macro 一系列的功能相比下更強大。
同時以前我以為全部東西都會進 AST,原來不是如此,這樣做的原因我猜測是不想增加無謂的複雜度以加速(或者說不要再拖慢 Swift 的可悲編譯速度),而這些東西行為上非常可以預期可以如此實做,不過有些 AST based 的 linter 就會在這邊完起不到作用了,可能會是 個問題。
🤪 Pofat 選推
有奇怪的東西混進去了
有 AirTag 的大家請注意
這才是電繪啊(物理?
Twitter 發長文的限制器做在 client side,讚👍
全部都用數學函數畫出來的動畫,太猛了