其实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