# Documentation

## Introduction

- [Introduction](/docs/introduction/) — What Vary is and why it exists

## Getting Started

- [Getting started](/docs/getting-started/) — Install Vary and write your first program
- [Syntax overview](/docs/syntax-overview/) — A guided tour of Vary's syntax and features
- [CLI reference](/docs/cli/) — Commands for running, testing, formatting, and building
- [Configuration](/docs/configuration/) — Project settings via vary.toml
- [Project layout](/docs/project-layout/) — Recommended directory structure for Vary applications
- [Quick reference](/docs/quick-reference/) — Daily command sequences for Vary development
- [FAQ: Frequently asked questions](/docs/faq/) — Common questions about the language and toolchain
- [Glossary](/docs/glossary/) — Plain-English definitions for verification, compiler, and language jargon

## Language

- [Types](/docs/types/) — Primitives, optionals, function types, and type inference
- [Classes and data types](/docs/classes/) — Classes for mutable state, data types for immutable values
- [Generics](/docs/generics/) — Write type-safe code that works with any type
- [Enums and pattern matching](/docs/enums/) — Fixed variant types with payloads and pattern matching
- [Collections and strings](/docs/collections/) — Lists, dicts, sets, and string operations
- [Error handling](/docs/errors/) — Try/except, Result types, and custom error classes
- [Modules and imports](/docs/modules/) — File-based modules, imports, and package structure
- [Concurrency](/docs/concurrency/) — Spawn tasks, manage task groups, and handle cancellation
- [Contracts](/docs/contracts/) — Preconditions and postconditions on functions

## Standard Library

- [Built-in functions](/docs/builtins/) — Functions available everywhere without imports
- [Standard library](/docs/stdlib/) — Importable modules for JSON, crypto, filesystem, HTTP, time, process, env, logging, and more

## Testing

- [Check rules](/docs/check/) — Reference for all vary check diagnostic rules, categories, and auto-fixes
- [Testing](/docs/test-dsl/) — Built-in test blocks with observe assertions and property-based testing
- [CI verification](/docs/ci-verification/) — Set up GitHub Actions for Vary projects with verification profiles

## Installation

- [Linux](/docs/install-linux/) — Install the Vary toolchain on Linux
- [Windows](/docs/install-windows/) — Install the Vary toolchain on Windows
- [varyup](/docs/varyup/) — The toolchain manager that installs and updates Vary
- [Docker](/docs/install-docker/) — Run Vary in a Docker container
- [VS Code](/docs/vscode/) — VS Code extension with syntax highlighting and LSP
- [macOS](/docs/install-macos/) — Install the Vary toolchain on macOS

## Comparisons

- [Python comparison](/docs/python-comparison/) — Side-by-side syntax and semantics comparison with Python
- [Hypothesis comparison](/docs/hypothesis-comparison/) — How Vary's across-based property testing compares to Hypothesis for Python
- [Related languages](/docs/related-languages/) — Languages that influenced Vary's design

## LLMs

- [Writing Vary with LLMs](/docs/writing-vary-with-llms/) — Using AI coding tools to write Vary programs
- [LLM coding checklist](/docs/llm-checklist/) — Do-this / don't-do-this rules for LLM coding assistants writing Vary

## About

- [Varyonic programming](/docs/varyonic/) — The design philosophy of Vary: observable behaviour, typed domains, pure logic, and verification-first architecture
- [Language design choices](/docs/design-choices/) — Trade-offs and rationale behind language decisions
- [The compiler](/docs/compiler/) — How the compiler pipeline turns source into bytecode
- [Performance](/docs/performance/) — Benchmark results comparing Vary to Java and Python
- [Ecosystem](/docs/ecosystem/) — Tools, extensions, and integrations around Vary
- [What we ship](/docs/what-we-ship/) — Distribution formats and what each release includes

## Embedded DSLs

- [Embedded DSLs](/docs/embedded-dsls/) — Compiler-integrated DSLs for SQL, HTTP, structured logging, and JSON decode
- [HTTP services](/docs/http/) — Expose interfaces as HTTP services with typed routes
- [SQLite databases](/docs/sqlite/) — Built-in SQLite support with compile-time typed queries
- [Structured logging](/docs/logging/) — Typed, mutation-aware logging with pluggable sinks
- [JSON decode](/docs/json-decode/) — Typed JSON extraction with path-aware errors, validation predicates, and the ? operator

## Project Management

- [Known Issues](/docs/known-issues/) — Currently known bugs and limitations
- [Versioning](/docs/versioning/) — Monotonic channel versioning instead of semver

## Brand

- [Brand](/docs/brand/) — Logo, wordmark, and visual identity guidelines

## Builtins

- [Templates](/docs/templates/) — Pebble-based template rendering with Vary data types as context
