slovo/README.md
2026-05-22 11:51:11 +02:00

4.0 KiB

Slovo

Slovo (ⰔⰎⰑⰂⰑ) is a typed structural programming language and toolchain.

This repository is the canonical public monorepo for the language design, standard library source, compiler, runtime, examples, benchmarks, and technical documents.

Current release: 1.0.0-beta.1.

Repository Layout

compiler/       Glagol, the first Slovo compiler
runtime/        C runtime used by hosted native builds
lib/std/        source-authored Slovo standard-library facades
examples/       compiler-supported Slovo examples and projects
benchmarks/     local benchmark comparison harnesses
docs/language/  language manifest, specs, roadmap, and release notes
docs/compiler/  compiler manifest, roadmap, and release notes
docs/papers/    whitepapers and generated publication PDFs
scripts/        local release and document tooling

Beta Scope

1.0.0-beta.1 keeps the 1.0.0-beta language baseline and adds the first post-beta tooling/install hardening slice. The language baseline supports practical local command-line programs and libraries with:

  • modules, explicit imports, packages, and local workspaces
  • new, check, fmt, test, doc, and build
  • i32, i64, u32, u64, f64, bool, string, and internal unit
  • structs, enums, fixed arrays, concrete vectors, option/result families, and current match
  • explicit std/*.slo imports from lib/std, installed share/slovo/std, or SLOVO_STD_PATH
  • hosted native builds through LLVM IR, Clang, and runtime/runtime.c

Still deferred before stable: generics, maps/sets, broad package registry semantics, networking/async, LSP/watch/debug-adapter guarantees, stable ABI and layout, and a stable standard-library compatibility freeze.

Build And Test

cargo test --manifest-path compiler/Cargo.toml

Run the full local release gate:

./scripts/release-gate.sh

Build the compiler binary:

cargo build --manifest-path compiler/Cargo.toml
./compiler/target/debug/glagol --version

Create and check a project:

./compiler/target/debug/glagol new hello
SLOVO_STD_PATH="$PWD/lib/std" ./compiler/target/debug/glagol check hello
SLOVO_STD_PATH="$PWD/lib/std" ./compiler/target/debug/glagol test hello

Build a native executable when Clang is available:

SLOVO_STD_PATH="$PWD/lib/std" ./compiler/target/debug/glagol build hello -o hello/bin

1.0.0-beta.1 Tooling Additions

The 1.0.0-beta.1 release improves the common local development and install loop without adding new source-language syntax.

Build and execute in one step:

SLOVO_STD_PATH="$PWD/lib/std" ./compiler/target/debug/glagol run hello
SLOVO_STD_PATH="$PWD/lib/std" ./compiler/target/debug/glagol clean hello

Create alternate project shapes:

./compiler/target/debug/glagol new numbers --template library
./compiler/target/debug/glagol new workspace-demo --template workspace

Install the current checkout:

PREFIX="$HOME/.local" ./scripts/install.sh

The installed layout is:

<prefix>/bin/glagol
<prefix>/share/slovo/std/*.slo
<prefix>/share/slovo/runtime/runtime.c

Installed glagol discovers share/slovo/std and share/slovo/runtime/runtime.c relative to its executable. SLOVO_STD_PATH can still override standard-library search, SLOVO_RUNTIME_C or GLAGOL_RUNTIME_C can override the runtime C input, and GLAGOL_CLANG can select the Clang-compatible compiler.

Documentation

Generated PDFs live beside their Markdown sources in docs/papers/. Regenerate them with ./scripts/render-doc-pdfs.sh before documentation releases.

License

Slovo is licensed under either the MIT License or the Apache License, Version 2.0, at your option.