mirror of
https://github.com/hanzoai/goa.git
synced 2026-09-30 21:55:10 +00:00
One Module/Engine interface with a JSON-in/JSON-out calling convention runs four pure-Go engines behind a Pool that makes single-threaded interpreters serve requests as parallel goroutines: native plain Go handlers, zero overhead goja + esbuild JavaScript and TypeScript (TS transpiled to ES2020) gpython Python, no cgo and no GIL -> true goroutine parallelism wazero Rust/WASM via a trivial string ABI Services mount from a manifest (lang + source + routes), so any Go, Python, Rust or JS backend collapses into a single static CGO_ENABLED=0 binary served on the zip/gofiber app. A Go-backed json stdlib shim lets Python backends keep importing the real module names while running at Go speed. Examples and tests cover every engine; the Rust guest is a real wasm32 fixture exercised end to end.
14 lines
391 B
Python
14 lines
391 B
Python
import json
|
|
|
|
|
|
def greet(payload):
|
|
"""A pure-Python handler. Runs interpreted by gpython, in-process, on a
|
|
goroutine — no cgo, no GIL, no subprocess. json is Go-backed (Go speed)."""
|
|
d = json.loads(payload)
|
|
return json.dumps({"hello": d.get("name", "world"), "lang": "python"})
|
|
|
|
|
|
def add(payload):
|
|
d = json.loads(payload)
|
|
return json.dumps({"sum": d["x"] + d["y"]})
|