native Emacs Lisp

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