Kernel 为没有ZeroMQ绑定的语言创建IPython的语言内核

Kernel 为没有ZeroMQ绑定的语言创建IPython的语言内核,kernel,ipython,zeromq,Kernel,Ipython,Zeromq,编写语言内核以允许从IPython执行以前不支持的语言是一件有趣的事情 在所有情况下,内核创建步骤都涉及使用目标语言的绑定(因为ZeroMQ是IPython前端到内核通信协议的主要架构组件) 在我的公司,一种专有语言是几年前创建的,并由字节码编译器(用C++编写的字节码运行程序)、Flash和JavaScript进行维护。。。它至今仍被大量使用,但从来没有像REPL这样的功能 这种语言是一种类似于Haskell或SML的函数式语言,它没有ZeroMQ绑定,也没有为语言维护人员添加任何绑定的计划

编写语言内核以允许从IPython执行以前不支持的语言是一件有趣的事情

在所有情况下,内核创建步骤都涉及使用目标语言的绑定(因为ZeroMQ是IPython前端到内核通信协议的主要架构组件)

在我的公司,一种专有语言是几年前创建的,并由字节码编译器(用C++编写的字节码运行程序)、Flash和JavaScript进行维护。。。它至今仍被大量使用,但从来没有像REPL这样的功能

这种语言是一种类似于Haskell或SML的函数式语言,它没有ZeroMQ绑定,也没有为语言维护人员添加任何绑定的计划


有没有一种方法仍然可以编写一个可以与IPython通信的内核?

如果您的语言有Python绑定,或者您可以使用类似于Pexpect的东西从Python驱动REPL,那么您可以创建一个包装内核,重用IPython通信机制


这里记录了这一点:

不幸的是,没有,但了解这一点很有用。该语言通常被编译成Javascript或Flash,用于web应用程序,但也可以通过neko编译成字节码,然后使用自定义字节码运行程序运行。如果它对任何东西都有扩展,那么它将只是Haxe,但我甚至不确定扩展的程度。目前,我正在使用一组cell magic函数来处理笔记本中单元格的后端编译,目标是.js或.swf,然后使用
display.HTML
在输出单元格中显示结果的iframe。您可以按照类似的思路构建内核,内核的“执行”实际上将代码编译成js,然后将其发送回前端真正执行。您可能无法使用诸如制表符完成之类的功能,因为内核不知道名称空间,但执行应该是可能的。