在 Windows 上编译 Emacs 31 的完整方法

使用 MSYS2 UCRT64,帯 Treesitter,native comp 支持,只需要绿色版 MSYS2,编译完后即可删除。

用今天拉的 develop 安完后在 547MB 。 之前冷启动时间过久的问题在几次 Windows 更新后似乎不再出现了。

相关:

10 个赞

31在win上实际使用效果怎么样?有什么改进的地方吗?

主要是 GNU FTP 上的 binary 没完整 native comp 支持

用ldd命令可以列出所有需要的dll,写脚本处理输出,执行复制就行

冷启动时间提升 有明确测试吗?

之前太明显了,冷启动超过一分钟了。当然因为完全没动过 Emacs 的情况下约两个月后消失了,再也没复现,只能归于 Windows 更新修复的。

卡这么久我倒是没遇到过 :thinking:

configure之前应该有一步是运行autogen.sh吧

和 libgccjit driver 的细节一起改了

怎么提高编译时的CPU占用呢。

编了一上午了,CPU占用率一直在20%左右。设置过-j 16也没啥用。

啥 CPU? 12 代以后大小核在 Windows 上是这样的,e 核跑死,p 核围观

家里是5800x3d,单位是9400F,都挺慢的。

编辑:关闭Windows Defender之后好了很多

哦,忘记提了,我把 MSYS2 和其他要编译的项目都装在 Dev Drive 里,默认关闭安全扫描的,emacs 的安装位置也建议关扫描

4 个赞

草,还有这个功能,去试试有没有提升

似乎可以用来制作可移动的 Emacs

开启了native compilation后,大佬们有没有测试过是否有性能提升?

实际上本身配置不够高的话,native comp 是负优化。

也不是关闭扫描,是改成异步不会卡 IO 了

Dev Drive 用的 ReFS 分区不让放在可移除的硬盘上

用 VHD 的话倒是可以,不过,我因为 Optane Memory 用的 Intel RST driver 不能在有 VHD 挂载的情形启动,特意做的 Dev Drive 分区

然后本身 ReFS 也没太大读写提升,也就多一个 Copy-on-Write 特性,主要还是 Windows Defender 设置异步扫描起的作用

1 个赞

在哪里可以设置Windows Defender 异步?

你说的是下图的功能?

是,这个默认开启的,其他细节可以看上面链接 MS 的文档

1 个赞
configure: error: The following required libraries were not found:
     tree-sitter
Maybe some development libraries/packages are missing?
To build anyway, give:
     --with-tree-sitter=ifavailable
as options to configure.

检查了下,补充安装mingw-w64-ucrt-x86_64-libtree-sitter这个包后无异常。

捉虫:源文件tree-sitter那行后面少了个\