The tree is the language.
Go to file
2026-05-22 13:17:21 +02:00
.llm Document workspace package graphs 2026-05-22 13:17:21 +02:00
benchmarks Import Slovo 1.0.0-beta monorepo 2026-05-22 08:38:43 +02:00
compiler Document workspace package graphs 2026-05-22 13:17:21 +02:00
docs Document workspace package graphs 2026-05-22 13:17:21 +02:00
examples Add stdlib composition example 2026-05-22 12:53:11 +02:00
lib/std Add beta.2 filesystem status foundation 2026-05-22 12:21:49 +02:00
runtime Add beta.2 filesystem status foundation 2026-05-22 12:21:49 +02:00
scripts Add stdlib API catalog gate 2026-05-22 12:46:41 +02:00
tests Clarify nonexhaustive match diagnostics 2026-05-22 13:06:27 +02:00
.gitignore Add stdlib composition example 2026-05-22 12:53:11 +02:00
CONTRIBUTING.md Harden monorepo release gate 2026-05-22 08:43:06 +02:00
LICENSE Import Slovo 1.0.0-beta monorepo 2026-05-22 08:38:43 +02:00
LICENSE-APACHE Import Slovo 1.0.0-beta monorepo 2026-05-22 08:38:43 +02:00
LICENSE-MIT Import Slovo 1.0.0-beta monorepo 2026-05-22 08:38:43 +02:00
README.md Document workspace package graphs 2026-05-22 13:17:21 +02:00

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.4.

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.4 keeps the 1.0.0-beta language baseline, includes the 1.0.0-beta.1 tooling/install hardening slice, the 1.0.0-beta.2 runtime/resource foundation bundle, the 1.0.0-beta.3 standard-library stabilization bundle, and the first language-usability diagnostics bundle. 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.

1.0.0-beta.2 Runtime Resource Foundation

The 1.0.0-beta.2 release adds beta-scoped runtime/resource foundation work:

  • std.fs.open_text_read_result
  • std.fs.read_open_text_result
  • std.fs.close_result
  • std.fs.exists
  • std.fs.is_file
  • std.fs.is_dir
  • std.fs.remove_file_result
  • std.fs.create_dir_result
  • matching explicit lib/std/fs.slo facades

These APIs use beta-scoped opaque i32 file handles. They do not claim stable file descriptors, writable streams, binary IO, directory handles, sockets, async IO, platform error codes, or stable handle ABI/layout. Directory creation is intentionally narrow and does not imply directory enumeration or recursive filesystem APIs.

1.0.0-beta.3 Standard Library Stabilization

The 1.0.0-beta.3 release starts the standard-library stabilization slice. It adds a generated standard-library API catalog and examples/projects/stdlib-composition, a checked/tested/run-capable program that composes std.fs, std.string, std.math, and std.io.

1.0.0-beta.4 Language Usability Diagnostics

The 1.0.0-beta.4 release improves diagnostics without changing the source language surface. Project/workspace build and run entry failures now use entry-specific diagnostic codes, and non-exhaustive match diagnostics have clearer wording with deterministic found-arm output.

Current Main: Package And Workspace Discipline

After 1.0.0-beta.4, main is tracking a package/workspace discipline slice. Local workspaces may declare [workspace] default_package = "name" to select the build/run entry package when multiple packages have entry modules. Duplicate normalized workspace members and missing default-package references are now dedicated diagnostics. glagol doc <workspace> -o <dir> includes a workspace package/dependency summary. Remote registries, lockfiles, semantic-version solving, package publishing, and stable package ABI/layout remain deferred.

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.