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.
13 lines
406 B
TypeScript
13 lines
406 B
TypeScript
// A TypeScript handler. esbuild transpiles it to ES2020 CommonJS, then goja
|
|
// runs it in-process on a goroutine — no Node, no V8, no cgo.
|
|
interface Greeting {
|
|
hello: string;
|
|
lang: string;
|
|
}
|
|
|
|
export function greet(payload: string): string {
|
|
const d: { name?: string } = JSON.parse(payload);
|
|
const out: Greeting = { hello: d.name ?? "world", lang: "typescript" };
|
|
return JSON.stringify(out);
|
|
}
|