Skip to content

Incan Documentation

New here? Start with: Start here.

Tooling & Setup

How to install, configure, and use Incan Tooling.

Document Description
Getting Started Installation and first steps
Editor Setup IDE configuration and syntax highlighting
Language Server LSP for diagnostics, hover, and go-to-definition
Formatting Code formatter (incan fmt)
Testing Test runner (incan test)

Language Guide

How to write Incan code: Language.

Document Description
the Book The Incan Book (Walks you through the Basics from a-z)
Error Messages Understanding and fixing compiler errors
Error Handling Result, Option, and the ? operator
File I/O Reading, writing files and path handling
Async Programming Async/await with Tokio
Derives & Traits Derive macros and trait system
Scopes & Name Resolution Block scoping, shadowing, and how names are resolved
Imports & Modules Module system, imports, and built-in functions
Rust Interop Using Rust crates directly from Incan
Web Framework Building web apps with Axum

Derives Reference

Document Description
String Representation Debug and Display
Comparison Eq, Ord, Hash
Copying & Default Clone, Copy, Default
Serialization Serialize, Deserialize
Custom Behavior Overriding derived behavior

RFCs (Request for Comments)

Design proposals for upcoming features are recorded in the form of RFCs.

Tip: press Esc to clear.

RFC Status Track Title
RFC 000 Done closed / implemented Incan Core Language RFC (Phase 1)
RFC 001 Superseded closed / superseded Test Fixtures
RFC 002 Superseded closed / superseded Parametrized Tests
RFC 003 Blocked proposed / active Frontend & WebAssembly Support
RFC 004 Draft proposed / active Async Fixtures
RFC 005 Draft proposed / active Rust Interop
RFC 006 Planned proposed / active Python-Style Generators
RFC 007 Superseded closed / superseded Inline Tests
RFC 008 Done closed / implemented Const Bindings
RFC 009 Planned proposed / active Sized Integer Types & Builtin Type Registry
RFC 010 Draft proposed / active Temporary Files and Directories
RFC 011 Planned proposed / active Precise Error Spans in F-Strings
RFC 012 Draft proposed / active JsonValue Type for Dynamic JSON
RFC 013 Draft proposed / active Rust Crate Dependencies
RFC 014 Draft proposed / active Error Handling in Generated Rust Code
RFC 015 Planned proposed / active Hatch-like Tooling (Project Lifecycle CLI)
RFC 016 Planned proposed / active loop and break <value> (Loop Expressions)
RFC 017 Planned proposed / active Validated newtypes with implicit coercion (pydantic-like feel)
RFC 018 Draft proposed / active Language Primitives for Testing
RFC 019 Draft proposed / active Test Runner, CLI, and Ecosystem

Compiler & Contributing

For contributors

Architecture and compiler-internals docs are primarily for contributors. If you’re learning the language, start with the Book and the Language Guide instead of RFCs.

Docs for contributors working on the compiler and language evolution:

Document Description
Roadmap Tracks implementation status and near-term planning
RFCs Design proposals for upcoming features are recorded in the form of RFCs
Contributing Contributor documentation landing page
Compiler Architecture Compilation pipeline, module layout, and internal stages
Extending the Language When to add builtins vs new syntax; end-to-end checklists
Contributing Index Contributor documentation landing page