Search code examples
gog-wan

How does Go run on G-WAN?


I read that G-WAN supports Go. As far as I know, Go can only produce statically linked executables. So how does Go work on G-WAN, through CGI/FastCGI? Or simply invoking the executable with the raw request on stdin?

I would love to be able to program Go and take advantage of G-WAN's performance.


Solution

  • GO has its own runtime, it uses segmented stacks and it introduced goroutines, so a C program cannot (easily) embed GO the way C++, C-Sharp, Java can be used from C. This would be possible to do but many pitfalls would have to be resolved.

    Therefore, for GO G-WAN has used CGI, which works very well if you have many CPU Cores (re-tested today with a newer release of GO on 6-CPU Cores).

    Other precautions have been taken to prevent a long GO servlet from preventing G-WAN from processing other requests while the GO reply is built but the rest is pretty straightforward.