Minimal golang binding to V8. This exposes a non-blocking message passing
interface to the V8 javascript engine. Go and JavaScript interact by sending
and receiving messages. V8 will block a thread (goroutine) only while it
computes javascript - it has no "syscalls" other than sending and receiving
messages to Go. There are only a few built in functions exposed to javascript:
$print(string), $send(msg), $recv(callback), $sendSync(msg), and
$recvSync(callback)
A slightly out of date presentation on this project
MIT License. Contributions welcome.
You will need chrome's depot_tools to build. Follow the instructions here
https://www.chromium.org/developers/how-tos/install-depot-tools
Run make to trigger a download and build of V8. make install will trigger
go install. V8 is statically linked. It's only been tested on my OSX laptop
and x64 linux. Should be portable with some difficulty to windows.
make test to build/run tests. Or just go test.
To build a debug version use target=x64.debug make
From golang checkout the API here: https://godoc.org/github.com/ry/v8worker
From Javascript you only have:
$print(string)
$send(msg)
$recv(callback).
$sendSync(msg).
$recvSync(callback).
See worker_test.go for example usage for now.
- more tests
- need ability to pass command line options to V8 when creating a worker (maybe before)
- way to kill worker
- get text of exception