Skip to content

v0.1.0

Choose a tag to compare

@0xErwin1 0xErwin1 released this 11 Jan 09:41
· 1573 commits to main since this release

Ignis v0.1.0 Release Notes

Release Date: January 2026

This is the first release of the Ignis compiler (ignisc.rs), a from-scratch rewrite in Rust that compiles Ignis source code to C, then to native executables via GCC.

Highlights

  • Full compilation pipeline: Ignis → AST → HIR → LIR → C → executable
  • Multi-module system with import/export support
  • Static type system with inference and explicit annotations
  • Borrow checker for reference safety

Language Features

Types

  • Integers: i8, i16, i32, i64, u8, u16, u32, u64
  • Floats: f32, f64
  • boolean, char (Unicode code point, 4 bytes), string, void
  • Arrays with compile-time bounds checking
  • References (&T, &mut T) and pointers (*T, *mut T)

Expressions

  • Arithmetic, comparison, logical, and bitwise operators
  • Compound assignment (+=, -=, *=, /=, etc.)
  • Shift operators (<<, >>)
  • Type casts (expr as Type)
  • Char literals with escape sequences and Unicode ('\u{XXXX}')

Control Flow

  • if/else if/else
  • while and for loops
  • break and continue
  • return

Declarations

  • Functions with typed parameters and return types
  • let / let mut variable bindings
  • const compile-time constants
  • extern declarations for FFI
  • export for module-level visibility

Modules

  • import x, y from "path" syntax
  • Automatic dependency resolution and topological compilation
  • Standard library with std::io, std::string, std::math

Compiler Features

  • Semantic analysis: name resolution, type checking, borrow checking
  • Bidirectional type inference: literals adapt to expected types
  • Const evaluation: compile-time evaluation of constant expressions
  • Diagnostics: detailed error messages with source locations
  • Debug flags: --dump-ast, --dump-hir, --dump-lir, --dump-types, --dump-defs
  • Optimizations: -O flag passes optimization to GCC

CLI

ignis build <file.ign>           # Compile to executable
ignis build <file.ign> --emit-c  # Output C code only
ignis build <file.ign> -O        # Enable optimizations
ignis build-std                  # Build standard library

Known Limitations

  • Borrow checker does not track mutations through compound expressions (arr[i], *ptr, field access)
  • No generics, traits, or enums yet
  • No closures or first-class functions
  • Runtime bounds checking is limited

Documentation

  • docs/LANGUAGE_REFERENCE_v0.1.md - Complete language reference
  • docs/ABI_v0.1.md - C ABI and type mappings

Full Changelog: https://github.com/Ignis-lang/ignis/commits/v0.1.0