thevita
2023-11-21 13:28:13 +08:00
理论上,能完整支持 c abi 的都可以
tier 1: rust, zig
完整的 C ABI 支持,完全的互操作性,交叉编译支持非常好, ps: zig 还带了一个 c/c++ 的前端,配合他自己的编译器后端 可以非常方便的实现 大部分 c/c++ 代码的交叉编译,而不用自己去搞定 c/c++ 的交叉编译环境,我用过他来作为 cgo 的 c 编译器,而不用去配置 ci 的 c++ 环境,也能在 mac 直接交叉编译输出 带有 cgo 的 linux elf ,推荐
tier 2: c/c++/pascal/ etc...
完整的 C ABI 支持,完全的互操作性,就是交叉编译麻烦
tier 3: go
用得很少,看文档描述,也能实现,但因为 c abi 存在栈拷贝的开销,大家都不是很满意,而且我有些疑问:在 存在 gc 的情况下,怎么保证 go 对象 export 给 c 之后的安全性?
tier 4: 其他
理论上 类似 python 这种,也可用 用一个 c wrapper 包一下来实现,python code -> c-wrapper -> python code [decompressed from shared library/dll]