And yet, the golang runtime for Lambda is a long* running process that communicates over TCP. :-)
It would be entirely possible to create a language agnostic Lambda runtime model, be it stdin/out/err, or TCP.
* relatively so
That's already around https://github.com/apex/up
Not as a wrapper, but an official Lambda runtime model. This Go release points to a much more interesting way of doing so (RPC) than what I had previously imagined (stdin/out/err).
Yeah, the problem with RPC is that there's no one RPC to rule them all, like there is with JSON or HTTP. They'll have to build RPC wrappers for each language / VM, and choose the most popular RPC packager if there's isn't one in the stdlib.
Lambda is for executing individual functions, which implies that the execution environment must be language aware (could get away with JVM dynamic invoke or the .NET equivalent as well maybe). The way parameters are passed in, the concurrency model etc are all language specific.