嗨Alex,感谢你在此提供的意见。
我今天花了一些时间以新的乐观态度去研究使用AOT。我遇到的一个问题是宏是如何在编译单元之间跟踪的。
如果我编译一个使用在其他文件中定义的宏的文件,那么据我所知,我的文件被编译为一个没有方法跟踪宏依赖关系的类文件。
如果我之后修改了其他文件中的宏,Clojure运行时没有办法跟踪到这种变化(它会查看源文件和类文件的修改时间戳),当我在加载我的文件时将加载过时的类文件。
这可能会导致在本地开发中,如果我获取到另一个开发人员更改的代码时出现问题,以及在CI中,如果我试图在构建之间缓存编译的类文件时出现CI问题。
我还没有能够计算出AOT可以得到的加载时间提升,因为我遇到了一些与AOT不兼容的代码结构,我没有在可用时间内将这些重构为与您的AOT加载系统兼容。