The language
Quick to write. Clear when it grows.
OrviScript combines familiar block syntax, optional type annotations, explicit errors, modules, async I/O, and automatic memory management.
01 · Familiar foundations
Start without fighting the syntax.
Bindings, functions, blocks, conditions, loops, lists, maps, and structs use a compact syntax that should feel recognizable to JavaScript, TypeScript, Python, and Rust developers.
types.orvi
1let port = 30002let label: string = "production"34struct Server {5 host: string6 port: int = 227}
02 · Explicit failure
Errors remain part of the program.
Result<T, E>, Option<T>, exhaustive match, and the ? operator make failure visible without turning every line into error-handling boilerplate.
config.orvi
1fn read_config(path: string) -> Result<string, string> {2 let content = fs.read_text(path)?3 return Ok(content)4}
03 · Async without detached chaos
Concurrency stays inside a scope.
OrviScript includes async functions, futures, async filesystem, process, HTTP and timer APIs, plus scoped spawn, join, cancel, and timeout on a current-thread executor.
status.orvi
1async fn fetch_status() -> Result<string, string> {2 let response = (await http.get(url))?3 return Ok(response.body)4}