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 |