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 | Canonical Incan code style and formatting rules |
| 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 |
| Testing in Incan | Inline module tests:, assertions, fixtures, markers |
| 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 | Draft | proposed / active | frontend and WebAssembly support |
| RFC 004 | Done | closed / implemented | async fixtures |
| RFC 005 | Done | closed / implemented | Rust Interop |
| RFC 006 | In Progress | proposed / active | Python-style generators |
| RFC 007 | Superseded | closed / superseded | Inline Tests |
| RFC 008 | Done | closed / implemented | Const Bindings |
| RFC 009 | Draft | proposed / active | Numeric type system and builtin type registry |
| RFC 010 | Draft | proposed / active | Python-style tempfile standard library |
| RFC 011 | Done | closed / implemented | Precise Error Spans in F-Strings |
| RFC 012 | Superseded | closed / superseded | JsonValue, enum methods, and enum trait adoption |
| RFC 013 | Done | closed / implemented | Rust Crate Dependencies |
| RFC 014 | Rejected | proposed / active | user-facing runtime error behavior for generated code |
| RFC 015 | Done | closed / implemented | hatch-like tooling (project lifecycle CLI) |
| RFC 016 | Done | closed / implemented | loop and break <value> (Loop Expressions) |
| RFC 017 | In Progress | proposed / active | Validated newtypes with implicit coercion (pydantic-like feel) |
| RFC 018 | Done | closed / implemented | language primitives for testing |
| RFC 019 | Done | closed / implemented | test runner, CLI, and ecosystem |
| RFC 020 | Done | closed / implemented | offline / locked / reproducible builds (Cargo policy + generated project contract) |
| RFC 021 | Done | closed / implemented | Model field metadata and schema-safe aliases |
| RFC 022 | Done | closed / implemented | Namespaced stdlib modules and compiler→stdlib handoff |
| RFC 023 | Done | closed / implemented | Compilable Stdlib & Rust Module Binding |
| RFC 024 | Planned | proposed / active | extensible derive protocol |
| RFC 025 | Done | closed / implemented | multi-instantiation trait dispatch |
| RFC 026 | Superseded | closed / superseded | User-Defined Trait Bridges |
| RFC 027 | Done | closed / implemented | incan-vocab — Library Vocabulary Registration Crate |
| RFC 028 | Done | closed / implemented | trait-based operator overloading |
| RFC 029 | Done | closed / implemented | union types and type narrowing |
| RFC 030 | Draft | proposed / active | std.collections — extended collection types |
| RFC 031 | Done | closed / implemented | Incan Library System — Phase 1 (Local Path Dependencies) |
| RFC 032 | Blocked (by RFC 033) | proposed / active | value enums — StrEnum and IntEnum |
| RFC 033 | Draft | proposed / active | ctx — typed configuration context |
| RFC 034 | Draft | proposed / active | incan.pub — The Incan Package Registry |
| RFC 035 | Done | closed / implemented | First-Class Named Function References |
| RFC 036 | Draft | proposed / active | user-defined decorators |
| RFC 037 | Draft | proposed / active | native web and HTTP stdlib redesign |
| RFC 038 | Done | closed / implemented | Variadic Args and Unpacking (*args / **kwargs) |
| RFC 039 | Draft | proposed / active | race for awaitable concurrency |
| RFC 040 | Done | closed / implemented | Scoped DSL Surface Forms |
| RFC 041 | Done | closed / implemented | First-Class Rust Interop Authoring |
| RFC 042 | Done | closed / implemented | Traits Are Always Abstract |
| RFC 043 | Draft | proposed / active | Rust Trait Implementation from Incan |
| RFC 044 | Draft | proposed / active | Open-Ended Trait Methods |
| RFC 045 | Draft | proposed / active | Scoped DSL symbol surfaces |
| RFC 046 | Draft | proposed / active | Computed properties (property name -> Type) |
| RFC 047 | Draft | proposed / active | Lightweight directed graph types (stdlib) |
| RFC 048 | Done | closed / implemented | Checked contract metadata, Incan emit, and interrogation tooling |
| RFC 049 | Done | closed / implemented | if let and while let pattern control flow |
| RFC 050 | Done | closed / implemented | Enum methods and enum trait adoption |
| RFC 051 | Draft | proposed / active | JsonValue for std.json |
| RFC 052 | Done | closed / implemented | Module Static Storage |
| RFC 053 | Done | closed / implemented | Formatter vertical spacing (three blank-line buckets) |
| RFC 054 | Done | closed / implemented | Explicit call-site generic arguments for function and method calls |
| RFC 055 | Done | closed / implemented | std.fs — pathlib-shaped filesystem APIs with chunked file I/O |
| RFC 056 | Planned | proposed / active | std.io — in-memory byte streams and binary parsing helpers |
| RFC 057 | Done | closed / implemented | @rust.allow(...) — targeted Rust lint suppression for generated code |
| RFC 058 | Planned | proposed / active | std.datetime — temporal values, intervals, and runtime timing |
| RFC 059 | Planned | proposed / active | std.regex — regular expressions, matches, captures, and replacement |
| RFC 060 | Draft | proposed / active | std.uuid — UUID parsing, generation, and formatting |
| RFC 061 | Draft | proposed / active | std.compression — codec-based compression and decompression |
| RFC 062 | Draft | proposed / active | std.archive — archive container creation and extraction |
| RFC 063 | Draft | proposed / active | std.process — process spawning and command execution |
| RFC 064 | Draft | proposed / active | std.encoding — binary-text encoding and decoding utilities |
| RFC 065 | Draft | proposed / active | std.hash — stable hashing primitives for data and integrity workflows |
| RFC 066 | Draft | proposed / active | std.http — Incan-first HTTP client and request/response surface |
| RFC 067 | Draft | proposed / active | std.ci — deterministic CI and automation scripting primitives |
| RFC 068 | Done | closed / implemented | protocol hooks for core language syntax |
| RFC 069 | Draft | proposed / active | list.repeat Helper for Fixed-Length Initialization |
| RFC 070 | Draft | proposed / active | Result Combinators for Result[T, E] |
| RFC 071 | Draft | proposed / active | Pattern alternation in match and if let |
| RFC 072 | Draft | proposed / active | Ambient log Surface with Tracing-Backed Runtime Policy |
| RFC 073 | Draft | proposed / active | environment matrices and toolchain constraints |
| RFC 074 | Draft | proposed / active | template rendering and boilerplate provenance |
| RFC 075 | Draft | proposed / active | starter profiles and capability packs |
| RFC 076 | Draft | proposed / active | project mutation policy and recovery |
| RFC 077 | Draft | proposed / active | workspace and multi-package projects |
| RFC 078 | Draft | proposed / active | tool execution and typed workflow actions |
| RFC 079 | Draft | proposed / active | incan.pub artifact graph |
| RFC 080 | Draft | proposed / active | AI assets, models, prompts, evals, and agent metadata |
| RFC 081 | Draft | proposed / active | Language-shaped DSL embeddings |
| RFC 082 | Draft | proposed / active | Checked API documentation generation |
| RFC 083 | Done | closed / implemented | Symbol and method aliases |
| RFC 084 | Draft | proposed / active | RHS partial callable presets |
| RFC 085 | Planned | proposed / active | Field metadata and type-shaped constraints |
| RFC 086 | Planned | proposed / active | Schema descriptors and adapters |
| RFC 087 | Planned | proposed / active | Reusable field contracts and structural model composition |
| RFC 088 | Draft | proposed / active | Iterator adapter surface |
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 |