使用 MSYS2 UCRT64,帯 Treesitter,native comp 支持,只需要绿色版 MSYS2,编译完后即可删除。
build.org
#+TITLE: Build Emacs with MSYS2
This document is an up-to-date guide on compile Emacs 31 on windows
with MSYS2, and make a installation with native compile that can work
without MSYS2.
The idea is after get a working Emacs, you may delete MSYS2
environment to save some disk space, and forget about rebuilding Emacs
until the next time you feel need to, without need figuring out
everything again.
This file has been truncated. show original
用今天拉的 develop 安完后在 547MB
。
之前冷启动时间过久的问题在几次 Windows 更新后似乎不再出现了。
相关:
在 Windows 上使用 Emacs 的同学,如果试着编译过 Emacs 的话,大部分应该都是在 MSYS2 的 Mingw64 环境下编译,此时 Emacs 会使用 MSVCRT 运行时。
如果在 UCRT64 环境(使用 UCRT 运行时)下编译,可能会在执行 make 后得到类似下面的结果:
./temacs --batch -l loadup --temacs=pbootstrap \
--bin-dest '/d/user/yy/emacs-build/bin/' --eln-dest
'/d/user/yy/emacs-build/lib/emacs/31.0.50/'
D:\user\yy\emacs-master\src\temacs.exe: Write error to standard output: No such
file or directory
MSYS2 上提供的 ucrt Emacs 包打了两个补丁: MINGW-packages/mingw-w64-emacs 。分别是 001-ucrt.patch
和 002-clang…
10 个赞
o2o
2024 年11 月 2 日 23:36
2
31在win上实际使用效果怎么样?有什么改进的地方吗?
主要是 GNU FTP 上的 binary 没完整 native comp 支持
---
** 'NSSpeechRecognitionUsageDescription' now included in "Info.plist" (macOS).
Should Emacs (or any built-in shell) invoke a process using macOS speech
recognition APIs, the relevant permission dialog is now displayed, thus
allowing Emacs users access to speech recognition utilities.
Note: Accepting this permission allows the use of system APIs, which may
send user data to Apple’s speech recognition servers.
---
** Emacs on MS-Windows now supports GUI dialogs and message boxes better.
In particular, it is now possible to show text with embedded newlines in
a dialog popped by 'message-box'. This is supported on Windows Vista
and later versions.
---
** Emacs on MS-Windows now supports drag-n-drop of text into a buffer.
This is in addition to drag-n-drop of files, that was already
supported. As on X, the user options 'dnd-scroll-margin' and
'dnd-indicate-insertion-point' can be used to customize the process.
用ldd命令可以列出所有需要的dll,写脚本处理输出,执行复制就行
之前 太明显了,冷启动超过一分钟了。当然因为完全没动过 Emacs 的情况下约两个月后消失了,再也没复现,只能归于 Windows 更新修复的。
configure之前应该有一步是运行autogen.sh吧
和 libgccjit driver 的细节一起改了
怎么提高编译时的CPU占用呢。
编了一上午了,CPU占用率一直在20%左右。设置过-j 16也没啥用。
LdBeth
2024 年11 月 4 日 03:53
11
啥 CPU? 12 代以后大小核在 Windows 上是这样的,e 核跑死,p 核围观
家里是5800x3d,单位是9400F,都挺慢的。
编辑:关闭Windows Defender之后好了很多
LdBeth
2024 年11 月 4 日 03:59
13
哦,忘记提了,我把 MSYS2 和其他要编译的项目都装在 Dev Drive 里,默认关闭安全扫描的,emacs 的安装位置也建议关扫描
Learn about the new Dev Drive storage available to improve file system performance for development scenarios using the ReFS volume format, including how to set it up, designate trust to use performance mode for Microsoft Defender Antivirus,...
4 个赞
chuck
2024 年11 月 4 日 04:30
15
开启了native compilation后,大佬们有没有测试过是否有性能提升?
LdBeth
2024 年11 月 4 日 04:39
16
实际上本身配置不够高的话,native comp 是负优化。
LdBeth:
默认关闭安全扫描的
也不是关闭扫描,是改成异步不会卡 IO 了
LdBeth
2024 年11 月 4 日 05:00
17
Dev Drive 用的 ReFS 分区不让放在可移除的硬盘上
用 VHD 的话倒是可以,不过,我因为 Optane Memory 用的 Intel RST driver 不能在有 VHD 挂载的情形启动,特意做的 Dev Drive 分区
然后本身 ReFS 也没太大读写提升,也就多一个 Copy-on-Write 特性,主要还是 Windows Defender 设置异步扫描起的作用
1 个赞
在哪里可以设置Windows Defender 异步?
你说的是下图的功能?
LdBeth
2024 年11 月 4 日 15:19
19
是,这个默认开启的,其他细节可以看上面链接 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
那行后面少了个\