Компилятор Go на базе LLVM для микроконтроллеров, WebAssembly (WASM/WASI) и инструментов командной строки.
xgo-dev/llgo
Компилятор Go на базе LLVM: позволяет Go-коду напрямую вызывать библиотеки C и импортировать библиотеки Python.
- Звёзды
- 845
- Форки
- 53
- Открытые issues
- 197
- Последний коммит
- 3 часа назад
Что это?
LLGo — компилятор Go на базе LLVM, предназначенный для интеграции Go с экосистемой C ABI, включая C/C++, Python и другие языки, поддерживающие совместимые с C интерфейсы. Он совместим с Go на уровне исходного кода и является подпроектом XGo.
Вместо cgo LLGo связывает объявления Go напрямую с символами C с помощью go:linkname, поэтому вызовы C компилируются в нативные вызовы без перехода между стеками Go и C или переключения планировщика. В комплект входят биндинги для множества библиотек C, например SQLite, zlib, libuv, OpenSSL и raylib, а также для таких пакетов Python, как NumPy и PyTorch, — с помощью инструментария llpyg. Среда выполнения по умолчанию использует нативные горутины, сопоставленные с потоками ОС, и консервативный сборщик мусора BDWGC.
Компилятор нативно поддерживает Linux, macOS и Windows, а также WebAssembly и встраиваемые платформы. Для сборки и запуска программ требуются LLVM 22, Clang 22 и LLD.
Ключевые возможности
- 01Напрямую вызывает функции C через go:linkname без накладных расходов cgo.
- 02Импортирует библиотеки Python, такие как NumPy и PyTorch, с помощью сгенерированных биндингов.
- 03Компилирует исходный код, совместимый с Go 1.20+, и поддерживает cgo.
- 04Предоставляет биндинги стандартной библиотеки C/C++ и многих распространённых библиотек C.
- 05Поддерживает нативные Linux, macOS и Windows, WebAssembly и встраиваемые платы.
Сценарии использования
- Вызов существующих библиотек C, например SQLite или raylib, из кода Go.
- Использование численных библиотек Python и библиотек для анализа данных в программах на Go.
- Сборка программ на Go для WebAssembly или встраиваемых плат с микроконтроллерами.
- Эксперименты с компиляцией Go через LLVM для взаимодействия с экосистемой C.
Быстрый старт
- 1
Установите llgo, следуя разделу How to install в README
- 2
Запустите демо, например _demo/c/hello, из соответствующего каталога
llgo run .
Что важно знать
- Другие целевые платформы, например WebAssembly и встроенные системы, могут не предоставлять все службы ОС и не поддерживать все варианты поведения среды выполнения.
- Сторонние библиотеки Python, такие как pandas и PyTorch, необходимо устанавливать отдельно.
- Привязки C и C++ поддерживаются вручную, поэтому набор поддерживаемых библиотек ограничен.
- Перенаправление вариативных вызовов C через обёртки повышенных методов поддерживается только на нативных целевых платформах с хостовой ОС.
Темы
Частые вопросы
- Что такое llgo?
- Компилятор Go на базе LLVM: позволяет Go-коду напрямую вызывать библиотеки C и импортировать библиотеки Python. LLGo — компилятор Go на базе LLVM, предназначенный для интеграции Go с экосистемой C ABI, включая C/C++, Python и другие языки, поддерживающие совместимые с C интерфейсы. Он совместим с Go на уровне исходного кода и является подпроектом XGo.
- llgo можно использовать бесплатно? Какая у него лицензия?
- llgo распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- llgo всё ещё поддерживается?
- Активно поддерживается. Последний коммит в llgo — 22 окт. 2026 г..
- Для чего можно использовать llgo?
- Вызов существующих библиотек C, например SQLite или raylib, из кода Go. Использование численных библиотек Python и библиотек для анализа данных в программах на Go. Сборка программ на Go для WebAssembly или встраиваемых плат с микроконтроллерами. Эксперименты с компиляцией Go через LLVM для взаимодействия с экосистемой C.
- Как установить llgo?
- Установите llgo, следуя разделу How to install в README Запустите демо, например _demo/c/hello, из соответствующего каталога: llgo run .
- Где скачать llgo?
- Исходный код и инструкции по установке — на GitHub: https://github.com/xgo-dev/llgo
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Набор инструментов компиляции, который преобразует код на C и C++ в WebAssembly для запуска в браузерах, Node.js и других Wasm-средах.
Модульный набор технологий для компиляторов и инструментальных цепочек, включающий LLVM core, фронтенд Clang для C/C++, libc++ и линкер LLD.
Эмулятор ESP32 с открытым исходным кодом на Rust: запускает настоящую прошивку на компьютере или в браузере, без платы.
Язык программирования Kotlin, его компилятор, стандартная библиотека и инструменты сборки для кроссплатформенной разработки, создаваемые JetBrains.
Язык и компилятор в духе TypeScript, преобразующие типизированное подмножество TypeScript в модули WebAssembly.