Golang on Genode: a follow-up
Taru Karttunen
taruti at ...102...
Wed May 31 15:22:40 CEST 2017
On 31.05 14:33, Josef Söntgen wrote:
> Hello Rolf,
>
> * Rolf Sommerhalder <rolf.sommerhalder at ...278...> [2017-05-25 19:59:34 +0200]:
> > After following the threads about Golang on Genode and reviewing
> > AtmanOS, I suspect that AtmanOS could facilitate bringing Go to
> > Genode, for example by making AtmanOS target Virtualbox in addition to
> > Xen (maybe not so elegant), or by adapting/replacing AtmanOS'
> > microkernel with Genode, and porting the Go runtime, standard library
> > and system packages that AtmanOS wrote in Go for Xen or its own
> > microkernel, respectively (maybe preferable over Virtualbox).
> >
> > Am I reading too much into it? Would it be worth diving deeper into
> > AtmanOS' sources? Any thoughts, comments?
>
> It definitely looks interesting wrt to investigating how much
> infrastructure the current Go runtime needs or rather on what
> functionality from the underlying system it depends. So diving
> into the source code would be worthwhile indeed. It still stands
> to reason how to properly wrap the Genode's C++ API, though.
Typically C++ APIs are wrapped in Go with a thin wrapper of C++
extern "C" functions that also translate such exceptions into
errors. SWIG can do this in theory for Go, but in practice
doing it by hand or quick scripting tends to be easier unless
deep class hierarchies are involved. The wrapper functions
are then called from Go with cgo.
They tend to look like:
extern "C" myerror_t libfoo_baz(baz* ptr, int arg, foo* ret) {
try {
*ret = ptr->bazbaz(arg);
return noerror;
} catch(...) {
return errorcode;
}
}
If lots of templates are involved then things become somewhat harder.
- Taru Karttunen
More information about the users
mailing list