# Varyk > Build backend services simply. Ship Rust binaries. Varyk is an experimental language for APIs, workers, and microservices that compiles to Rust, with Rust's safety and Go's simplicity. Varyk is experimental and pre-1.0: syntax, diagnostic codes, and command-line flags may still change. Every page below is also available as Markdown at the linked address. ## Docs - [Varyk](https://varyk.com/index.md): Build backend services simply. Ship Rust binaries. Varyk is an experimental language for APIs, workers, and microservices that compiles to Rust, with Rust's safety and Go's simplicity. - [Why Varyk?](https://varyk.com/why/index.md): Rust's speed and safety, Go's simplicity, and the Rust ecosystem behind it, with no runtime and no lock-in. - [Install](https://varyk.com/install/index.md): How to install the Varyk compiler, check that it works, and set up your editor. - [Learn](https://varyk.com/learn/index.md): Getting started with Varyk, the language reference, and the example programs. - [Getting started](https://varyk.com/learn/getting-started/index.md): Write, check, build, and run a first Varyk program. - [Language reference](https://varyk.com/learn/reference/index.md): Everything Varyk accepts today: files, packages, modules, and `use`, types, literals, statements, expressions, closures, chains, matching, loops, passing errors on, logging, tests, printing, functions and borrowing, async functions and tasks, attributes, the standard error, JSON, configuration, strings, time, ids, and bytes, HTTP routes and hooks, calling Rust, a facade for a package, Varyk packages that use Varyk packages, the command line, editors, and error codes. - [Examples](https://varyk.com/learn/examples/index.md): The example programs from milestones 1, 2, 4, 5a, 5b1, and 5c, and the packages from milestones 3, 5a, and 5b2, with their expected output. ## Project - [Tools](https://varyk.com/tools/index.md): The varyk command line, packages and publishing, diagnostics, editors and the language server, and the tooling planned for later milestones. - [Design](https://varyk.com/design/index.md): The principles behind Varyk, in priority order, with its non-goals and stability policy. - [Roadmap](https://varyk.com/design/roadmap/index.md): The milestones for the Varyk compiler, without dates. - [Community](https://varyk.com/community/index.md): Where Varyk is developed and discussed, and how to get in touch. - [Blog](https://varyk.com/blog/index.md): News about the Varyk language and compiler. ## Blog - [Varyk 0.9.0: errors in your editor](https://varyk.com/blog/varyk-0-9-0/index.md): varyk lsp brings the compiler's errors and fixes into VS Code, Zed, and any editor that speaks the Language Server Protocol. A package's varyk-std line now names the oldest varyk it needs, so a new varyk no longer breaks published packages. Rust 1.88 is the minimum. - [varyk-mongo 0.1.0: MongoDB for Varyk](https://varyk.com/blog/varyk-mongo-0-1-0/index.md): varyk-mongo, the official Varyk package for MongoDB, over the official mongodb crate: typed documents from your structs, queries in MongoDB's own syntax with the values beside the text, native BSON dates, ids, and binaries, aggregation, indexes, and transactions. With it, varyk-sql 0.4.0 takes $1 on every database, Varyk 0.8.1 adds what the package needs, and 0.8.2 adds varyk add mongo. - [Varyk 0.8.0: time, ids, and bytes](https://varyk.com/blog/varyk-0-8-0/index.md): Milestone 5c adds three built-in types: Time, a point in time in UTC; Uuid, time-ordered by default; and Bytes, base64 in JSON. varyk-sql 0.3.0 stores them as native columns, and varyk-http 0.2.0 reads times and ids from routes and sends and receives bytes. - [varyk-http 0.1.0: HTTP for Varyk](https://varyk.com/blog/varyk-http-0-1-0/index.md): varyk-http, the official Varyk package for HTTP, ships with Varyk 0.7.0: a server on axum and tower-http whose routes the compiler checks, safe defaults, errors that never leak, hooks, WebSockets, server-sent events, uploads, a client on reqwest, metrics, and tests without a port. - [Varyk 0.7.0: routes the compiler checks](https://varyk.com/blog/varyk-0-7-0/index.md): Milestone 5b4 is the compiler side of the HTTP package varyk-http: routes and hooks on its app, each route checked against its handler by varyk check, an optional HTTP status on Error, app.request for tests, two new facade shapes, and varyk add http sql. varyk-http 0.1.0 and varyk-sql 0.2.0 ship with it. - [varyk-sql 0.1.0: SQL databases for Varyk](https://varyk.com/blog/varyk-sql-0-1-0/index.md): varyk-sql, the official Varyk package for SQLite, Postgres, and MySQL on sqlx, ships with Varyk 0.6.0: connect, migrate, query into your structs, write in transactions, and test on in-memory SQLite, with the query text literal, so a query built from input does not compile. - [Varyk 0.6.0: facades for packages](https://varyk.com/blog/varyk-0-6-0/index.md): Milestone 5b3 lets a package's .rs facade read a result into whatever type the caller names, take any number of values, and take only text written in the program, and adds pub use and varyk add sql: the compiler side of the database package varyk-sql, whose first release ships with it. - [Varyk 0.5.0: packages](https://varyk.com/blog/varyk-0-5-0/index.md): Milestone 5b2 lets Varyk code use a Varyk package by its key in Cargo.toml, to any depth, builds every package from its .vr sources without running a build script or shipped Rust, removes build.rs, the stub, and varyk emit, and redraws milestone 5 around packages. - [Varyk 0.4.0: async functions and tasks](https://varyk.com/blog/varyk-0-4-0/index.md): Milestone 5b1 adds async fn and .await on a built-in multi-threaded runtime, calls that start tasks without a spawn, Task::all and Task::all_settled, Shared for a value many tasks read, and time::sleep. - [Varyk 0.3.0: data, config, logging, and tests](https://varyk.com/blog/varyk-0-3-0/index.md): Milestone 5a adds varyk-std and a built-in Error, JSON with attributes, configuration from the environment and .env, logging, and varyk test, and makes parse return a Result. - [Varyk 0.2.0: closures, iterators, and patterns](https://varyk.com/blog/varyk-0-2-0/index.md): Milestone 4 adds closures as the arguments of built-in calls, iterator chains, if let and while let, nested, literal, and range patterns, HashMap, as, derived clone and ==, and getters that return part of their value with no copy. - [Varyk 0.1.0: packages and interop](https://varyk.com/blog/varyk-0-1-0/index.md): Milestone 3 makes Varyk code a Cargo package: Cargo dependencies through .rs facades, nested modules, use, private fields, Rust structs and enums imported from .rs files, and publishing to crates.io. - [Varyk 0.0.2: enums, matching, methods, and collections](https://varyk.com/blog/varyk-0-0-2/index.md): Milestone 2 makes Varyk able to express a real small program: enums and match, for, methods, Option, Result, Vec, ?, and format!, with the borrow-by-default rules unchanged. - [Announcing Varyk 0.0.1](https://varyk.com/blog/announcing-varyk/index.md): The first release of Varyk, a language for backend services that compiles to Rust: a compiler that proves the approach on six small programs and generates readable Rust. - [Why I built Varyk](https://varyk.com/blog/why-i-built-varyk/index.md): The languages I built backend services in before Varyk, what each of them got right, and the one thing none of them gave me. ## Policies - [Security](https://varyk.com/security/index.md): How to report a security vulnerability in Varyk or this website. - [License](https://varyk.com/license/index.md): Varyk and this website are licensed under MIT or Apache-2.0, at your option. - [Privacy](https://varyk.com/privacy/index.md): What this website collects: no cookies, no analytics, no accounts.