不知道有这个功能以后是不是就不用dump了w w w
对啊,比 dump 方案感觉优雅很多,dump方案改一下要全部 dump,好麻烦。
这个改了一个库,其他库依赖这个库的macro or inline function的话,那些库也要重新编译啊。如果编译时间太长,那就不可忍受了
另外dump本质还只是改善了加载速度而已,执行速度没变
编译速度确实是个问题,所以我认为内置的库可以预编译一起发布,就跟 dump 差不多了。启动和运行速度都会有提升,第三方包安装可能要分情况。
其实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
挺奇怪的……
鉴于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
昨天已经在win10机器上编译分支 native-comp成功,今天晚上回去看看运行情况。
一定要分享下使用效果啊
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 🐞
一 二 三 言 語 𝔖 吳天夫大家 园 元 示 証明 白 記号意味 自己海外國漢本華人
Stardict 还真用过,挺不错的软件…… 这是走火入魔了啊
突然想明白,为什么emacs开发社区对通过libgccjit来加速elisp执行速度提不起兴趣:
- elisp 太老了,30多年前开发的,不是正真编程语言。如果还是在elisp 基础上进行修修改改,解决不了根源问题,不如把elisp替换掉。
- emacs社区都形成共识,替换elisp迟早事情。
- 对于用Guile替换elisp,Richard Stallman支持Guile替换elisp ,Guile也很有潜力。
但目前最大问题是缺乏用Guile替换elisp计划表,对emacs维护者是一个很大挑战,也需要很大的勇气。
以上都是个人想法,请指教。
参考:
好奇一个问题,教主现在对emacs还有多少影响力?
有点云评论家的感觉了。
什么是根源问题?
Guile Emacs已经死透了。换语言意味着40年的生态推倒重来,那真就可以直接去用VSCode了。
没说过,只是觉得Emacs如果能支持用Scheme写extension也是极好的。
你有看过emacs-devel上的讨论吗?
从11月到1月都是一大串连续讨论,不知道什么叫提不起兴趣。
对libgccjit没有兴趣,对guile就有兴趣?凭啥?凭你是Scheme?我寻思Emacs的maintainer比Guile的maintainer还勤快呢。
打打嘴炮是很容易的,把嘴炮落到实处那就是另外一回事了。另外,cairo rendering从Emacs 25就开始做,等几年后的Emacs 27才彻底完工,这个计划不过是刚开始几个月而已,泼冷水也为时尚早了。