|
|
1
3
JVM类文件格式允许编译器将自定义属性放入类文件中,请参阅 Section 4.7.1 Java Virtual Machine Specification . 除其他外,Scala编译器将有关名称的Scala签名的信息放入它生成的类文件中,以便在以后的编译器运行时,它可以再次读取这些信息。Java虚拟机需要忽略它们不理解的属性,所以在运行时这并没有什么区别。 我没有找到注释的二进制格式规范,但如果您想深入了解实现,我发现:
对于Scala3.0,甚至计划使用新的“tasty”格式将完整的抽象语法树(包括类型检查器生成的信息)存储在类文件中。Tasty代表“类型化抽象语法树”。基本思想是在类型检查阶段之后序列化抽象语法树,并将其放入类文件中。随后的编译器运行可以加载依赖项的完整抽象语法。这不仅允许类型检查,还允许跨模块内联和其他全局优化。 Tasty计划成为Scala抽象语法树的通用交换格式,也用于编译器和集成开发环境之间的通信以及元编程。 https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools/dotc/core/tasty 这是一个好的开始。 |