native Emacs Lisp

不知道有这个功能以后是不是就不用dump了w w w

对啊,比 dump 方案感觉优雅很多,dump方案改一下要全部 dump,好麻烦。

这个改了一个库,其他库依赖这个库的macro or inline function的话,那些库也要重新编译啊。如果编译时间太长,那就不可忍受了

另外dump本质还只是改善了加载速度而已,执行速度没变

编译速度确实是个问题,所以我认为内置的库可以预编译一起发布,就跟 dump 差不多了。启动和运行速度都会有提升,第三方包安装可能要分情况。

讨论其实并没有很火热。

另外,Emacs 27.1 代码开始要冻结了: Starting the Emacs 27 release cycle

其实byte-compiler也有改进空间

浅析Elisp中的compiler macro - #13,来自 LdBeth

Elisp的byte-compiler居然是用elisp写的,一共是

  • bytecomp.el 编译器,不解释,除了编译,还要处理byte-run.el里的如with-no-warnings的compiler intrinsics
  • byte-opt.el naive优化器,做一些简单的优化。比如对于pure function,如果参数全部是常量,那么这个函数会在编译期计算好。
  • cconv.el 闭包转换器,其实也会做一点优化,比如闭包不用跨函数传递的就直接用lambda lifting,而不用capture。
  • macroexp.el 宏展开器,主要是macroexpand-all,此外还提供一些编写宏相关的辅助功能,常用的大概有macroexp-let2
5 个赞

挺奇怪的……

鉴于Emacs开发者倾向多用Lisp少用C(降低维护难度、对新人友好),这个不难理解。

大概写elisp的也不会研究这么core的东西,做编译器的人直接上手更高级的理论,只有我这种闲人才有心思看。

顺带补充了下4个文件是干嘛的

又有大更新:

Another update on gccemacs, this time quite substantial.

It brings in support for: garbage collector, image dump and bootstrap plus some more.

作者nb(虽然我还没试过

现在又开始活跃讨论了,而且准备推上emacs开发仓库。

https://git.savannah.gnu.org/cgit/emacs.git/log/?h=feature/native-comp

1 个赞

昨天已经在win10机器上编译分支 native-comp成功,今天晚上回去看看运行情况。

3 个赞

一定要分享下使用效果啊

libgccjit用msys2-and-mingw64编译有问题,春节看看啥原因,不知道能否解决? 最近关注 emacs-devel 邮件,感觉到中国为啥没有 像gnu 的开源组织,感觉大牛人都在国外。

gnu有一个就够了呀。再说emacs-devel上面不乏中国人的影子。 相比国外的话国内emacs更加小众,大概是因为大量的参考资料包括emacs lisp manual都是英文写的,首先在语言关就能筛掉好多人呢。

印象最深刻的是一个叫VanL的人,签名可以说是很魔性了(如下)

 əə0@ 7 6 4 5 bit byte word 6502 memory map dma ssd intelligence io 🐞
 一 二 三 言 語 𝔖 吳天夫大家 园 元 示 証明 白 記号意味 自己海外國漢本華人

有种魔道程序员胡正的即时感啊。

1 个赞

Stardict 还真用过,挺不错的软件…… 这是走火入魔了啊

突然想明白,为什么emacs开发社区对通过libgccjit来加速elisp执行速度提不起兴趣:

  1. elisp 太老了,30多年前开发的,不是正真编程语言。如果还是在elisp 基础上进行修修改改,解决不了根源问题,不如把elisp替换掉。
  2. emacs社区都形成共识,替换elisp迟早事情。
  3. 对于用Guile替换elisp,Richard Stallman支持Guile替换elisp ,Guile也很有潜力。

但目前最大问题是缺乏用Guile替换elisp计划表,对emacs维护者是一个很大挑战,也需要很大的勇气。

以上都是个人想法,请指教。

参考:

1 个赞

好奇一个问题,教主现在对emacs还有多少影响力?

1 个赞

有点云评论家的感觉了。

什么是根源问题?

Guile Emacs已经死透了。换语言意味着40年的生态推倒重来,那真就可以直接去用VSCode了。

没说过,只是觉得Emacs如果能支持用Scheme写extension也是极好的。

你有看过emacs-devel上的讨论吗?

%E5%9B%BE%E7%89%87

%E5%9B%BE%E7%89%87

从11月到1月都是一大串连续讨论,不知道什么叫提不起兴趣。

对libgccjit没有兴趣,对guile就有兴趣?凭啥?凭你是Scheme?我寻思Emacs的maintainer比Guile的maintainer还勤快呢。

打打嘴炮是很容易的,把嘴炮落到实处那就是另外一回事了。另外,cairo rendering从Emacs 25就开始做,等几年后的Emacs 27才彻底完工,这个计划不过是刚开始几个月而已,泼冷水也为时尚早了。

8 个赞