A drop of
JavaScript.

A strict subset of ECMAScript 2027+ECMAScript is the language specified by ECMA-262. GocciaScript implements a strict subset of that standard, plus selected TC39 proposals., implemented from scratch — with a sandbox-first runtime designed for tinkerers, embedding and AI agents.

curl -fsSL https://gocciascript.dev/install | sh

Latest version 0.7.1 released April 29, 2026

View install scriptOther install options →

Pre-1.0: the API is still in motion — expect breaking changes between any two releases until 1.0.

coffee-typed.ts
press Run or ⌘+Enter
Design principles

Modern JavaScript, without the quirks.#

What remains is a small, predictable language with a .

A subset, not a superset

Modern ECMAScript 2027+ — let/const, arrow functions, classes, modules, async/await.

Sandbox-first

No eval, no global mutable state, GET/HEAD-only fetch, timeouts, and explicit global injection via JSON/TOML/YAML.

Explicit over clever

Named imports only. Strict equality only. Descriptive names over shortcuts — even at the cost of verbosity.

A modern standard library, batteries included

Temporal for dates, and direct module imports of JSON, TOML, YAML, CSV, JSONL and Markdown.

Intentionally excluded

What's left out — and why#

Dynamic code construction and scope-changing syntax are left out to keep execution predictable in embedded runtimes. Coercive or legacy forms such as ==, var, and arguments have explicit alternatives. See Language for the per-feature rationale.

Compatibility mode can opt back into selected syntax such as var, function, and ASI via CLI or config flags.

The runtime is also intentionally not Node.js-compatible — no process, no Buffer, no CommonJS, no ambient filesystem globals.

Runtime globals

Beyond the language: the runtime itself#

Everything ECMAScript gives you, plus first-class structured-data formats — direct module imports of .json, .json5, .toml, .yaml, .csv, .tsv, .jsonl, and .md; runtime parsers for each (markdown imports return the raw text); a capability-gated fetch (GET/HEAD only, explicit allow-listed hosts); and a built-in test runner with a Vitest/Jest-compatible test/describe/expect API.

Compiler pipeline

From source to result.#

One pipeline, five stages. Click a stage to jump into the matching docs chapter — start with Architecture.

Step 1 of 5

Source

Every supported extension is the same language — TS/TSX type annotations are parsed and discarded, and JSX is rewritten to function calls in a preprocessing pass before the lexer ever sees it. There is no separate type-checker.

example.js
const price = 2.5;
const qty = 3;
const total = price * qty;
console.log("total:", total);
Read more in Language