Emacs GC 的一些研究

偏个楼,说一下我的经验:就是做事情时刻保持大局观,抓主要矛盾。比如编程,比较好的方式是先写整体结构的函数,主要的功能,至于具体的实现,只在必须要实现的时候才去考虑这些细节。这么做到原因就像你说的,砖牛角尖,搞了好久,可能最后还发现方向完全错了。所以一定要对做的事情有整体的把握,在没有搞清整体功能之前,不要深入到细节。都是血泪的教训啊 :joy:

归根结底就是 Donald Knuth 的那句话: Premature optimization is the root of all evil.

当然有些时候,我们可能能力达不到一开始就做很好的整体的规划,只能”走一步看一步“,这时就是要从具体的问题出发,去思考抽象和关联,尽量按图索骥去探索整体。

7 个赞

对这个话题还是非常感兴趣,理论上说函数式语言还是适合 copying,不过 emacs lisp 可能没那么函数式,以及很多 object 是 long-live 的。

Java就是copy的啊。

现在已经有人在研究利用 Ravenbrook MPS 重新实现 Emacs GC 了

https://lists.gnu.org/archive/html/emacs-devel/2024-06/msg00177.html

4 个赞

emacs.git - Emacs source repository 在Ubuntu 24.04上可编译正常使用。

不过最新的代码编译报错。之前的都没问题。

G1 似乎是某种 “复合” 实现,还有一些不是 copying 的,反正 Java GC 是挺复杂

这个我是看到了,不过我还没试过他那个版本。感觉应该会比现在的 GC 好吧