c9cc7ad9f7086033cf8c0f89ba74b7615e422fcc
llgo - A Go compiler based on LLVM
This is a Go compiler based on LLVM in order to better integrate Go with the C ecosystem. It's a subproject of the Go+ project.
How to install
Follow these steps to generate the llgo command (its usage is the same as the go command):
on macOS
brew update # execute if needed
brew install llvm@17
go install -v ./...
on Linux
echo 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-17 main' | sudo tee /etc/apt/sources.list.d/llvm.list
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get update # execute if needed
sudo apt-get install --no-install-recommends llvm-17-dev
go install -v ./...
on Windows
TODO
Demo
The _demo directory contains our demos (it start with _ to prevent the go command from compiling it):
- hello: call C printf to print
Hello world - concat: call C fprintf with stderr, and Go variadic function
- qsort: call C function with a callback (eg. qsort)
- genints: various forms of closure usage (including C function, recv.method and anonymous function)
- llama2-c: inference Llama 2 (It's the first llgo AI example)
- hellopy: link Python to Go and say
Hello world
How to run demos
cd <demo-directory> # eg. cd _demo/genints
llgo run .
Description
A Go compiler based on LLVM in order to better integrate Go with the C ecosystem including Python and JavaScript
Languages
LLVM
66.3%
Go
18.9%
Assembly
13.2%
C
1.2%
Python
0.1%
Other
0.1%