💬 Pofat 的話
今年冬天真的有感,如果覺得太冷不想寫程式的話,最近可以看的資訊非常多,Evolution Pitch 在假期前傾巢而出, LLVM 十一月大會的影片也全數釋出,本期都有介紹,讓大家在 2022 的尾巴慢慢享用。
🌎 On Swift Community
Implementing Language Support for ABI-Stable Software Evolution in Swift and LLVM
上個月初的 2022 LLVM Developer Meeting 中,身為 Swift 開發者不可錯過的一場, 實在飽滿精彩!Swift 核心成員 Doug Gregor 從語言面來探討為何要 ABI,挑戰為何與其中做了哪些取捨,聖誕節要是沒約的話,別人看 Love Actually 你可以看這部 LLVM & ABI。
對於其它影片有興趣的這裡請:
官網的整理還有附上投影片連結 。
Epic Games 也搞程式語言啦 - Verse
Verse 是個宣告式、可組合函數的函數式語言,由 Epic Games 贊助產出。
是的你沒看錯,就是跟 Apple 在法院大戰數回合的那間遊戲公司。
語言目標看起來野心勃勃,既然是個函數式語言,目標自然是安全可靠,其中也對型別使用了不同以往的實踐方式,有趣但感覺入門門檻還是有的。
Context SDK
Felix Krause 最新力作,會在適合的時機幫 App 推銷 in-app purchase 的聰明 SDK。
🗣️ On Swift Forum
SE-0381: discardResults for TaskGroups (Reviewing)
TaskGroup
方便群組多個非同步工作,也能夠從子工作中取得回傳值,不過為了保存最後的執行結果,現在的整個子工作都會被保存下來,直到呼叫了如 next()
這種會消化的 API 才清掉,如此一來有可能工作都沒被清掉而 leak。這個提案會在建立 TaskGroup 時新增一個參數 - discardResult
。
預設值是 false,以保持和原本行為一致,但若設為 true 則工作結束後就會自動清理,從 next()
也只能拿到 nil,不過使用上更簡潔,畢竟大多時候你可能都不在意子工作回傳了什麼。
[Pitch] Custom Metadata Attributes
XCTest 是利用 ObjC runtime 的特性查出有幾個 測項(方法),只要把方法名稱以 test 開頭即會自動被偵測為 test case,這點我是知道的,但看了這個提案我才知道非 Apple 平台 SPM (最常使用 XCTest 的場合)會在編譯時找出測項以及定位,再把這清單傳給 XCTest 去執行。
這點也顯示出了 framework 能察覺註冊程式碼的需求是普遍的,所以這個提案則提出自定義 Metadata 的方式。用 @runtimeMetadata
來標記一個 struct ,然後再想要帶額外 metadata 的變數、方法前冠上這個新標記,用起來有點像 property wrapper。
然後你便可以用 Reflect 等 runtime 工具取得這些資訊,是個很強大的提案,用途也很廣有很多想像空間,(比如 decode 時一些額外資訊可以從這裡給),不過也因如此讓人有些顧慮,我希望能再看到更多實際用例探討。
一個可能的實例是大家常用的 Protocol 切分 module 法,主 module 以 Protocol 宣告介面,子 module 實作,但這些東西仰賴手動接起,人會除錯也會犯錯,如果用這個方法能做到就要全部的 instance ,然後依執行環境加上自定義的 metadata 來自動決定要用哪一個 instance ,很炫但 debug 時可能會想哭。
[Pitch] Observation
Swift 自己的觀察者模式實踐,目前常見的 KVO 與 ObservableObject ,前者需要 NSObject 而後者仰賴 Combine。
這個提案提出了 Observable
的 Protocol,遵循它的型別則俱備被觀察值變化的能力,可以加入觀察者也有露出一個介面直接可以收到變化的值以做最簡單的綁定使用。
A vision for using Swift from C++
為了讓更多人寫 Swift,這篇願景文件指出了在 Cpp 裡使用 Swift 的未來,我比較關注的是效能方面,這裡的想法自然是盡可能地不要不同語言間物件的轉換,這些成本通常都不算太低(看看 Swfit,Foundation 和 CoreFoundation),一些增加易用性的基本型別會直接轉換,不過這裡也不涉及真正的「型別轉換」,底下都是使用相同的 LLVM 型別以利內神通外鬼(?),比如 Swfit 的 Float
與 C++ 的 float。
🤪 Pofat 選推
沒有 Steam Deck 要不要考慮買 Tesla?
又到每週的數學之美時間,但這是 UFO 吧?
掰掰 AppCode,這下大家都逃不出 Xcode 的魔掌了🌚
有玩家發現太空戰士七核心危機重聚裡的畫,上面有 Getty Images 的浮水印⋯⋯
(原圖在此)