LWN:期待Emacs 30!
共 3335字,需浏览 7分钟
·
2024-04-10 22:40
关注了就能看到更多这么棒的文章哦~
Looking ahead to Emacs 30
By Jake Edge
January 30, 2024
Gemini translation
https://lwn.net/Articles/959931/
2023 年的EmacsConf与之前的一样,是一场网络会议,讨论了Emacs 编辑器的各个方面—当然,它不仅仅是一个编辑器。去年的会议是在 12 月初举行。其中一场备受关注的演讲是关于 Emacs 开发,演讲人为 John Wiegley,是现场直播。在演讲中,他简要介绍了即将推出的 Emacs 30 的一些重要新特性,这是该工具的下一个主要版本。
演讲
Wiegley 的演讲在 EmacsConf 上似乎已经成为了一种年度传统。他指出,他并不是 Emacs 的维护者,因此他在与长期维护者 Eli Zaretskii 交谈了一个小时后收集了演讲的信息。Zaretskii 告诉他,2023 年 7 月发布的 Emacs 29 有很多新特性;Wiegley 说,其中一些“相当激进”,但它已经取得成功并受到好评。Emacs 29.2 发布在演讲时迫在眉睫;它在 1 月中旬发布。他说,该计划是在此后不久为 Emacs 30 创建一个新的发行分支。
Emacs 30 看起来“不如 Emacs 29 有趣”,因为重大变化会更少,但这并不意味着没有计划做重要改动。首先,它将支持 Android,这是 LWN 去年试用过的一个特性。“如果你一直想在平板电脑上使用原生 Emacs”,这是 Wiegley “一直想要做的事”,它将在新版本中提供。Emacs 30 对平板电脑和笔记本电脑的触摸屏支持也得到了很大改进。
Emacs 的“Grand Unified Debugger” (GUD) 模式将支持与LLVM 编译器套件一起使用的LLDB 调试器。这在 macOS 上尤其有用,也是他个人比较期待的另一个特性。为了避免用其“微薄的资源”支持两种主要的 Perl 模式,Emacs perl-mode 正在被C Perl 模式替代。
Emacs 29 的主要特性之一是可选支持Tree-sitter 解析库,这可以提供更好、更快的语法识别和高亮显示、代码缩进等。Tree-sitter 将为使用 JavaScript 描述语法的语言生成解析器;输出的是其他工具可以使用的具体语法树(concrete syntax tree)。Emacs 29 附带了 20 多种面向各种编程(和其他)语言的新主要模式,这些模式可以在用 Tree-sitter 构建的 Emacs 里使用。许多种编程语言 (C、C++、Rust、Python、Go、Java、Ruby、…)、配置语言 (YAML、TOML、JSON) 和其他语言类型 (Bash、CSS、CMake、Dockerfile、…) 获得了新的 major mode(例如 python-ts-mode),这就是新特性的的一部分。
Tree-sitter 使用语法库(grammar libraries),这些库必须从 JavaScript 语法构建并在本地系统中存在,以便解析语言的结构。Wiegley 说,Tree-sitter 模式避免了使用 Emacs Lisp 和正则表达式进行语法识别,就如同现在所做的那样。随着时间的推移,越来越多的语言将得到基于 Tree-sitter 的主要模式。对于 Emacs 30,已经添加了三种新的 Tree-sitter 模式:Lua、Elixir 和 HTML。
他提到的最后一个新特性是针对“更多可疑构成部分”的更好的字节编译器警告。这些包括宏主体的空值和预期出现表达式的位置缺少表达式等内容;“只是些可能散布在代码中的愚蠢做法”。新警告将“帮助你清理代码并去除这些潜在的错误点”。Emacs 30 的 NEWS 文件中有一长长的列表。
Wiegley 还指出,Zaretskii 要求他提到 Stefan Kangas 已被添加为 Emacs维护者。Kangas 今年在 EmacsConf 上也发表了演讲。
在演讲后的问答环节中,Wiegley 讨论了他最喜欢的近期特性,原生编译名列榜首。他在 Emacs 缓冲区中使用许多不同的模式,包括Org模式、Gnus和Esh,因此原生编译带来了巨大的变化。它“让用户体验比过去有时会经历的卡顿和慢速变得更接近现代应用程序”。他还谈到了使用机器学习工具(例如 ChatGPT,包括编写 Emacs Lisp 代码)、在 macOS 上对 Emacs 的支持(他是长期用户,没有遇到任何重大问题)、Rosetta Code等等。
其它功能
查看NEWS文件显示,Emacs 30 中有很多其它新增功能。例如,如果构建系统中提供了 libgccjit,则现在本机编译将通过 Emacs 自动构建。在 Linux 系统上,Emacs 现在将成为用于处理 org-protocol URI 的默认应用程序;emacsclient.desktop 文件已经更改为注册为该协议的处理程序。X selection 请求(用于选择和复制,也称为复制和粘贴)""现在处理速度更快且是异步的"", 因此它们应该可以在慢速网络上更好地工作。
其中包含针对 Emacs 许多不同部分的新增和已更改功能,包括 Dired、Grep、网络安全管理器、版本控制、编译模式 等。=NEWS= 文件为接近 2000 行的文本,以 Org 文件格式表示,这应该可以体现变更量级;另一个有趣的数据是,Zaretskii 和 Wiegley 声称较大得多的版本 Emacs 29 的文件长度是前者的两倍多。
在对现有 jump-to-register
和 point-to-register
命令的行为进行更改引发了 冗长的辩论 后,所作的一项更改被部分取消。建议 在 2023 年 10 月更改 register-name 提示的行为。当时,讨论 bug 的邮件中的参与者同意将新行为设为默认行为,但在将其合并到主分支中,便引发了投诉。正如 NEWS
文件中 所示,通过将默认值设为保留现有行为,同时允许其他人自定义提示行为,从而解决了这些投诉。
因此,Emacs 30 版本将成为一个集散地,其中包含此工具覆盖的广泛领域的特性、错误修复、用户选项等。在最近几个主要版本中,版本发布节奏似乎有所加快,这可以在 发布历史记录页面 上看到,因此我们很可能在今年年底前看到 Emacs 30。
在这段时间内很可能发生另一件事件,也就是下一次 EmacsConf,看起来会安排在每个日历年的年底。2023 年的报道 描述了一次生机勃勃的会议,会议上进行了 很多有趣的演讲,所有演讲都可通过各种格式观看。该报告还详细介绍了用来 组织和主办虚拟会议 的自由软件工具,以及 会议尝试的流程改进 和 会议的财务收支,所有这些会让其他会议组织者感兴趣。
正如五个月前 指出的,我是个十分努力想最大程度利用 Emacs 的相对新手,虽然我使用它很长时间了。当然,这仅仅意味着有很多机会学习新东西—事实上有太多新东西了。只要时间允许,看起来 EmacsConf 演讲提供了更多类似机会。这个特别的兔子洞探索肯定是无止境的。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~