據外媒 9to5mac 報道,iOS 14.2 現已引入 JIT編譯支持。
什么是 JIT?
正如字面意思,JIT—— just in time,即時編譯。如果一個程序在它運行的時候創建并且運行了全新的代碼,而非那些最初作為這個程序的一部分保存在硬盤上的固有的代碼,即為 JIT。
說人話:JIT可以在固有代碼的基礎上生成新的代碼,并自己運行新生成的代碼。
有什么意義?
雖然蘋果沒有特意提到,但通過外媒 9to5mac 今日報道,可確認 iOS 14.2 中已引入 JIT編譯支持特性。
在此之前,網傳最廣的說法是,由于審查等敏感問題,蘋果不提供修改內存頁面的訪問權限的 API,也禁止對 POSIX 函數 mprotect()的調用,所以也無法實現 JIT。簡單來說,IOS 封禁了內存(或者堆)的可執行權限,從而從根本上干掉了 JIT的存在。
雖然蘋果一直不支持 JIT,但一些開發人員已實現通過 hack 途徑達成 JIT的特性,但這會影響 App 運行的效率并帶來玄學 bug。此外,這種漏洞在 iOS 14 中已被封殺。
而現在蘋果在 iOS 14.2 中默默推出 JIT的原因是?
不知道,但不可否認的是,這將為仿真應用(非官方 App)在 iPhone 和 iPad 上全速運行提供了可能。
正文
外媒就此采訪了開發者 Testut,她表示蘋果實際上已在 Beta 版本中加入了 JIT支持,且保留到正式版本中,雖然一句話沒有提,但這大概率是蘋果官方表態而非 bug。
借助 iOS 14.2 上的 JIT編譯支持,仿真應用現在可以在 iOS 中全速運行,而不會受到攻擊和其他損失。
“例如,JITDelta 可以模擬更強大的系統,比如?PS2,GameCube 和 Wii。如果沒有 JIT,開發者們將需要再等幾年,才能使硬件具備此功能。起初我對此表示懷疑,但現在更傾向于認為這是蘋果有意的更改。”
但是,這并不意味著用戶會在 App Store 中看到仿真應用,用戶甚至看不到任何使用 JIT的應用程序。Testut 表示,當前的實現方法僅適用于側面加載的應用,這些應用通常是通過 Xcode 和其他開發人員工具而非 App Store 安裝的。換句話說,這是供專門的開發人員調試 App 所使用的功能。
“我懷疑將 JIT限制為僅側加載的應用是其背后的意圖(而且更可能與使用 Xcode 進行調試時應用運行未簽名代碼的需求有關),但是我很想知道這種限制是否會長期存在。”
責任編輯:PSY
-
仿真
+關注
關注
50文章
4047瀏覽量
133429 -
iOS
+關注
關注
8文章
3393瀏覽量
150454 -
源代碼
+關注
關注
96文章
2944瀏覽量
66673 -
JIT
+關注
關注
0文章
7瀏覽量
9726
發布評論請先 登錄
相關推薦
評論