LWN:期待Emacs 30!
關(guān)注了就能看到更多這么棒的文章哦~
Looking ahead to Emacs 30
By Jake Edge
January 30, 2024
Gemini translation
https://lwn.net/Articles/959931/
2023 年的EmacsConf與之前的一樣,是一場網(wǎng)絡(luò)會議,討論了Emacs 編輯器的各個方面—當然,它不僅僅是一個編輯器。去年的會議是在 12 月初舉行。其中一場備受關(guān)注的演講是關(guān)于 Emacs 開發(fā),演講人為 John Wiegley,是現(xiàn)場直播。在演講中,他簡要介紹了即將推出的 Emacs 30 的一些重要新特性,這是該工具的下一個主要版本。
演講
Wiegley 的演講在 EmacsConf 上似乎已經(jīng)成為了一種年度傳統(tǒng)。他指出,他并不是 Emacs 的維護者,因此他在與長期維護者 Eli Zaretskii 交談了一個小時后收集了演講的信息。Zaretskii 告訴他,2023 年 7 月發(fā)布的 Emacs 29 有很多新特性;Wiegley 說,其中一些“相當激進”,但它已經(jīng)取得成功并受到好評。Emacs 29.2 發(fā)布在演講時迫在眉睫;它在 1 月中旬發(fā)布。他說,該計劃是在此后不久為 Emacs 30 創(chuàng)建一個新的發(fā)行分支。
Emacs 30 看起來“不如 Emacs 29 有趣”,因為重大變化會更少,但這并不意味著沒有計劃做重要改動。首先,它將支持 Android,這是 LWN 去年試用過的一個特性?!叭绻阋恢毕朐谄桨咫娔X上使用原生 Emacs”,這是 Wiegley “一直想要做的事”,它將在新版本中提供。Emacs 30 對平板電腦和筆記本電腦的觸摸屏支持也得到了很大改進。
Emacs 的“Grand Unified Debugger” (GUD) 模式將支持與LLVM 編譯器套件一起使用的LLDB 調(diào)試器。這在 macOS 上尤其有用,也是他個人比較期待的另一個特性。為了避免用其“微薄的資源”支持兩種主要的 Perl 模式,Emacs perl-mode 正在被C Perl 模式替代。
Emacs 29 的主要特性之一是可選支持Tree-sitter 解析庫,這可以提供更好、更快的語法識別和高亮顯示、代碼縮進等。Tree-sitter 將為使用 JavaScript 描述語法的語言生成解析器;輸出的是其他工具可以使用的具體語法樹(concrete syntax tree)。Emacs 29 附帶了 20 多種面向各種編程(和其他)語言的新主要模式,這些模式可以在用 Tree-sitter 構(gòu)建的 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 語法構(gòu)建并在本地系統(tǒng)中存在,以便解析語言的結(jié)構(gòu)。Wiegley 說,Tree-sitter 模式避免了使用 Emacs Lisp 和正則表達式進行語法識別,就如同現(xiàn)在所做的那樣。隨著時間的推移,越來越多的語言將得到基于 Tree-sitter 的主要模式。對于 Emacs 30,已經(jīng)添加了三種新的 Tree-sitter 模式:Lua、Elixir 和 HTML。
他提到的最后一個新特性是針對“更多可疑構(gòu)成部分”的更好的字節(jié)編譯器警告。這些包括宏主體的空值和預(yù)期出現(xiàn)表達式的位置缺少表達式等內(nèi)容;“只是些可能散布在代碼中的愚蠢做法”。新警告將“幫助你清理代碼并去除這些潛在的錯誤點”。Emacs 30 的 NEWS 文件中有一長長的列表。
Wiegley 還指出,Zaretskii 要求他提到 Stefan Kangas 已被添加為 Emacs維護者。Kangas 今年在 EmacsConf 上也發(fā)表了演講。
在演講后的問答環(huán)節(jié)中,Wiegley 討論了他最喜歡的近期特性,原生編譯名列榜首。他在 Emacs 緩沖區(qū)中使用許多不同的模式,包括Org模式、Gnus和Esh,因此原生編譯帶來了巨大的變化。它“讓用戶體驗比過去有時會經(jīng)歷的卡頓和慢速變得更接近現(xiàn)代應(yīng)用程序”。他還談到了使用機器學(xué)習(xí)工具(例如 ChatGPT,包括編寫 Emacs Lisp 代碼)、在 macOS 上對 Emacs 的支持(他是長期用戶,沒有遇到任何重大問題)、Rosetta Code等等。
其它功能
查看NEWS文件顯示,Emacs 30 中有很多其它新增功能。例如,如果構(gòu)建系統(tǒng)中提供了 libgccjit,則現(xiàn)在本機編譯將通過 Emacs 自動構(gòu)建。在 Linux 系統(tǒng)上,Emacs 現(xiàn)在將成為用于處理 org-protocol URI 的默認應(yīng)用程序;emacsclient.desktop 文件已經(jīng)更改為注冊為該協(xié)議的處理程序。X selection 請求(用于選擇和復(fù)制,也稱為復(fù)制和粘貼)""現(xiàn)在處理速度更快且是異步的"", 因此它們應(yīng)該可以在慢速網(wǎng)絡(luò)上更好地工作。
其中包含針對 Emacs 許多不同部分的新增和已更改功能,包括 Dired、Grep、網(wǎng)絡(luò)安全管理器、版本控制、編譯模式 等。=NEWS= 文件為接近 2000 行的文本,以 Org 文件格式表示,這應(yīng)該可以體現(xiàn)變更量級;另一個有趣的數(shù)據(jù)是,Zaretskii 和 Wiegley 聲稱較大得多的版本 Emacs 29 的文件長度是前者的兩倍多。
在對現(xiàn)有 jump-to-register 和 point-to-register 命令的行為進行更改引發(fā)了 冗長的辯論 后,所作的一項更改被部分取消。建議 在 2023 年 10 月更改 register-name 提示的行為。當時,討論 bug 的郵件中的參與者同意將新行為設(shè)為默認行為,但在將其合并到主分支中,便引發(fā)了投訴。正如 NEWS 文件中 所示,通過將默認值設(shè)為保留現(xiàn)有行為,同時允許其他人自定義提示行為,從而解決了這些投訴。
因此,Emacs 30 版本將成為一個集散地,其中包含此工具覆蓋的廣泛領(lǐng)域的特性、錯誤修復(fù)、用戶選項等。在最近幾個主要版本中,版本發(fā)布節(jié)奏似乎有所加快,這可以在 發(fā)布歷史記錄頁面 上看到,因此我們很可能在今年年底前看到 Emacs 30。
在這段時間內(nèi)很可能發(fā)生另一件事件,也就是下一次 EmacsConf,看起來會安排在每個日歷年的年底。2023 年的報道 描述了一次生機勃勃的會議,會議上進行了 很多有趣的演講,所有演講都可通過各種格式觀看。該報告還詳細介紹了用來 組織和主辦虛擬會議 的自由軟件工具,以及 會議嘗試的流程改進 和 會議的財務(wù)收支,所有這些會讓其他會議組織者感興趣。
正如五個月前 指出的,我是個十分努力想最大程度利用 Emacs 的相對新手,雖然我使用它很長時間了。當然,這僅僅意味著有很多機會學(xué)習(xí)新東西—事實上有太多新東西了。只要時間允許,看起來 EmacsConf 演講提供了更多類似機會。這個特別的兔子洞探索肯定是無止境的。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
