wenno
1
最近升级到有 native-comp 的 emacs 29 (通过 emacs wiki 上提到的 secretsauce.net apt install 的:EmacsWiki: Emacs Snapshot And Debian)
然后尝试 dump, 未果:
emacs-snapshot --batch -Q --eval '(dump-emacs-portable "/home/rws/dump2")'
报错信息:
Dumping fingerprint: 64671aa9d5d9d7a5c4abd46fe6dc2164e9d39694fb117d13aec2653df9df9e98
Error: error ("Trying to dump non fixed-up eln file")
debug-early-backtrace()
debug-early(error (error "Trying to dump non fixed-up eln file"))
dump-emacs-portable("/home/rws/dump2")
command-line-1(("--eval" "(dump-emacs-portable \"/home/rws/dump2\")"))
command-line()
normal-top-level()
Trying to dump non fixed-up eln file
而没有开启 native-comp 的 emacs 28 可以 dump
dumping fingerprint: c11f362dbe2f7dbede975b693434c190f444cee8b79f36cf2d2be681bf22c049
Dump complete
Byte counts: header=80 hot=7309760 discardable=124272 cold=3292232
Reloc counts: hot=397455 discardable=4777
问题
native-comp 和 dump 是可以并存的吗?我搜到的相关信息不多,两年前 bug-gnu-emacs 邮件列表上的讨论似乎显示是不行的:bug#45103: [feature/native-comp] support re-dumping support
信息
- emacs-snapshot version:
29.0.50
- uname -a:
6.0.0-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.0.5-1 (2022-10-28) x86_64 GNU/Linux
LdBeth
3
有可能是你重新编译时没 make bootstrap
,导致编译出来文件对不上。
https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-08/msg01858.html
然后,其实 pdumper 在没开 native comp 情况下还有一堆奇怪问题没解决,比如 package-initialize 不起作用。
wenno
4
感谢,我自己也又找到了一些相关信息,似乎 pdumper 和 native comp 确实还比较难配合,那我再观望观望
感觉 native compa 越来越鸡肋了。
dump 我常用。刚开始遇到些问题,比如先前发现有的包 dump 之后会出错(例如 helm-core magit forge),load-path 也需要重新添加。不知这些问题是否依然存在。
2 个赞
LdBeth
6
native comp 之类主要是人家为了出论文做了,出了论文作者没兴趣了就只能给社区维护了。
pdumper 主要解決的是 glibc 删除 unexec 调用的问题,二次 dump 也不是作为主要特性支持的
native compile的主要作者是谁呀。 这么屌的呀。
同感!native comp 占去了我大量的编译时间,因为最近一年我都在用 Emacs master。编译时间换回来的性能提升不知道有多少。而且每次重新编译 Emacs 后,还得看那一堆烦人的 Warning 提示。
打算用回无 native-comp 的 Emacs 试试看了。
1 个赞
我用native-comp,但是实时编译被我禁止了。也就是说,只有内置lib是native compile的,也不用每次安装完了等。
3 个赞
不知道emacs 29里面有什么优化,我现在没有打开native comp好像速度还是比28 + native comp要快。
1 个赞
Emacs 29 更新了很多内容,但我也不知道具体是哪些更新提升了性能。
具体更新内容可以看 emacs/etc/NEWS
我注意到 make bootstrap
中有一步就是 dump
Emacs 只能正常 dump 一次,用第一次 dump 出来的 image 再 dump 就多少有点小问题
用户体验不好,每次更新 emacs 和包时都要编译,且提升有限。
诶, INSTALL 里面说了可以把配置放到 site-init.el 里, 在第一次就 dump 进去