Dan*_*ton 17 haskell bytecode ghc
据我所知,GHC(Glorious Glasgow Haskell编译器)将Haskell编译为"Core",然后将Core编译为机器代码.将Haskell程序作为GHC Core分发是否完全可行,就像它是"字节码"一样?这样的发行会有什么好处吗?为什么或者为什么不?
ehi*_*ird 21
这不切实际; GHC Core不便携.例如,在32位机器上,64位算术被编译为Core中的外部函数调用,但在64位机器上,它使用本机机器字算法.
更重要的是,GHC实际上无法读取 Core; 它可以用几种格式打印出来,但是没有实际的代码可以读回任何这些格式.我不确定这样做是否会有任何重大障碍,但多年来一直是记录在案的情况,所以我不希望支持很快出现.
核心也非常接近Haskell; 目前尚不清楚您通过该表单分发代码会购买什么.将Haskell转换为Core所需的时间通常会少于完成链接最终程序所需的时间,因此通常不会在编译时节省太多时间.
此外,对Core进行的检查少于Haskell源代码(虽然我认为-dcore-lint可以减轻这种情况),并且有效地沙箱化很困难(有安全Haskell,但没有安全核心).当然,如果字节码的来源是可信的,则这些缺点不适用.
基本上,GHC Core是一种编译器的中间语言,而不是为此目的设计的可移植字节码格式,如Python字节码和JVM.
作为旁注,GHC 确实有GHCi使用的字节码解释器.在那里使用的字节码也是非便携式的,因此与GHC在正常操作中产生的机器代码相比,我没有任何优势可以想到.
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |