Skip to main content

Geobe

Geobe is a geometric esoteric programming language interpreter written in Python. Programs are 2D grids of Unicode symbols where arrows control flow and shapes carry semantics.

Overview

Geobe programs are rectangular text grids. The interpreter finds every ○ source node and follows directional flow through the grid until a path ends. The current MVP supports a single deterministic memory cell, input buffering, output collection, and pluggable △ transforms.

Core symbols:

  • ○ read the next input value
  • □ store the current value in memory
  • △ transform the current value
  • ▲ change/delta transform the current value
  • ▽ append the current value to output
  • ◀ append the current value to output
  • ▶ traverse the current array by one index
  • ▶▶ continue the current array loop, or finish when exhausted
  • →, ←, ↑, ↓ move execution through the grid
  • «... » read a literal string into the current value
  • spell ... decode triangle alphabet symbols into lowercase text output

Spaces are treated as empty cells for traversal. Other non-traversable characters stop a path.

Installation

The project targets Python 3.11+.

python3 -m pip install geobe==0.1.2

To install from a local checkout for development:

python3 -m pip install -e ".[dev]"

Running Programs

Run a .geo file:

geobe examples/input_store_transform_output.geo --input hello

Run inline source:

geobe --code "○→▽" --input hello

Run a literal string program:

geobe --code "«hello, Geobe!»→▽"

Read additional input values from standard input:

printf 'first\nsecond\n' | geobe --code "○→▽\n○→▽" --stdin-input

Start the interactive spelling console:

geobe --console

In console mode, lowercase letters are echoed as Geobe's mapped alphabet symbols. Pressing Enter prints the English equivalent of the current line. For example, typing hello! displays ▹▶▿▿◂!, then Enter prints hello!.

Trace execution as JSON:

geobe --code "○→□→▽" --input hello --trace

Trace execution in readable text:

geobe --code "○→□→▽" --input hello --trace --trace-format text

Running the package module directly executes the built-in demo program:

python3 -m geobe

Example Program

examples/input_store_transform_output.geo

○→□→△→▽

With input hello, the program stores the value, applies the default identity transform, and outputs hello.

Array loop:

○→▶→◀→▶▶

With Python input [1, 2, 3], the program traverses the array and outputs [1, 2, 3].

Spelled text:

spell ▹▶▿▿◂ ◮◂ ◣▿▵!

This decodes to hello world! and outputs it.

Python code can also encode English into the triangle alphabet:

from geobe.parser import encode_spell_text

encoded = encode_spell_text("Hello world!")

Custom Transforms

The △ symbol is backed by a transform registry. The default transform is identity, and you can register your own behavior in Python code.

See examples/custom_transform.py for a minimal example that returns a custom formatted value.

Development

Run the test suite:

pytest

Run linting and type checks:

ruff check .
mypy src tests

Project Layout

  • src/geobe/ interpreter, parser, runtime state, and CLI
  • examples/ documented sample programs
  • tests/ coverage for the CLI, parser, interpreter, and examples

Package Entry Points

  • geobe CLI: geobe.cli:main
  • Module entry point: python3 -m geobe

Metadata

Release files for geobe 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geobe 0.1.2
File Size Uploaded Provenance
geobe-0.1.2.tar.gz 16.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for geobe 0.1.2
File Interpreter ABI Platform
geobe-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 30.6 kB

Release files / geobe-0.1.2.tar.gz

Download URL geobe-0.1.2.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
7b2846ea192bcbf4b0f5b6e242f53de08a7c4e7f0cb7415d3e702333bff83fb7
BLAKE2b-256 checksum
How to use checksums
115db0a6e7a151e3964fa179f26785108e3997d1915896a4100ef4a4e6e1d82e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / geobe-0.1.2-py3-none-any.whl

Download URL geobe-0.1.2-py3-none-any.whl
Size 14.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
224122e176428d8c0a816e904f11dea34193cc6a695c673d710db2147fd2258b
BLAKE2b-256 checksum
How to use checksums
d061c80f4e6bf1417a73cec845b84c98e5412094de6f0edf9ce9b304743686f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for geobe 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page