One environment, every platform, built from the first byte up.
EnvoScale is one language (Envo), one toolchain (envo) and one standard platform
(envo.*) for systems code, scripts, desktop apps, websites, terminals, graphics, AI,
crypto and networking. It has no third-party dependencies, and its compiler is
bootstrapped from assembly so the whole chain can be audited.
Status: early. M0–M2 are done.
envoc0(assembly) andenvoc1(Envo) both build Windows and Linux programs. M3, the compiler that compiles itself, is in progress. SeeSTATUS.mdfor details.
- Hello World for any domain in one to three lines.
- Every layer open to experts, down to inline assembly and custom backends.
- Everything EnvoScale needs, it builds itself.
- A new OS, CPU or GPU API is an adapter, not a rewrite.
The rules the project holds itself to are in CHARTER.md.
You need NASM (setup) and nothing else.
Windows (PowerShell):
.\bootstrap.ps1 build # builds all three compilers into build\
.\bootstrap.ps1 test # runs the test suites
build\stage0\envoc0.exe lex examples\00-hello\main.envoLinux:
./bootstrap.sh build
./bootstrap.sh test
build/stage0/envoc0 lex examples/00-hello/main.envolex prints the tokens:
1:1 n ident print
1:6 j punct (
1:7 j string "Hello, World!"
1:22 j punct )
2:1 n eof
These live in tests/spec/hello/, and CI fails if one gets longer
than its limit. Each becomes runnable at the milestone shown (docs/PLAN.md).
| Domain | Program | Runs from |
|---|---|---|
| Console | print("Hello, World!") |
M1 |
| CLI tool | [Command] void Greet(string name = "World") => print($"Hello, {name}!") |
M8 |
| Window | use envo.ui; / window("Hello") { Text("Hello, World!") } |
M8 |
| Website | use envo.web; / site("Hello") { page("/") => Landing(title: "Hello, World!") } |
M9 |
| HTTP API | use envo.http; / serve(8080) { get("/") => "Hello, World!" } |
M7 |
| Terminal UI | use envo.term; / tui { Text("Hello, World!").Bold() } |
M8 |
| 3D | use envo.render3d; / scene { cube().Spin(); light.Sun(); } |
M11 |
| 2D | use envo.gfx; / window("Hi") { canvas(c => c.Circle(100, 100, 50, Lumen.Accent)) } |
M8 |
| Crypto | print(crypto.sha256("Hello, World!").Hex()) |
M7 |
| AI | use envo.ai; / print(ai.Load("tiny.gguf").Ask("Say hello")) |
M12 |
| Systems | [NoAlloc] extern "C" int main() { unsafe { asm x86_64 { /* … */ } } return 0; } |
M3 |
/ separates lines.
| Path | Contents |
|---|---|
bootstrap/ |
Seed, Stage 0 (assembly) and Stage 1 (Envo-Core) |
compiler/ |
Stage 2 envoc, the real compiler |
runtime/ |
Startup, panics, ARC, the EIR VM and JIT |
lib/ |
The standard platform: pure code and port interfaces |
adapters/ |
All platform-specific code |
tools/ |
envo CLI, LSP, formatter, debugger |
templates/ |
Project and site templates |
examples/ |
Small runnable programs |
tests/ |
Spec, golden, conformance, bootstrap and fuzz tests |
docs/ |
Language spec, architecture notes, RFCs |
Start with CONTRIBUTING.md. Language and API changes go through
RFCs. Report security issues as described in SECURITY.md.
Free for individuals and noncommercial use under the PolyForm Noncommercial License 1.0.0.
Companies need a commercial license. LICENSING.md explains who needs
which, LICENSE has the terms, docs/legal/ has the commercial
templates, and TRADEMARKS.md covers the name and logos.