native Emacs Lisp

我感觉比原来编译慢,comp-speed = 0,可能多了几个lisp文件编译成eln。

前几天在windows上编译emacs.exe是ok,但是有几个和tramp相关的lisp文件编译报错,导致dired-mode报错。又切到master分支测试了,编译ok。。。就没再切到native-comp分支。

编译时候加了 NATIVE_FAST_BOOT=1?去掉之后如果还有权限问题,可以用 root 把/usr/share/emacs/28.0.50/lisp/里的 el 文件都编译成 eln.

我在 Macbook Pro 2013 上编译master需要11分钟。完全编译 native compile 分支需要40分钟,如果启用NATIVE_FAST_BOOT=1选项,编译只需要21分钟。编译时间完全可以接受了。

我完整编译了Emacs。所以Emacs内置的el应该在编译安装的时候就已经全部编译成了eln。电脑太烂,完整编译elpa里面的el很花时间,所以为了省时间我开了延迟编译。这样的话不知道为什么Emacs还是会编译Emacs内置的el。这样的话就有了权限问题。这还好办,可以按你说的单独用sudo开Emacs去编译。

可是麻烦事是总是会报错“failed to provide feature”或者“Symbol’s function definition is void”。前面这类错误不知道原因,后面这类错误似乎和dynamic binding有关系。挺烦的。不知道我那里搞错了。

多谢。我自己也试过了。差距比你的结果大很多。看样子还是我电脑太烂了。 :joy:

我编译的版本出了很多问题。主要是下面这几类。

  • failed to provide feature
  • byte-code: symbol’s function definition is void:
  • Symbol’s value as variable is void:
  • failed to define function
  • void-variable *

我完整编译了emacs。elpa里面的包打开延迟编译,让它们慢慢编。后来被弄烦了,就花时间把elpa里面的包都编译了。可还是出现上面这些问题。不知道问题出在哪里?会不会是动态作用域的问题?eln不是处理不了动态作用域的问题嘛。

我用的是spacemacs develop branch,archlinux on wsl

我这里会有少数包出现错误 can’t native compile a non lexical scoped function导致无法编译,例如yasnippettree-modecdlatex。没有WSL环境来测试,所以不清楚你遇到的是什么问题。

你遇到的应该就是作者下面要解决的问题。

我遇到的问题基本上把我常用的功能都破坏掉了,而且这些问题还不能稳定复现。真是头疼。

现在没用native comp版本,没法协助解答。

Do you know something about the issues above? @akrl

好的。多谢回复。那我就先不折腾了。老老实实地用我的emacs27吧。

在linux上用Emacs已经很快了

“These requirements led to the choice of a Lisp dialect as Emacs’s language inthe first place, specifically its simplicity and dynamic nature: Loading additional Emacs packages or changingthe ones in place occurs frequently, and having to restart the editor in order to re-compile or re-link the codewould be unacceptable.”

Evolution of Emacs Lisp Stefan Monnier

嗯。不折腾了,不折腾了。不划算。

linux上什么都不改就能直接编译通过。

编译通过是一回事。正常运行是另一会事啊。

最新的emacs native-comp分支在centos 7.2上顺利编译通过,运行非常稳定。如org-mode,python + lsp-mode/evil/helm/swiper。

我在archlinux on wsl 1上面就是不行。也许又是wsl1的问题吧。暂时不折腾了。

大佬,你图形界面怎么解决的,我编译处理没有图形界面? ps: macos系统

Hi @cireu ,

is quite difficult to understand from here, also using google translator does not help :slight_smile:

I’ve never tried WSL and is the first time somebody report an attempt (that I’m aware of al least). It looks like some very fundamental/basic problem (maybe of the libgccjit instance), it should definitely be broken down in a bug report if of interest.

Regarding deferred compilation, the triggering mechanism is going to be radically changed and simplified once I merge dynamic scope support. Hopefully I manage to merge this last this weekend.

Ciao!

Andrea

6 个赞

Thanks for your help!