A focused language with
serious batteries.
AScript reads like JavaScript, adds gradual types and structured concurrency, and ships a Go-class standard library — HTTP, WebSockets, SQLite, crypto, a terminal UI — in a single Rust binary.
Simple to hold in your head. Hard to outgrow.
Four priorities, in strict order: simplicity, safety, familiarity, performance. The core stays tiny; the library does the heavy lifting.
Familiar syntax
Braces, fn, arrows, template strings, for…of. If you read JavaScript, you already read AScript.
Gradual contracts
Add type annotations where they pay off. They're checked at runtime as contracts — not erased, not in your way.
Errors as values
No exceptions. Fallible calls return [value, err]; the ? operator propagates. Bugs panic — loudly.
Async without colors fights
A single-threaded event loop. await any I/O; synchronous code pays nothing. No data races, ever.
Batteries included
JSON, regex, SQLite, crypto, compression, a modern HTTP client, WebSockets, a TUI — all in the box.
Real tooling
A runner, REPL, formatter, test runner, and a language server — one ascript binary, no toolchain to assemble.
Twenty-eight modules, one import away.
Rust's crate ecosystem makes high-quality batteries cheap. Each std/* module is
native Rust over AScript's value model.
A multi-paradigm core, a Go-class standard library.