native Emacs Lisp

不会吧,native comp这个分支我都用了好几个月了,comp-eln-load-path 这两个目录就我的观察,一个是 emacs lisp,一个是 elpa。emacs lisp 应该是一次编译到 /usr/…,elpa 的应该是按需增量编译到 ~/.emacs.d/eln-cache,运行emacs时会自动启动一个 *Async-native-compile-log* buffer,我看每次更新完包后,只有少量的编译。 :thinking:

1 个赞

是的,无论是自带的还是elpa里面,emacs启动后,增量编译的都在~/.emacs.d/eln-cache。

(setq comp-speed 3)
(native-compile-async "~/.config/emacs/elpa/" <n> t)
(native-compile-async "<path/to/system/elisp/files>" <n> t)
Where <n> is the number of threads you want.

重新编译下会用到的lisp呢。 刚更新 一堆auto compiling的信息 一起编译重新编译了 就没有了

我就是不想让它编译 path/to/system/elisp/files,因为这部分构建 emacs 的时候已经编译过了……

估计跟这个类似

啊,感谢!应该就是这个原因了……

分享一个问题解决方案,如果遇到 类似 library not found

Compiling /Users/jixiuf/gccemacs/share/emacs/28.0.50/lisp/net/tramp.el.gz...
uncompressing tramp.el.gz...
uncompressing tramp.el.gz...done
ld: library not found for -lgcc_ext.10.5
libgccjit.so: error: error invoking gcc driver

可以通过在启动脚本里设置LIBRARY_PATH 的方法解决,也可以在early-init.el 内通过setenv 解决

#!/bin/bash
# 删除文件大小为0 的 eln
find ~/.emacs.d/eln-cache -type f -size -1  -exec rm -f {} \;
LIBRARY_PATH=/usr/local/opt/gcc/lib/gcc/10:/usr/local/opt/gcc/lib/gcc/10/gcc/x86_64-apple-darwin19/10.2.0 exec /Users/jixiuf/gccemacs/bin/emacs "$@"
2 个赞

大佬, 这种benchmark测试的标准是什么啊? 有哪些资料? 新手求提供一点方向。。。

搜一下各种语言的benchmark, 很多比较测试。

例如

谢谢大佬!! 但至今没个相对公认的测试方案集么? 类似NIST在安全向做的那些工作.

试着编译了 gccemacs, 在 linux 上不需要改任何代码, 就可以成功.

其实最主要的问题是 native-compile-async 函数, 会开一个新的 Emacs 进程去编译一个文件, 但是这个新进程用的是 --batch -l 参数, 是不加载用户的配置文件的 (~/.emacs.d/init.el), 所以如果自己写的配置里分多个文件, 用到自己定义的宏或者变量, 编译可能会出错.

1 个赞

看了一下,Update 12 出来了,最后一个兼容性问题也解决了,后面就是代码清理以及 issue 解决之类的问题了。不知道什么时候可以进 master 。

想问下大家 native-comp 之后, emacs-client 还可以用吗? 我这里 emacsclient -t 就变的没有反应了。

可以用。使用native-comp后,我在manjaro下emacsclient不受任何影响;在WSL1+ubuntu20.04+Windows Terminal+X410下emacsclient -t不受影响,而若加载了cnfonts,emacsclient -c启动时间会比不加载它长12s左右,但取消加载cnfonts后就依旧秒开。

多谢,我再研究一下

从 update8 左右就开始用 gccemacs 了,但是从来没遇到过 emacsclient 没办法打开的情况。

PS: 考察 kakoune 结果怎么样?

主要是习惯问题,考虑换 kak 成本是比较高的。

我重新搞了一下配置,加上 native-comp 编译之后,感觉性能确实很给力,所以我打算先用着。感觉性能上已经接近 kak 了。

也是,感觉换个编辑器,以大佬的行动力不如自己写一个。

另外大佬不用 emacs 之后恐怕 emacs rime 就没人维护了。。。

别慌,我还在用 Emacs。我这两天还写了一个新的插件呢。。。

1 个赞

看的心痒痒,但不敢尝试,不知道windows下的编译和使用是否正常?

checking for gcc_jit_context_acquire in -lgccjit... no
configure: error: elisp native compiler requested but libgccjit not found.
Please try installing libgccjit or similar package.
If you are sure you want Emacs compiled without elisp native compiler, pass
  --without-nativecomp
to configure.

libgccjit 这个包 msys2有吗?