gccemacsをdockerコンテナで試す
ビルドに時間がかかるらしいgccemacsをdockerでパパっと試す。
gccemacs
libgccjitを使ってEmacs Lispファイルをネイティブコードにコンパイルする試み
現在のバイトコンパイルに比べてかなり速くなるらしい
現在Emacsリポジトリのfeature/native-compブランチで開発されている
Emacsメンテナのレビュー後にmasterブランチにマージされる見込み
dockerイメージが作者によって公開されている
dockerコンテナで試す
Docker HubのOverviewではemacsプロセスをPID=1で実行するコマンドが書かれているが、ここではbashをPID=1で実行し、シェルからTTY環境のEmacsもしくはX環境のEmacsをそれぞれ試すコマンド例を示す
1. bashを起動
code:shell
$ docker run -ti --network host -e TERM=$TERM -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix andreacorallo/emacs-nativecomp bash
2-TTY. コンテナ内でTTY環境のEmacsを起動
code:shell
# emacs -nw
2-X-a. ホスト環境でXサーバへのローカルの接続を許可
code:shell
$ xhost local:
2-X-b.コンテナ内でX環境のEmacsを起動
code:shell
# emacs
スクリーンショット
https://scrapbox.io/files/5ff0305f552ad8001dcb6e44.png
system-configuration-featuresにNATIVE_COMPがある
デフォルトのEmacsだと速くなってるかよくわからない?
Update 13の機能を試す
Update 13のgccemacsでは型推論機能が強化されたらしい(詳しくは上のURL参照)
subr-typeプリミティブ
ネイティブコンパイル時に型推論された関数の型を返す
例1
code:lisp
;; => (function (t &optional t) t)
例2
code:lisp
;; => (function (t) boolean)