Goiaba: An experimental Go compiler, written in Rust
5 months ago
- #Rust
- #Go
- #WebAssembly
- Goiaba 是一个用 Rust 编写的实验性 Go 解析器和 WebAssembly 编译器。
- 它将 Go 源代码转换为适用于浏览器及其他 WASM 环境的 WebAssembly 字节码。
- 核心功能包括将 Go 解析为抽象语法树 (AST)、将函数编译为 WASM 模块,并支持 Go 基础语言特性。
- 可导出 Go 函数供 JavaScript、Rust(通过 C ABI)和 Zig(通过 C ABI)调用。
- 提供命令行界面和面向 Rust 项目的编程接口。
- 通过 `cargo install goiaba` 安装,文档提供使用示例。
- 支持多种 Go 结构:函数、控制流、算术运算、结构体、数组等。
- 导出函数需使用 `//export` 指令实现 WASM 可调用性。
- 主要组件包含解析器、AST、翻译器、编译器和命令行工具。
- 未来计划优化:死代码消除、常量折叠等编译优化。
- 当前限制:无垃圾回收、标准库支持有限、缺少并发原语。
- 采用 BSD-3-Clause 许可证,版权所有 Raphael Amorim 2024。