forked from sbinet/go-python
-
Notifications
You must be signed in to change notification settings - Fork 0
naive go bindings to the CPython C-API
License
hewei-github/go-python
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
go-python ========= Naive 'go' bindings towards the C-API of CPython this package provides a ``go`` package named "python" under which most of the ``PyXYZ`` functions and macros of the public C-API of CPython have been exposed. theoretically, you should be able to just look at: http://docs.python.org/c-api/index.html and know what to type in your ``go`` program. this package also provides an executable "go-python" which just loads "python" and then call ``python.Py_Main(os.Args)``. the rational being that under such an executable, ``go`` based extensions for C-Python would be easier to implement (as this usually means calling into ``go`` from ``C`` through some rather convoluted functions hops) Install: -------- With `Go 1` and the `go` tool, `cgo` packages can't pass anymore additional `CGO_CFLAGS` from external programs (except `pkg-config`) to the "fake" `#cgo` preprocessor directive. So one has to do instead: $ mkdir -p $GOPATH/pkg/bitbucket.org/binet $ cd $GOPATH/pkg/bitbucket.org/binet $ hg clone http://bitbucket.org/binet/go-python $ cd go-python && make Example: -------- $ cat main.go package main import "fmt" import "bitbucket.org/binet/go-python/pkg/python" func main() { gostr := "foo" pystr := python.PyString_FromString(gostr) str := python.PyString_AsString(pystr) fmt.Println("hello [", str, "]") } $ gorun ./main.go hello [ foo ] TODO: ----- - fix handling of integers (I did a poor job at making sure everything was ok) - add CPython unit-tests - do not expose ``C.FILE`` pointer and replace it with ``os.File`` in "go-python" API - provide an easy way to extend go-python with ``go`` based extensions - think about the need (or not) to translate CPython exceptions into go panic/recover mechanism - use SWIG to automatically wrap the whole CPython api ?
About
naive go bindings to the CPython C-API
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- Go 93.2%
- C 4.2%
- C++ 2.1%
- Other 0.5%