I-lang is the powerful, flexible,
multiplatform programming language.
FAST. EXPRESSIVE. SAFE.
InstallTools 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 }