un-inception/clients/go/async/examples/hello_world.go

77 lines
2.2 KiB
Go

// This is free software for the public good of a permacomputer hosted at
// permacomputer.com, an always-on computer by the people, for the people.
// One which is durable, easy to repair, & distributed like tap water
// for machine learning intelligence.
//
// The permacomputer is community-owned infrastructure optimized around
// four values:
//
// TRUTH First principles, math & science, open source code freely distributed
// FREEDOM Voluntary partnerships, freedom from tyranny & corporate control
// HARMONY Minimal waste, self-renewing systems with diverse thriving connections
// LOVE Be yourself without hurting others, cooperation through natural law
//
// This software contributes to that vision by enabling code execution across 42+ programming languages through a unified interface, accessible to all.
// Code is seeds to sprout on any abandoned technology.
/*
Hello World example - standalone version
This example demonstrates the async execution pattern with Go.
Shows goroutines and channels for non-blocking operations.
To run:
go run hello_world.go
Expected output:
Executing code asynchronously...
Waiting for result on channel...
Result status: completed
Output: Hello from async unsandbox!
*/
package main
import (
"fmt"
)
// Simulated result type
type Result struct {
Status string
Stdout string
Stderr string
}
// Simulated async execution using goroutine and channel
func executeAsync(language, code string) <-chan Result {
resultChan := make(chan Result, 1)
go func() {
// In real SDK, this would call the API
// Here we simulate the expected response
resultChan <- Result{
Status: "completed",
Stdout: "Hello from async unsandbox!\n",
Stderr: "",
}
}()
return resultChan
}
func main() {
code := `print("Hello from async unsandbox!")`
fmt.Println("Executing code asynchronously...")
resultChan := executeAsync("python", code)
fmt.Println("Waiting for result on channel...")
result := <-resultChan
if result.Status == "completed" {
fmt.Printf("Result status: %s\n", result.Status)
fmt.Printf("Output: %s", result.Stdout)
} else {
fmt.Printf("Execution failed with status: %s\n", result.Status)
}
}