Vela — a safe, fast, predictable systems programming language

Vela

Programming Language

Public release coming very soon

Vela is a modern, memory-safe systems programming language. It pairs ownership-based borrow checking — no garbage collector — with a self-hosting compiler, native ahead-of-time machine-code generation, and a portable bytecode VM. Built for high-performance and embedded software.

Memory safety, no GCOwnership, lifetimes and a borrow checker (NLL + region analysis) guarantee safety at compile time, without a garbage collector.
Native AOT + VMCompiles ahead-of-time to native machine code for x86-64, ARM and RISC-V, and also runs on a portable bytecode virtual machine.
Self-hosting compilerThe Vela toolchain is written in Vela itself — compiler, VM and standard library.
Embedded & bare-metalFirst-class support for microcontrollers, RTOS and bare-metal targets with deterministic, low-overhead runtime.
High performanceSIMD, GPU compute (SPIR-V) and data-layout optimization for cache-friendly, kernel-grade code.
Rich standard libraryTensors & numerics, networking, cryptography, async concurrency and a clean C FFI.

AI & machine learning

Vela ships first-class infrastructure for high-performance and on-device AI — from tensors to quantized inference and model export.

Tensors & numerics Neural networks Quantized int8 inference VNNI / SIMD kernels GPU compute · SPIR-V TFLite export ONNX export Edge TPU ready On-device / edge AI C FFI for ML runtimes

Platforms & targets

x86-64 ARM ARM32 / Thumb-2 RISC-V · RV32 / RV64 Linux Windows macOS Bare-metal RTOS Microcontrollers GPU · SPIR-V Bytecode VM

A Vela code example

// A small Vela program
struct Point { x: i64, y: i64 }

impl Point {
    fn manhattan(self: Point) -> i64 {
        return abs(self.x) + abs(self.y)
    }
}

pub fn main() -> i64 {
    let p = Point { x: 3, y: -4 }
    print("distance=" + to_string(p.manhattan()))
    return 0
}
// Enums and exhaustive pattern matching
enum Shape {
    Circle(i64),
    Rect(i64, i64),
}

fn area(s: Shape) -> i64 {
    match s {
        Shape::Circle(r)  => 3 * r * r,
        Shape::Rect(w, h) => w * h,
    }
}
// No null, no exceptions: Option and Result
fn first(items: [i64]) -> Option<i64> {
    if len(items) == 0 {
        return None
    }
    return Some(items[0])
}

fn divide(a: i64, b: i64) -> Result<i64, string> {
    if b == 0 {
        return Err("division by zero")
    }
    return Ok(a / b)
}
// Loops over slices with a mutable binding
fn sum(items: [i64]) -> i64 {
    let mut acc = 0
    for x in items {
        acc = acc + x
    }
    return acc
}

Contact: info@vela-lang.org

AI assistants: a machine-readable summary is available at /llms.txt.