💬 Pofat 的話
大家新年快樂。
電影院與 App 開發的聖杯 - Apple
這幾年串流發展與疫情夾擊下,電影業不復當年風光,所謂的電影院價值也逐日萎縮,而 Apple 的新影視策略無疑是老派導演們(aka 戲院圓桌武士)的救世聖杯,去年雷利史考特的《拿破崙》與馬丁史柯西斯的《花月殺手》皆是 Apple 投資的大作。差不多同時開始萎縮的還有 native mobile app 開發市場,身為打工仔的開發者應該都有些感觸,因此上週開始預購的 Apple Vision Pro 也是不少開發者的期盼,望它能讓 app 開發再次偉大,不過媒體初評測和 Apple 散射狀的情境設定(以及它的定價),我建議可以先謹慎地管理期望值。(我對於絕大多數試戴者的耳朵都被壓爛感到憂心)
決心與豪賭
1 月 19 號發行的寶可夢之息 Palworld 三天內就賣出超過四百萬份,一口氣創下同時百萬人遊玩的紀錄,超越 Cyberpunk 2077 與法環,可謂 2024 年的開局大作。正式發售三天前遊戲開發商 Pocketpair 的 CEO 表示遊戲能誕生有賴奇蹟,而他選了幾個最關鍵的來分享(原文日文,建議 ChatGPT):撿到的便利商店工讀生、初次面試沒過的工程師、寶可夢手上有槍竟然會這麼好玩!?
當然沒有一開始的決心與豪賭,這些奇蹟也不會發生。我相信有更多同樣決心與堅持卻死在沙灘上的故事沒出來發文,不過正是這些紀錄成功的文字一再地提醒我們「實現夢想的美好」,為這些圈子注入更多動力和讓更多人捲起袖子打造夢想。
當然我也祝福他們不會被任天堂法務鐵拳打倒。
🌎 On Swift Community
自製 iOS 模擬器
有位老兄在週末與咖啡時間中土炮了 iOS 模擬器,雖然實作細節沒公開,但發表了運作原理的概念,其中我覺得最有價值的是它建 Debugger 的過程,為了確認運行的正確性,他用 lldb 紀錄實機上運行的 register 與 memory 狀態來和自幹模擬器裡的比較。這些紀錄理想上很適合用來重現 bug,因為所有的機械運行狀態都可以被保存,紀錄一次就能重現無限次,Mozilla 的 rr 就是這原理,只可惜真的要在 iOS 上應用應該還是個夢。
https://twitter.com/phillipten/status/1746961140830044615
🗣️ On Swift Forum
[SE-0417] Task Executor Preference (Reviewing)
Swift Concurrency 的任務 (task)執行型態分為 isolated 以及 nonisolated,前者仰賴物件層級的元件 (即actor
)來安排執行(隔離),後者則在 global concurrent thread pool 上執行。 前陣子的 SE-0392 允許 actor 隔離執行工作時跑在自定義的 SerialExecutor
上,對於效能要求極高的專案裡非常實用,像避免 thread hops 以最大化請求處理量就是一個常見的例子。
不經 actor 隔離的任務還沒有這樣的彈性,雖然直接在 global concurrent thread pool 上執行是 Swift Concurrency 的設計初衷 (詳見 Swift 5.7 的 SE-0338),以免 MainActor
被佔用,對 app 開發來說語義也清楚。不過對 Swift 面向所有類型應用的發展方向來說,這顯然是個問題。換言之, mobile app 開發者可能用不到這功能,就享受原生的簡單預設值吧。
這個提案引入一個新的控制層來「設定」任務執行的位置,稱為 task executor preference,這個設定會跟著任務以及傳播至其衍生的子任務(如 TaskGroups) ,其影響的 API 有:
withTaskExecutorPreference
: 其範圍內的任務(async let
)都會適用帶入的設定TaskGroup
的addTask
: 每新增一個 task 都能指定設定Task
的初始化與detached
這裡的設定得透過新的 protocol TaskExecutor
,也有新的全域變數 globalConcurrentExecutor
讓你把執行位置設到預設的 global concurrent thread pool 上。
public protocol TaskExecutor: Executor {
func enqueue(_ job: consuming ExecutorJob)
func asUnownedTaskExecutor() -> UnownedTaskExecutor
}
同時它也能改寫由 actor 隔離任務的執行位置,如果在 actor 中隔離的任務有被加上 executor preference,則以 preference 為主。
另一個可能的應用方式是把任務執行位置直接設為某一個 actor上的 executor,但這個提案並不允許這樣做,現有另個改善 closure 隔離的提案探討其可能性。
🤪 Pofat 選推
微軟為 Xbox Series S/X 新增了 Cyberpunk 2077 主題動態桌布!
https://x.com/tomwarren/status/1748718485662753269
期待 Vision Pro EyeSight 開放 API 的那天
🗒️ 破費清單
Full Void : 像素風的 2D 解謎遊戲,體弱版約翰康納(掉到下水道水裡就會死)對抗天網的末日故事,氛圍營造不錯!