Zenith is a reading-first programming language project with systems-level ideas.
Its main purpose is clear and limited:
- study;
- small projects;
- research;
- curiosity;
- experiments in language design, compilers, runtime, tooling, and accessible documentation.
Zenith is not a market language.
It is not trying to compete with Rust, C, C#, Python, JavaScript, Go, Zig, Nim, or any other established language. Comparisons with other languages are used only to learn, make better technical decisions, and explain trade-offs.
This repository is a learning and research workspace that also contains real code, tests, tools, docs, examples, and release artifacts.
English is the default language for the public documentation of Zenith.
The writing style should stay:
- direct;
- short;
- concrete;
- friendly to readers with ADHD and dyslexia;
- focused on small steps instead of large blocks of text.
Portuguese notes may still exist in internal planning or historical material, but user-facing documentation should default to English from this point forward.
Zenith is still evolving.
- Public status: alpha.
- Current source version:
0.4.1-alpha.1. - Latest packaged alpha release:
0.3.0-alpha.3(2026-04-24). - Current source tree: post-
0.3.0-alpha.3local development, with R4/R6 closure reports and the active v7 roadmap. - Current compiler track:
v2, implemented in C. - Main executable:
zt.exe. - Local package manager:
zpm.exe. - Current backend: emitted C + native compiler.
- Current runtime:
runtime/c/. - Current standard library:
stdlib/std/.
Treat Zenith as an alpha project:
- APIs may change;
- some features are experimental;
- not every roadmap item is a promise;
- public docs, reference docs, specs, and internal plans have different roles.
Zenith is a practical study of programming language implementation.
It explores:
- compilers;
- syntax and semantics;
- diagnostics;
- runtime design;
- standard library design;
- FFI;
- package tooling;
- LSP and editor support;
- documentation for cognitive accessibility;
- AI-assisted language engineering.
The goal is to learn with rigor, build with clarity, and record decisions honestly.
Zenith is not a promise of a production-ready language.
It is not a startup product, a market replacement, or an attempt to prove that one language should replace another.
You can use Zenith to learn, test ideas, write small programs, and explore how a language toolchain fits together. You should not choose Zenith today because you need a stable production ecosystem.
Zenith follows four practical rules:
- Clarity above clever syntax.
- Explicit behavior before magic.
- Reading before short typing.
- Cognitive accessibility as a requirement, not decoration.
This affects both the language and the tooling:
- blocks should have a predictable visual shape;
- mutation should be visible;
- absence and failure should be separate concepts;
- diagnostics should explain the problem and the next useful action;
- examples should be small;
- docs should reduce mental load;
- future features must prove that they preserve readability.
Main references:
docs/public/history-and-manifesto.mdlanguage/decisions/033-language-philosophy-and-manifesto.mdlanguage/spec/surface-syntax.mdlanguage/spec/diagnostics-model.mdlanguage/spec/formatter-model.mdlanguage/spec/legibility-evaluation.md
The documentation is organized by audience and purpose.
Start here:
docs/DOCS-STRUCTURE.md: how the documentation is organized.docs/public/README.md: public user guides and website content.docs/reference/README.md: short reference material.docs/internal/README.md: planning, reports, and maintenance notes.docs/wiki/: source files for the GitHub Wiki.
Recommended first reading:
docs/public/get-started/installation.mddocs/public/get-started/first-project.mddocs/public/get-started/daily-workflow.mddocs/public/learn/README.mddocs/public/language/core-tour.mddocs/public/cookbook/README.md
Quick reference:
docs/reference/language/syntax.mddocs/reference/language/types.mddocs/reference/language/modules-and-visibility.mddocs/reference/language/errors-and-results.mddocs/reference/cli/zt.mddocs/reference/cli/zpm.mddocs/reference/stdlib/modules.md
Zenith is developed with strong AI assistance.
That is part of the study.
AI helps with:
- documentation review;
- test creation;
- alternative comparisons;
- inconsistency checks;
- implementation speed;
- reports and roadmap organization.
Language decisions, scope cuts, validation gates, and project direction remain human responsibilities. That is why the repository keeps decisions, specs, checklists, and reports.
High-level current surface:
- lexer, parser, AST, semantic analysis, HIR, ZIR, and C emitter;
- project files through
zenith.ztproj; ztCLI for check, build, run, test, fmt, docs, summary, and perf;- single-file mode:
zt run file.ztwithout creating a project; - C runtime with managed values and ARC;
- standard library modules for text, files, JSON, validation, math, random, collections, tests, OS/process, and more;
optional<T>andresult<T,E>;trait,apply, anddyn<Trait>;- namespace-level
public varwith controlled mutation; - documented FFI 1.0 for the current slice;
- local ZPM MVP;
- local LSP/VSCode beta;
- public docs, reference docs, and internal specs.
The current default model uses ARC for heap-managed values.
Summary:
- common managed values use non-atomic reference counting;
- the default path is single-isolate;
- sharing common managed values between threads is not the default;
- boundaries should use copy, transfer, or explicit contracts;
- reference cycles can leak memory in the alpha;
- broad raw-pointer and manual-memory surfaces are future topics, not the current public surface.
References:
runtime/c/README.mdlanguage/spec/runtime-model.mddocs/internal/planning/roadmap-v7.md
Requirements:
- Python 3;
- GCC or Clang on
PATH; - PowerShell, bash, or an equivalent shell.
Build:
python build.pyWindows:
build.batHelp:
./zt.exeYou can run one .zt file without creating a project:
namespace script
import std.io as io
func main() -> result<void, core.Error>
io.write("Hello from Zenith\n")?
return success()
end
./zt.exe run hello.zt
./zt.exe check hello.zt
./zt.exe build hello.ztThe compiler creates a synthetic manifest automatically. The file still needs a
namespace declaration and a main function.
Structure:
my_app/
zenith.ztproj
src/
app/
main.zt
my_app/zenith.ztproj:
[project]
name = "my-app"
kind = "app"
version = "0.1.0"
[source]
root = "src"
[app]
entry = "app.main"
[build]
target = "native"
output = "build"
profile = "debug"my_app/src/app/main.zt:
namespace app.main
import std.io as io
func main() -> result<void, core.Error>
io.write("Hello from Zenith\n")?
return success()
end
Run:
./zt.exe check my_app/zenith.ztproj
./zt.exe build my_app/zenith.ztproj
./zt.exe run my_app/zenith.ztprojMain commands:
zt check [project|zenith.ztproj|file.zt]
zt build [project|zenith.ztproj|file.zt]
zt run [project|zenith.ztproj|file.zt]
zt test [project|zenith.ztproj]
zt fmt [project|zenith.ztproj] [--check]
zt doc check [project|zenith.ztproj]
zt doc show [symbol]
zt summary [project|zenith.ztproj]
zt perf [quick|nightly|scenario]ZPM:
zpm init
zpm add <package>
zpm installGuide:
docs/public/tools/zpm-guide.md
Runnable projects live in examples/.
Main examples:
examples/hello-worldexamples/structs-and-matchexamples/optional-and-resultexamples/multifile-importsexamples/std-jsonexamples/extern-c-puts
Read also:
examples/README.mddocs/public/cookbook/README.md
Broad gate:
python run_all_tests.pyFrequent quick gates:
python build.py
./zt.exe check zenith.ztproj --all --ci
python run_suite.py smoke --no-perfPerformance gates:
tests/perf/gate_pr.ps1
tests/perf/gate_nightly.ps1Roadmaps and checklists live in docs/internal/planning/.
Important entries:
docs/internal/planning/README.mddocs/internal/planning/roadmap-v7.mddocs/internal/planning/checklist-v7.mddocs/internal/planning/borealis-roadmap-v1.mddocs/internal/planning/borealis-checklist-v1.mddocs/internal/planning/borealis-engine-studio-roadmap-v3.mddocs/internal/planning/borealis-engine-studio-checklist-v3.md
Language decisions live in language/decisions/.
Normative specs live in language/spec/.
Latest packaged alpha release:
0.3.0-alpha.3
Local release artifacts for that packaged cut:
docs/internal/reports/release/0.3.0-alpha.3-release-report.mddocs/internal/reports/release/0.3.0-alpha.3-notes.md
Changelog:
CHANGELOG.md
Before 1.0.0, breaking changes may happen between pre-releases.
Zenith uses dual licensing:
- Apache-2.0
- MIT
You may choose either license: Apache-2.0 OR MIT.
Files:
LICENSELICENSE-APACHELICENSE-MIT
Contribution, trademark, and licensing:
CONTRIBUTING.mdTRADEMARK_POLICY.mddocs/public/licensing/README.md
compiler/: frontend, semantic analysis, IR, backend, driver, and tooling.runtime/c/: C runtime and memory model.stdlib/: public standard library and zdocs.language/spec/: normative specification.language/decisions/: decisions with context.docs/public/: user-facing guides.docs/reference/: consultable reference material.docs/internal/: plans, reports, governance, and architecture.docs/wiki/: source files for the GitHub Wiki.examples/: demonstration projects.tests/: behavior, semantic, runtime, formatter, LSP, and perf suites.tools/: helper tools.packages/: official packages in development, including Borealis.
- https://github.com/raillen/zenithlang/wiki
- Local source:
docs/wiki/