[macOS翻译]Apple Silicon M1:开发者的观点

708 阅读7分钟

原文地址:steipete.com/posts/apple…

原文作者:steipete.com/

发布时间:2020年11月29日

围绕苹果新M1芯片的兴奋点无处不在。我买了一台MacBook Air 16GB M1,想看看它作为主要开发机器的可行性如何--这里是经过一周测试后的早期报告。

Xcode

Xcode在M1上运行速度很快。编译PSPDFKit PDF SDK (debug, arm64)几乎可以和苹果提供的基于英特尔的最快的MacBook Pro竞争,8:49分钟与7:31分钟。相比之下,我的Hackintosh在5分钟内就能构建出同样的文件。

对于一台无风扇的机器来说,这是多么令人印象深刻的事情,怎么说也不过分。苹果上一次试验无风扇的MacBooks是2017年的12英寸版本,它在41分钟内建立同样的项目。

我们的测试大部分都运行得很好,尽管我发现了一个针对arm64的bug,我们之前错过了,因为我们没有在CI上的实际硬件上运行我们的测试。将模拟器移动到与出货设备相同的架构将是有益的,将有助于发现更多的错误。

测试14以下的iOS是个大问题。似乎WebKit在内存分配器中崩溃,抛出EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)(苹果人:FB8920323)。性能似乎也真的很差,Xcode周期性地冻结,整个系统变得非常,以至于鼠标光标变得波涛汹涌。有些模拟器甚至在iOS 14上也会出问题,比如iPad Air(第四代)还在模拟英特尔,所以尽量避开那个。

我们非常兴奋能够将我们的CI转移到带有M1芯片的Mac Mini上,并且正在等待MacStadium发布设备,然而看来我们必须将测试限制在iOS 14上才行。按照我们目前的时间表,我们计划在2021年第三季度放弃iOS 12,在2022年第三季度放弃iOS 13,所以在我们能够完全转移到Apple Silicon之前还需要一段时间。

苹果有机会修复这些问题,然而这并不能指望--鉴于这只影响到旧版本的iOS,这个问题在某个时候会 "消失"。

Docker

我们使用Docker来自动化我们的网站和我们的Web和服务器PDF SDK的加载环境。Docker发布了一篇状态更新博文,介绍了目前的情况,承认目前无法运行,但他们正在努力。还有更多的黑客方法可以使用苹果的Hypervisor来手动运行Docker容器,然而这需要基于Arm的容器。

我预计在2021年第一季度会有一个运行基于手臂的容器的解决方案。我们必须做一些工作来添加臂式支持(已经在路线图上的东西),所以这只是一个过渡性问题。

虚拟化

为了测试我们的Windows PDF SDK,大多数人都使用VMware虚拟机与Windows 10和Visual Studio。目前没有任何Mac虚拟化解决方案支持Apple Silicon,但是VMware和Parallels都在努力。我不希望Virtualbox很快就会更新。

我预计最终我们将能够用商业工具运行基于ARM的Windows。各种概念验证已经存在。微软目前并没有销售基于ARM的Windows,所以获得授权将很有趣。

ARM-Windows可以模拟x86应用,微软正在研究x64模拟,已经在Insider builds中推出。几个月后,应该可以在M1上用Visual Studio开发和测试我们的Windows SDK,而且性能合理。

运行旧版本的macOS可能会比较麻烦。目前我们的AppKit PDF SDK支持macOS 10.14,Catalyst PDF SDK支持macOS 10.15,这两个操作系统版本都需要测试。VMWare 或 Parallels 是否包含完整的 x64 仿真层还有待观察。这可能会很慢,所以我不会指望它。

最后,16 GB RAM 并不是很多。当运行并行测试时,机器开始大量交换,性能真的会下降。在虚拟机运行时,这将是更大的问题。未来机器会提供32GB的选项来缓解这个问题。

Android Studio

IntelliJ正在努力将JetBrains Runtime移植到Apple Silicon。目前,这些应用可以通过Rosetta 2工作,然而通过Gradle构建是非常缓慢的。Gradle在运行时创建代码,这与Rosetta 2的超前翻译逻辑似乎特别不好结合。

我预计大多数问题将在2021年第一季度得到解决,然而在所有Java版本在ARM上运行良好之前,可能还需要一些时间。在循环展开和矢量化方面已经付出了很多努力,目前还不是所有的东西都能在ARM上使用。

Homebrew

Homebrew目前通过Rosetta 2工作。只要把所有的东西前缀为arch -x86_64就可以了。可以在/opt/homebrew下安装一个额外的(基于arm的)Homebrew版本,并进行混合设置,因为越来越多的软件增加了对arm的支持。

目前这并不是一个问题(性能很好),最终会在本地工作。

应用程序

大多数应用程序只是工作,Rosetta几乎不明显。较大的应用程序要承受较长的初始性能冲击(例如Microsoft Word需要20秒左右,直到所有的东西都被翻译出来),但随后这些二进制文件会被缓存,后续运行速度很快。

偶尔会有一些应用无法翻译,在启动时失败(例如BeamerGoogle Drive "备份和同步 "客户端),但这种情况很少。有些应用程序对它们在磁盘上的位置感到困惑,并要求将其移动到应用程序目录中,但实际上它只是在其他地方运行的翻译二进制文件。这些对话框中的大多数都可以忽略。有些应用程序(例如Visual Studio Code)会阻止自动更新,因为翻译后的应用程序位置是只读的。然而,在VS Code的情况下,Insider构建已经更新到ARM,只是工作。

如果在Rosetta上运行,基于电子的应用会很慢。似乎高度优化的V8 JavaScript编译器会阻止提前翻译。Electron最新的稳定版(11版)已经完全支持Apple Silicon,Slack等公司已经更新了测试版,可以原生运行。

谷歌刚刚出货了运行在ARM上的Chrome浏览器,然而它和苹果Safari的性能还是有相当大的差距,而Safari只是在苹果Silicon上飞速发展。

结语

新款M1 MacBook速度快、外观美、静音效果好,炒作绝对是有道理的。在软件方面还有很多工作要做,要迎头赶上,尤其是老款iOS模拟器的BUG问题。

这些都可以在软件上解决,目前整个行业都在努力让体验变得更好,所以到了明年,当苹果更新16英寸MacBook Pro并发布下一代M芯片系列时,应该完全可以用M1 Mac作为主力开发机。

目前,M1将是我的旅行辅助笔记本电脑,我会继续使用2,4 GHz的16英寸MacBook Pro,32 GB内存,这只是更快的机器。我将更难接受响亮的、总是开着的风扇,虽然,现在我知道很快就会有什么可能。


通过www.DeepL.com/Translator (免费版)翻译