编程语言通常带有至少部分用语言本身实现的标准库。
在解释语言的情况下,明显的实现是在解释器启动时读取库源文件,但这会遇到一个混乱但持久的问题,即确保解释器知道在哪里找到这些文件四处走动。如果它们可以嵌入到解释器本身中会更清晰,因此只有一个可执行文件。
我可以通过将库源文件转换为C文字字符串来看到一种简单的方法,但我很好奇是否存在任何我忽略的陷阱或对方法的改进。
所以我的问题是,现有的解释语言将语言本身的库源文件附加到解释器上?
答案 0 :(得分:2)
字节码虚拟机经常提供这样的答案:将字节码存储在文件(* .pyc,* .rbc)中,并使用更简单的机制加载库的字节编码版本。
Smalltalks通过将标准堆转储到名为“image”的单独文件中来完成此操作。
对于单文件分发,将库文件附加到可执行文件的末尾,并包含特殊逻辑,以便解释器从其二进制文件中读取并查找这些可解释程序数据的结构,或者构建具有静态包含程序数据的解释器。