LLGo
基于LLVM的Go语言编译器前端
info简介
LLGo 是一个基于 LLVM 的 Go 语言编译器前端,由 Go+ 项目团队发起,用 Go 语言实现。它的核心目标是"把 Go 无缝带进 C/Python 生态",为 Go 开发者提供更广阔的应用场景和更强大的性能优化能力。
track_changes核心目标
LLGo 的核心目标是"把 Go 无缝带进 C/Python 生态",通过以下方式实现:
- 复用 LLVM 成熟的后端技术,提供高效的代码生成和优化能力
- 实现零成本调用 C/C++ 库,无需额外的包装层
- 支持动态导入 Python 模块,扩展 Go 的应用生态
- 保持与 Go 语言的高度兼容性,降低学习成本
stars主要功能特性
speed编译与优化
- 复用 LLVM 成熟的后端(支持 LLVM 18),可输出高效机器码或 WebAssembly
- 实验性支持"全局寄存器分配"等 LLVM 优化
- 计算密集场景(Fibonacci、排序)实测可比官方 gc 编译器提速 10–30%
integration_instructions零成本调用 C/C++
- 通过 ABI 直接链入已安装的 .so/.dylib/.a,无需写 cgo、无需 C 包装层
- 已提供 raylib、sqlite、lua、libxml2 等常用库的"即引即用"包
- 附带代码生成工具 llcppg:解析头文件 ➜ 自动生成 Go 声明与类型映射
python动态导入 Python 模块
- 内置 llpyg 工具,一行命令把 numpy、pandas、pytorch 等 Python 库"拉"进 Go 项目
- 运行时通过 CPython C-API 直接调用 Python 模块
- 无缝集成 Python 生态系统,扩展 Go 的数据处理能力
code对 Go 语法的支持度
- 函数、闭包、goroutine、defer、接口等常用特性已能跑通
- 泛型、反射、部分标准库包仍在补齐
- 官方定位为"实验阶段",不建议直接上生产环境
devices跨平台与构建
LLGo 支持多种平台和架构,具有灵活的构建和发布方式:
- Host 支持:macOS、Linux(Windows 正在移植)
- 目标平台:x86_64、ARM64、WebAssembly
- 构建工具:采用 GoReleaser 统一发布,一条 make 即可本地编出 llgo 可执行文件
terminal典型用法速览
bash
# 安装(以 macOS 为例)
brew install llvm@18 pkg-config bdw-gc openssl python@3.12
git clone https://github.com/goplus/llgo && cd llgo
make
# 运行
./llgo run main.go
# 编译独立可执行文件
./llgo -o hello hello.go
folder项目结构与学习入口
- cmd/llgo/main.go —— 编译器入口
- _demo / _pydemo —— C 与 Python 互操作示例
- doc/How-to-support-a-C&C++-Library.md —— 自写 C 库绑定教程
- 官网仓库(GitHub):https://github.com/goplus/llgo
总结
LLGo 不是官方编译器的替代品,而是"Go + C + Python"三栖场景的加速器。如果你需要:
- 在 Go 里直接调用现成 C 库/Python 模型
- 把 Go 跑在 WebAssembly、嵌入式或高性能计算环境
- 体验 LLVM 带来的优化潜力
那么 LLGo 值得拉下来试跑一波。
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!