【问题标题】:Create language kernels for IPython for a language without ZeroMQ bindings为没有 ZeroMQ 绑定的语言创建 IPython 语言内核
【发布时间】:2015-02-25 06:50:15
【问题描述】:

some 有趣的 descriptions 编写语言内核以允许从 IPython 执行以前不受 IPython 支持的语言。

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

在我的公司中,几年前创建了一种专有语言,并使用字节码(使用 C++ 编写的字节码运行程序)、Flash 和 JavaScript 的编译器进行维护......它今天仍然被大量使用,但从未有过任何类似于 REPL 的东西。

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

有没有办法仍然编写可以与 IPython 通信的内核?

【问题讨论】:

    标签: kernel ipython zeromq


    【解决方案1】:

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

    这在此处记录:http://ipython.org/ipython-doc/dev/development/wrapperkernels.html

    【讨论】:

    • 不幸的是它没有,但知道这一点很有用。有问题的语言通常被编译为 Javascript 或 Flash 用于 Web 应用程序,但也可以通过 neko 编译为字节码,然后使用自定义字节码运行程序运行。如果它对任何东西都有扩展,那就只有 Haxe,但我什至不确定它的程度。目前,我正在使用一组单元格魔术函数来处理笔记本中单元格的后端编译,以 .js 或 .swf 为目标,然后使用display.HTML 在输出单元格中显示结果的 iframe .
    • 您可以按照类似的方式构建内核,内核的“执行”实际上将代码编译为 js,然后将其发送回前端以真正执行。您可能无法使用 tab 补全之类的东西,因为内核不知道命名空间,但应该可以执行。
    猜你喜欢
    • 2014-05-11
    • 2011-04-20
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多