大家说有没有可能使用 elisp 来编写 emacs 动态模块?

现在 gccemacs 不是可以将 elisp 编译为二进制文件嘛,大家说有没有可能未来使用 elisp 编写动态模块?

1 个赞

只要能生成符合 C ABI 的 *.so *.dylib 文件,啥语言都行。

需要一个独立的 runtime 和一套完整的标准库,然后才能用来动态模块。

用了native comp之后的Elisp函数直接就能在Emacs里调用啊, 为什么还要舍近求远, 写成emacs动态模块?

动态模块是为了"借用"别人的生态, 有点类似FFI, 不过FFI通常需要用户系统安装对应的动态库.(这也是我喜欢用Rust写emacs模块的原因, Rust目前以静态链接为主, 只需要一个生成的dll文件, 不需要额外的依赖)

这个应该叫做“原生模块” :crazy_face:

elisp来写动态模块, 怎么有种绕了一圈的感觉

感觉 elisp native comp 之后,和 C/Rust 之类写的性能差别还是很大。

elisp 编写的动态模块给 27 用?

不仅绕了一圈,还捆住了手脚。

在动态模块中,意味着不能愉快地操作 window、buffer。。。等 Emacs 元素,只能透过 API 与 Emacs 交互。

也不能随心所欲地 requie 包(dash 之类的除外),基本上跟现有的生态圈隔离了,只能写写 pure elisp,把 map、car 玩出花来。