poo
Install v0.1.11
PooLang
PooLang is being designed as a simple, compiled language for web backends and infrastructure. Its direction combines Go-like deployment, approachable syntax, and Rust-inspired explicitness without exposing ownership or lifetime syntax. The name Poo (ပူး) comes from the Burmese word for guinea pig.
[!IMPORTANT] The current release, v0.1.11, is a legacy tree-walking interpreter. The compiled backend platform described in the roadmap is planned for v0.2 and is not implemented yet.
Project Status
| Track | Availability | Purpose |
|---|---|---|
| v0.1.11 | Available | Legacy Rust interpreter, executable examples, and checked library APIs |
| v0.2 | Planned | Clean-break LLVM compiler, native runtime, package tooling, async HTTP/JSON, analyzer, and editor support |
| v0.3 | Planned | Opinionated web application platform with data, auth, cache, queues, and framework tooling |
| v0.4 | Planned | Protobuf/gRPC, microservices, resilience, discovery, and OpenTelemetry |
There is no compatibility promise between the legacy syntax below and v0.2. See TODO.md for the decision record, milestones, and implementation gates.
Current v0.1.11 Features
- Integer, float, Boolean, character, string, vector, and map values.
- Immutable inferred or typed declarations and mutable bindings.
- Arithmetic, comparison,
and,or,not, andotherwiseexpressions. if/elif/else,while, range/vectorfor,step, andreturn.- Typed functions, structs, instance methods, and legacy struct inheritance.
- Built-in
std,math, andtimemodules. - Checked source/file APIs with
Io,Parse, andRuntimeerrors. - A Rust lexer, parser, type-inference pass, and AST-walking interpreter.
Traits are tokenized but are not a complete supported feature. PooLang does not currently provide native compilation, HTTP, JSON, databases, packages, gRPC, or an editor analyzer.
Installation
Current v0.1.11 packages and installers are published for macOS, Linux, and Windows.
Homebrew
brew install shayyz-code/tap/poo
npm
npm install --global @shayyz-code/poo@latest
Linux or macOS installer
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/shayyz-code/poolang/releases/latest/download/poo-installer.sh | sh
Windows PowerShell installer
powershell -ExecutionPolicy Bypass -c "irm https://github.com/shayyz-code/poolang/releases/latest/download/poo-installer.ps1 | iex"
Build from source
Install a stable Rust toolchain, then run:
git clone https://github.com/shayyz-code/poolang.git cd poolang cargo install --path .
Running Programs
The v0.1 CLI accepts a Poo source file path:
poo path/to/program.poo
From a repository checkout:
cargo run -- examples/app.poo
Append --speed after the source path to print interpreter timing:
poo path/to/program.poo --speed
Successful top-level returns are printed as Result: <Value>. File, parse, and
runtime failures are written to stderr with a non-zero exit status. The legacy
CLI does not currently implement --help or --version.
Legacy v0.1.11 Syntax
This example is executable with the current interpreter:
use std::poutln; poo message str = "ready"; mut total <: 0; for i in 0..5 { total = total + i; } poof double(value int) >> int { return value * 2; } if (not false and total > 5) or message == "never" { poutln(double(total)); } return total;
Expected output:
20 Result: Int(10)
Legacy declarations use <: for inferred types or name type = value for
explicit types. Mutable declarations begin with mut; reassignment uses
standard =. Functions use poof, typed parameters such as value int,
and >> for return types.
Examples
examples/app.poo exercises collections, control flow, functions, structs,
methods, modules, and inheritance:
cargo run -- examples/app.poo
examples/donut.poo renders a continuously animated terminal donut. Run it
in a terminal and stop it with Ctrl+C:
cargo run --release -- examples/donut.poo
Both examples target the legacy v0.1.11 interpreter.
Releases and CI
SemVer tags drive the cargo-dist Release workflow. The current configuration
produces checksummed archives for Apple Silicon and Intel macOS, ARM64 and
x86-64 Linux, and x86-64 Windows, plus shell, PowerShell, npm, Homebrew, and MSI
installers. Stable releases publish npm packages and Homebrew formula updates.
Pull requests currently run:
- The issue-link policy check.
- Rustfmt, Cargo check, strict Clippy, and the complete Cargo test suite on Ubuntu.
- The Oranda/mdBook site build and internal-link check.
- A cargo-dist release-plan validation.
Pushes to main rebuild and deploy the project site. Platform release builds
run for version tags, not for every pull request.
Development
cargo build cargo fmt --all -- --check cargo check --all-targets cargo clippy --all-targets --all-features -- -D warnings cargo test mdbook build docs mdbook test docs
Core Rust code lives in src/, executable language specifications in
tests/language_specs.rs, sample programs in examples/, and documentation
sources in docs/src/. Generated docs/book/ and public/ output is not
tracked.
Every change starts with a GitHub issue and a branch from main. Pull requests
must remain small, contain exactly one closing issue reference, use Conventional
Commits, and are squash-merged only. See CONTRIBUTING.md.
License
PooLang is licensed under the MIT License.
Hand-crafted by Shayy