From 67896c63a7fef4a668ea93c109ff772340761f5f Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sat, 11 May 2024 05:18:17 +0800 Subject: [PATCH] py/README --- README.md | 34 +++++++++++++++++--------- py/README.md | 33 +++++++++++++++++++++++++ {_pydemo => py/_demo}/callpy/call.go | 0 {_pydemo => py/_demo}/clpy/cleval.go | 0 {_pydemo => py/_demo}/hellopy/hello.go | 0 5 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 py/README.md rename {_pydemo => py/_demo}/callpy/call.go (100%) rename {_pydemo => py/_demo}/clpy/cleval.go (100%) rename {_pydemo => py/_demo}/hellopy/hello.go (100%) diff --git a/README.md b/README.md index 5aed55ea..344b8ed3 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,21 @@ 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](https://github.com/goplus/gop). +## C standard libary support + +See [github.com/goplus/llgo/c](https://pkg.go.dev/github.com/goplus/llgo/c). + + +## Python support + +TODO + + +## Other frequently used libraries + +TODO + + ## How to install Follow these steps to generate the `llgo` command (its usage is the same as the `go` command): @@ -37,11 +52,6 @@ go install -v ./... TODO -## Python support - -TODO - - ## Demo The `_demo` directory contains our demos (it start with `_` to prevent the `go` command from compiling it): @@ -52,11 +62,11 @@ The `_demo` directory contains our demos (it start with `_` to prevent the `go` * [genints](_demo/genints/genints.go): various forms of closure usage (including C function, recv.method and anonymous function) * [llama2-c](_demo/llama2-c): inference Llama 2 (It's the first llgo AI example) -And the `_pydemo` directory contains python related demos: +And the `py/_demo` directory contains python related demos: -* [hellopy](_demo/hellopy/hello.go): link Python to Go and say `Hello world` -* [clpy](_demo/clpy/cleval.go): compile Python code and eval. -* [callpy](_demo/callpy/call.go): call Python standard library function `math.sqrt`. +* [hellopy](py/_demo/hellopy/hello.go): link Python to Go and say `Hello world` +* [clpy](py/_demo/clpy/cleval.go): compile Python code and eval. +* [callpy](py/_demo/callpy/call.go): call Python standard library function `math.sqrt`. ### How to run demos @@ -67,7 +77,7 @@ cd # eg. cd _demo/genints llgo run . ``` -To run the demos in directory `_pydemo`, you need to set the `LLGO_LIB_PYTHON` environment variable first. Assuming you use Python 3.12, and the `libpython3.12.so` (or `libpython3.12.dylib` or `python3.12.lib`) file is in the /foo/bar directory, then you need to set `LLGO_LIB_PYTHON` to: +To run the demos in directory `py/_demo`, you need to set the `LLGO_LIB_PYTHON` environment variable first. Assuming you use Python 3.12, and the `libpython3.12.so` (or `libpython3.12.dylib` or `python3.12.lib`) file is in the /foo/bar directory, then you need to set `LLGO_LIB_PYTHON` to: ```sh export LLGO_LIB_PYTHON=/foo/bar/python3.12 @@ -79,9 +89,9 @@ For example, `/opt/homebrew/Frameworks/Python.framework/Versions/3.12/libpython3 export LLGO_LIB_PYTHON=/opt/homebrew/Frameworks/Python.framework/Versions/3.12/python3.12 ``` -Then you can run the demos in directory `_pydemo`: +Then you can run the demos in directory `py/_demo`: ```sh -cd # eg. cd _pydemo/hellopy +cd # eg. cd py/_demo/hellopy llgo run . ``` diff --git a/py/README.md b/py/README.md new file mode 100644 index 00000000..16d3bbc3 --- /dev/null +++ b/py/README.md @@ -0,0 +1,33 @@ +Linking Python to Go +===== + +TODO + +## Demo + +The `_demo` directory contains our demos (it start with `_` to prevent the `go` command from compiling it): + +* [hellopy](_demo/hellopy/hello.go): link Python to Go and say `Hello world` +* [clpy](_demo/clpy/cleval.go): compile Python code and eval. +* [callpy](_demo/callpy/call.go): call Python standard library function `math.sqrt`. + +### How to run demos + +To run the demos in directory `_demo`, you need to set the `LLGO_LIB_PYTHON` environment variable first. Assuming you use Python 3.12, and the `libpython3.12.so` (or `libpython3.12.dylib` or `python3.12.lib`) file is in the /foo/bar directory, then you need to set `LLGO_LIB_PYTHON` to: + +```sh +export LLGO_LIB_PYTHON=/foo/bar/python3.12 +``` + +For example, `/opt/homebrew/Frameworks/Python.framework/Versions/3.12/libpython3.12.dylib` is a typical python lib location under macOS. So we should set it like this: + +```sh +export LLGO_LIB_PYTHON=/opt/homebrew/Frameworks/Python.framework/Versions/3.12/python3.12 +``` + +Then you can run the demos in directory `_demo`: + +```sh +cd # eg. cd _demo/hellopy +llgo run . +``` diff --git a/_pydemo/callpy/call.go b/py/_demo/callpy/call.go similarity index 100% rename from _pydemo/callpy/call.go rename to py/_demo/callpy/call.go diff --git a/_pydemo/clpy/cleval.go b/py/_demo/clpy/cleval.go similarity index 100% rename from _pydemo/clpy/cleval.go rename to py/_demo/clpy/cleval.go diff --git a/_pydemo/hellopy/hello.go b/py/_demo/hellopy/hello.go similarity index 100% rename from _pydemo/hellopy/hello.go rename to py/_demo/hellopy/hello.go