鉴于OCaml编译器和js_of_ocaml都是用OCaml编写的,因此(对我来说)我应该能够编写一个使用以下内容的包装器似乎是合理的:
- OCaml
compilerlibs
将 OCaml 源代码编译成,例如Instruct.instruction list
(使用Bytegen.compile_implementation
),以及 - js_of_ocaml将指令列表编译成 JavaScript,从而绕过
Parse_bytecode
。
因此,我会将所有数据保存在内存中,避免写入然后读取cmo
文件。 我希望我可以将cmo
写入缓冲区并对其进行js_of_ocaml处理,但这似乎充其量效率低下。
这是现实的/以前做过吗,还是我只是想在错误的地方/方式连接两个组件?
我几乎可以肯定 http://edit.ocamlpro.com/在浏览器中在线将源代码编译为 OCaml 字节码时使用这种方法。
来源: https://github.com/pcouderc/ocp-webedit
他们说它更容易维护。
https://www.lri.fr/~conchon/TER/2012/3/js_of_ocaml.pdf
虚拟机提供了一个非常稳定的API。 因此,无需在语言的每个版本中修改编译器以支持最新功能