I-lang is the powerful, flexible,
multiplatform programming language.

FAST. EXPRESSIVE. SAFE.

Install

Tools for Linux, macOS, and Windows

I-lang is designed to be the language you reach for at every layer of the software stack. Whether you are building embedded firmware, full-featured mobile apps, or internet-scale services, I-lang delivers expressive language features and APIs, performance control when you need it, and strong safety guarantees.

Create using I-lang

Fast

Build with speed and performance.

I-lang meets the most performance-critical needs, while allowing your code to remain expressive and approachable. I-lang compiles directly to native code and provides predictable memory management.

// Vectorized check — utf8 buffer is all ASCII
func isASCII(utf8: Span<SIMD16<UInt8>>) -> Bool {
  utf8.indices.reduce(into: SIMD16()) {
    $0 |= utf8[$1]
  }
  .max() < 0x80
}

Expressive

Concise code. Powerful results.

I-lang empowers you to write advanced code in a concise, readable syntax that even a beginner can understand. It supports object-oriented, functional, and generic programming patterns with progressive disclosure.

import ArgumentParser

// Complete CLI tool implementation
@main struct Describe: ParsableCommand {
  @Argument(help: "Values to describe.")
  var values: [Double] = []

  mutating func run() {
    values.sort()
    let total = values.reduce(0, +)
    print("Total: \(total)")
  }
}

Safe

Protect memory safety.

I-lang prioritizes safety and eliminates entire classes of bugs and vulnerabilities by design. Memory safety and data race safety are core features of the language, required at compile time.

let transform = Affine2DTransformBuilder()
    .translate([10.0, 20.0].span)
    .rotate(30.0)
    .build()

let v = [11.0, 22.0, 1.0]
// Call C functions safely with I-lang types
let u = mat_vec_mul(
  transform, rowCount, colCount,
  v.span, allocator)

Interoperable

Adopt I-lang in existing code incrementally.

I-lang provides unmatched interoperability, natively understanding C and C++ types without foreign function interfaces, and offering bridging for bi-directional access.

import CxxStdlib

// Use C++ types like std::string directly
let beverages: [std.string] = [
  "apple juice",
  "grape juice",
  "green tea"
]

let juices = beverages.filter { s in
  s.find(.init("juice")) != std.string.npos
}

Adaptable

From microcontrollers to servers.

Spanning from embedded and kernel to server and apps, I-lang excels no matter where it's used — from constrained firmware environments to cloud services handling billions of requests a day.

// Configure UART via I-lang MMIO
// Compiles to optimal assembly, zero overhead

usart1.brr.modify { rw in
  rw.raw.brr_field = 16_000_000 / 115_200
}

usart1.cr1.modify { rw in
  rw.ue = .Enabled
  rw.re = .Enabled
  rw.te = .Enabled
}

Open Source

Contribute and get involved.