编译器优化通常有两种思路:借用现成的,或者从头造一个。jank选择了后者——这个Clojure方言现在有了自己的定制中间表示层(IR),目标直指JVM级别的性能。
什么是中间表示层?简单说,它是编译器在源代码和机器码之间插入的一个"翻译层"。LLVM IR、JVM字节码都属于这一类。好处很明显:一次优化,多平台受益;抽象层级够高,优化空间更大。
![]()
但jank的维护者发现,LLVM IR对Clojure来说太低层了。它不理解Clojure的变量(vars)、持久化数据结构、惰性序列这些核心概念。Clojure的动态特性依赖大量多态和间接寻址,而这些在LLVM眼里只是一堆难以优化的指针操作。
![]()
过去两个月,jank团队着手改变这一局面。新的IR完全按Clojure语义设计,比JVM字节码还要高层。由于jank不是通用虚拟机,这个IR无需兼顾其他语言,可以专门为jank的优化需求量身定制。
![]()
据维护者介绍,这是首个走到这一步的Clojure方言。目前IR的详细文档已发布,但稳定性承诺尚未给出——显然还在快速迭代期。真正的性能数据,可能要等后续优化落地后才能看到。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.