# What is Langoost?

> Langoost is a statically-typed scripting language that compiles to bytecode and runs on a fast stack-based VM. Built for backend scripting — like PHP, but with no per-request cold start.

# What is Langoost?

**Langoost** is a statically-typed scripting language that compiles to bytecode
and runs on a fast, stack-based virtual machine. It is designed for **backend
scripting** — similar in spirit to PHP, but without the per-request cold-start
cost. A single long-running process handles every request, and each request
executes in its own isolated VM with a private stack.

Source files use the **`.goost`** extension.

```goost
let name: string = "world"
print("Hello, " + name + "!")
```

```
$ langoost run hello.goost
Hello, world!
```

## Why Langoost

- **No cold start.** The process stays warm. Compiled modules are cached, so
  imports after the first are a map lookup — not a recompile.
- **Familiar, optional typing.** Python-like simplicity with TypeScript-style
  type annotations (`let x: int = 1`). Annotations are documentation today and
  enforced incrementally.
- **Batteries included.** A large standard library ships in the box: `strings`,
  `math`, `json`, `yaml`, `xml`, `http`, `net`, `crypto`, `io`, `exec`,
  `collections`, `thread`, and more.
- **Safe concurrency by construction.** Each HTTP request runs in its own VM
  with a private stack and output buffer. Scripts from different requests never
  share mutable state.
- **Inspectable.** Compile to bytecode and disassemble it with one command to
  see exactly what runs.

## How it runs

Langoost is a bytecode-compiled interpreter. Each script flows through a small,
predictable pipeline:

```
Source  →  Lexer  →  Parser  →  Compiler  →  Bytecode  →  VM  →  Result
```

See **[architecture](/docs/architecture)** for the bytecode format, stack model,
and module cache.

## Where to go next

- **[Install & run](/docs/installation)** — build from source and run your first script.
- **[Language tour](/docs/language-tour)** — the syntax in a few minutes.
- **[Standard library](/docs/stdlib)** — what's available out of the box.
- **[HTTP server](/docs/http-server)** — serve requests with a handler function.
- **[Examples](/examples)** — complete, runnable programs.