Skip to content

v0.2.0 — Go Rewrite

Latest

Choose a tag to compare

@queelius queelius released this 15 Mar 02:02

What's New

Complete rewrite from C++ to Go with a clean package architecture.

Language

  • Minimal Lisp with holes (?x, ?ns.x) for coordinated partial evaluation
  • Partial evaluator with algebraic simplifications (constant folding, identity, annihilation)
  • Hole filling with incremental multi-party support
  • Namespaced holes for multi-party coordination (?client.x, ?server.y)

CLI

  • aperture eval — evaluate expressions
  • aperture partial — partial evaluation preserving holes
  • aperture fill --hole x=10 — fill holes and evaluate
  • aperture run — execute .apt files
  • Interactive REPL with :holes, :partial, :trace, :env commands

Architecture

  • pkg/ast — AST types with sealed interface pattern
  • pkg/parser — hand-written recursive descent S-expression parser
  • pkg/eval — full evaluator, partial evaluator, algebraic simplifier
  • pkg/value — runtime value types
  • pkg/env — lexically scoped environments
  • demo/query/ — HTTP client/server demo of local computation pattern

Install

go install github.com/queelius/aperture/cmd/aperture@v0.2.0