111 lines
3.3 KiB
Markdown
111 lines
3.3 KiB
Markdown
# 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`.
|
|
|
|
## Repository Layout
|
|
|
|
```text
|
|
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` 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
|
|
|
|
```bash
|
|
cargo test --manifest-path compiler/Cargo.toml
|
|
```
|
|
|
|
Run the full local release gate:
|
|
|
|
```bash
|
|
./scripts/release-gate.sh
|
|
```
|
|
|
|
Build the compiler binary:
|
|
|
|
```bash
|
|
cargo build --manifest-path compiler/Cargo.toml
|
|
./compiler/target/debug/glagol --version
|
|
```
|
|
|
|
Create and check a project:
|
|
|
|
```bash
|
|
./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:
|
|
|
|
```bash
|
|
SLOVO_STD_PATH="$PWD/lib/std" ./compiler/target/debug/glagol build hello -o hello/bin
|
|
```
|
|
|
|
## Post-Beta Main Additions
|
|
|
|
The `main` branch contains unreleased tooling work intended for a future
|
|
`1.0.0-beta.1` bundle.
|
|
|
|
Build and execute in one step:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
./compiler/target/debug/glagol new numbers --template library
|
|
./compiler/target/debug/glagol new workspace-demo --template workspace
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- [Language Manifest](docs/language/MANIFEST.md)
|
|
- [Language Specification](docs/language/SPEC-v1.md)
|
|
- [Compiler Manifest](docs/compiler/GLAGOL_COMPILER_MANIFEST.md)
|
|
- [Post-Beta Roadmap](docs/POST_BETA_ROADMAP.md)
|
|
- [Slovo Whitepaper](docs/papers/SLOVO_WHITEPAPER.md)
|
|
- [Glagol Whitepaper](docs/papers/GLAGOL_WHITEPAPER.md)
|
|
|
|
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.
|