Help us shape the future of Go! Take the 2026 Go Developer Survey

goalchemy

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

README

Goalchemy

Goalchemy compiles a restricted, Go-compatible language to seven targets. Source programs are ordinary .go files that also run with Go.

Install the compiler with Go 1.27.1:

go install github.com/eugenioenko/goalchemy/cmd/goalchemy@latest

Quick start

  1. Create a Go module and main.go:

    mkdir hello && cd hello
    go mod init example.com/hello
    cat > main.go <<'GO'
    package main
    
    func main() {
        println("Hello from Goalchemy")
    }
    GO
    
  2. Compile and run it with Python:

    goalchemy run -target python .
    

Target prerequisites

Target To run generated programs
Go Go 1.25 or later
TypeScript Node.js 22.6 or later
Python Python 3.10 or later
Java JDK 21 or later
C# .NET SDK 8
Rust Stable Rust toolchain
C C17 compiler and bdwgc 8.x with threads

The usage guide covers commands, project configuration, language gates, and output. See follow-ups for known limits and future work, and hardening for test and toolchain setup.

Goalchemy is licensed under Apache-2.0. See NOTICE.

Documentation

Overview

Package goalchemy embeds the contract catalog and target runtimes so the compiler binary is self-contained.

Index

Constants

This section is empty.

Variables

View Source
var Assets embed.FS

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
cmd
goalchemy command
Command goalchemy validates and transpiles Goalchemy programs.
Command goalchemy validates and transpiles Goalchemy programs.
hardening command
Command hardening runs bounded differential campaigns, performance baselines, and versioned upgrade checks for all released targets.
Command hardening runs bounded differential campaigns, performance baselines, and versioned upgrade checks for all released targets.
examples
bank command
Command bank models accounts with typed errors, interfaces, and deferred audit logging.
Command bank models accounts with typed errors, interfaces, and deferred audit logging.
calc command
Command calc parses and evaluates integer arithmetic expressions.
Command calc parses and evaluates integer arithmetic expressions.
life command
Command life runs Conway's Game of Life on a fixed toroidal board.
Command life runs Conway's Game of Life on a fixed toroidal board.
wordfreq command
Command wordfreq counts words in a text and prints the most frequent ones.
Command wordfreq counts words in a text and prints the most frequent ones.
internal
catalog
Package catalog locates the contract catalog and exposes the external capability registry derived from it.
Package catalog locates the contract catalog and exposes the external capability registry derived from it.
conformance
Package conformance runs canonical contract cases against a target's runtime through its JSON Lines harness process.
Package conformance runs canonical contract cases against a target's runtime through its JSON Lines harness process.
contracts
Package contracts loads, validates, and normalizes the canonical runtime contract catalog and the target mappings that implement it.
Package contracts loads, validates, and normalizes the canonical runtime contract catalog and the target mappings that implement it.
driver
Package driver runs the compiler pipeline: load, validate, lower, emit.
Package driver runs the compiler pipeline: load, validate, lower, emit.
emit/c
Package c emits C17.
Package c emits C17.
emit/csharp
Package csharp emits C# 12 for .NET 8.
Package csharp emits C# 12 for .NET 8.
emit/golang
Package golang emits lowered Go: a Go program whose control flow is the IR's basic blocks and whose implementation-dependent operations (append growth, map order, panic reporting) call the Goalchemy Go runtime.
Package golang emits lowered Go: a Go program whose control flow is the IR's basic blocks and whose implementation-dependent operations (append growth, map order, panic reporting) call the Goalchemy Go runtime.
emit/java
Package java emits Java 21.
Package java emits Java 21.
emit/py
Package py emits Python 3.10+.
Package py emits Python 3.10+.
emit/rust
Package rust emits Rust (edition 2021).
Package rust emits Rust (edition 2021).
emit/ts
Package ts emits TypeScript for Node.js.
Package ts emits TypeScript for Node.js.
frontend
Package frontend loads Go packages under the locked Goalchemy source profile.
Package frontend loads Go packages under the locked Goalchemy source profile.
hardening
Package hardening generates small, type-valid programs for differential testing.
Package hardening generates small, type-valid programs for differential testing.
ir
Package ir defines Goalchemy's target-independent typed intermediate representation: typed functions made of basic blocks with explicit branch targets, local storage cells, and three-address instructions whose evaluation order and copy boundaries are already decided by lowering.
Package ir defines Goalchemy's target-independent typed intermediate representation: typed functions made of basic blocks with explicit branch targets, local storage cells, and three-address instructions whose evaluation order and copy boundaries are already decided by lowering.
link
Package link resolves the runtime files a generated program needs and writes them with a build manifest.
Package link resolves the runtime files a generated program needs and writes them with a build manifest.
lower
Package lower translates type-checked Goalchemy source into IR.
Package lower translates type-checked Goalchemy source into IR.
project
Package project reads goalchemy.yaml, the project configuration that records roots, build tags, the language gate, and target outputs.
Package project reads goalchemy.yaml, the project configuration that records roots, build tags, the language gate, and target outputs.
sourcemap
Package sourcemap writes Source Map v3 files mapping generated lines back to Goalchemy source positions.
Package sourcemap writes Source Map v3 files mapping generated lines back to Goalchemy source positions.
specgen
Package specgen generates per-target specifications and harness bindings from the canonical contract catalog.
Package specgen generates per-target specifications and harness bindings from the canonical contract catalog.
subset
Package subset validates that type-checked Go source stays within the implemented Goalchemy feature gates.
Package subset validates that type-checked Go source stays within the implemented Goalchemy feature gates.
testutil
Package testutil runs language fixtures natively and through Goalchemy targets and compares their observations.
Package testutil runs language fixtures natively and through Goalchemy targets and compares their observations.
lib
context
Package context provides Goalchemy's cancellation contexts; deadlines use the virtual clock.
Package context provides Goalchemy's cancellation contexts; deadlines use the virtual clock.
errors
Package errors provides Goalchemy's error values.
Package errors provides Goalchemy's error values.
runtime
Package runtime provides Goalchemy's scheduler controls.
Package runtime provides Goalchemy's scheduler controls.
sync
Package sync provides Goalchemy's synchronization primitives.
Package sync provides Goalchemy's synchronization primitives.
task
Package task provides structured waiting for Goalchemy programs.
Package task provides structured waiting for Goalchemy programs.
time
Package time provides Goalchemy's virtual clock: Sleep advances it deterministically.
Package time provides Goalchemy's virtual clock: Sleep advances it deterministically.
targets
go/runtime
Package rt is the Goalchemy runtime for the lowered Go target.
Package rt is the Goalchemy runtime for the lowered Go target.
go/tests/harness command
Command harness serves runtime conformance requests for the Go target over JSON Lines on standard input and output.
Command harness serves runtime conformance requests for the Go target over JSON Lines on standard input and output.
tests

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL