巷ではApple Silicon搭載Macのスピードが異常に速い、と話題になっています。今使っているMac (iMac 21inch late 2013)は最新のmacos Big Surが降ってこないこともあり、Apple Silicon搭載のmac miniの購入を真剣に考えています。
Apple Silicon上ではDockerやVirtualboxなどの仮想環境系が全滅なのはいつかサポートされると信じるとして、肝心のCommon Lispの動作状況はどうなっているのでしょうか。なかなかまとまった情報がない中、2つの情報を見つけたので共有します。
SBCLがRosetta2の上である程度動作するようです。
what’s even more crazy, native code compilation to Intel code works at runtime…
— Rainer Joswig (@RainerJoswig) 2020年11月21日
How is that possible, with the Rosetta2 system on the M1 Mac? pic.twitter.com/MfOuxHBH6A
Intel cpu向けにコンパイルされたSBCL最新版がRosetta2の上で動いていますね。続報として関数のコンパイルや実行もできるそうです。残念ながらメモリエラーが発生すること、quicklispのロードで失敗すること、などでまだ実用には供さないそうです。
もう1つの情報は、Clozure Common Lispは苦戦している、というものです。
Rosetta vs. the INT instruction | Apple Developer Forums
Clozure Common Lispをメンテしている会社の人の投稿で、intel cpu向けのバイナリを実行してもRosetta2上でエラーが発生するがどうしたら良いか、という相談です。GCの起動などでソフトウェア割り込みを使っているが、ソフトウェア割り込み命令はサポートされていない、というエラーのようで、開発者フォーラムで相談しているようです。
ARM64版を作るにはコンパイラのバックエンドを加える必要がありそれも時間がかかる、とのことです。
この手の情報を見ているとやはりコンパイラの移植は大変だな、と思うのと同時に、Maxima on Androidで使っているECL (Embeddable Common Lisp)ならば割と簡単に動くかも、、、とも思ったりもします。
mac mini買うべきか、、、