IT之家11月7日消息 据外媒 9to5mac 报道,iOS 14.2 现已引入 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 中已被封杀。
不知道,但不可否认的是,这将为仿真应用(非官方 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 进行调试时应用运行未签名代码的需求有关),但是我很想知道这种限制是否会长期存在。”
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。