Zap is a general-purpose programming language with .zp source files, indentation-based blocks, optional type checking, explicit modules, structured Result/Option values, and a single binary that creates, checks, builds, tests, and serves your project — no Python, Node.js, Java, or Rust required at runtime.
zap new my_app# hello.zp
let name = "Zap"
say "Hello, " + name
fn greet(who: text) -> text:
return "Hello, " + who
for item in ["web", "ai", "iot"]:
say item
say greet("Zap").zp
Source files
v2.11.18
Release line
3
Platforms
Linux · Windows · macOS
MIT
License
Why Zap
A small, readable language with a single native binary that handles the whole project lifecycle — no hidden application registry, no runtime dependencies to install.
Language at a glance
Zap includes text, numbers, booleans, lists, maps, objects, functions, classes, inheritance, optional annotations, closures, explicit modules, JSON, Result/Option, default and named arguments, bounded asynchronous tasks, and deterministic diagnostics — in a small, readable surface.
zap check verifieslet scores: list<number> = [80, 45, 90]
fn passed(score: number) -> bool:
return score >= 50
for score in scores:
if passed(score):
say "passed: " + str(score)One binary, the whole lifecycle
Zap's CLI is intentionally simple and user-managed. There is no hidden app registry and no Django-style startapp.
zap new my_app # create a complete user-managed Web project
cd my_app
zap check # validate the manifest, modules, and known types
zap build --locked # validate reproducible build inputs
zap test tests # run *_test.zp files
zap dev # start the bounded native development serverGenerate a complete user-managed project: models, functions, ui, routes, middleware, migrations, admin, public, tests.
Validate the manifest, lockfile, entry file, modules, and known type annotations.
Run *_test.zp files in deterministic order, with --filter, --fail-fast, and --json for CI.
Run the bounded native development server on loopback, with routes, validation, and security headers.
Standard library
Thirteen public domains, each with explicit input/output limits, a timeout policy, an error contract, and a determinism class.
Install a single native binary and create your first project in one command. No runtime dependencies to manage.