The Future of Programming

Power Your AI Applications with Unmatched Performance

Emma is a programming language specifically designed to accelerate AI and machine learning development. Inspired by the intuitive syntax of Swift and engineered for the blazing-fast performance of C, Emma delivers cutting-edge capabilities to meet the demands of modern AI workloads.

Intuitive Syntax

Enjoy a clean, readable syntax without compromising on speed. From prototype to production, your code will be easy to understand and maintain.

Native Async/Await

Effortlessly handle asynchronous operations with native support for async/await, making your code more readable and maintainable.

🛠

Builder Functions

Easily generate hardware-optimized MLIR code at compile time, to optimize performance without sacrificing developer productivity.

🎨

GPU Kernel Support

Easily generate hardware-optimized MLIR code at compile time, to optimize performance without sacrificing developer productivity.

🧠

Low-Level Control, Safe by Default

Develop low-level system software at C speed, with the safety, developer experience and productivity of high-level application development.

🌐

Gradual Migration

Easily migrate your code from other languages (including CUDA) to Emma, with a gradual migration path that makes it easy to adopt Emma's features and syntax.

AI-First Design Philosophy

Emma is purpose-built for artificial intelligence, delivering optimized performance for machine learning training, inference, and real-time applications. From neural networks to high-performance computing, Emma simplifies AI development while maximizing efficiency.

🚀 Native GPU Kernel Support for AI Acceleration

Harness full GPU potential with minimal effort:

kernel func vectorAdd(a: Float[], b: Float[], c: Float[]) { c[id.x] = a[id.x] + b[id.x] }.emma

Emma automatically compiles kernels for CUDA, ROCm, or Vulkan, empowering seamless deployment across NVIDIA, AMD, and more.

Advanced Features for Serious Developers

🛠 Builder Functions for Optimized AI Pipelines

Quickly build custom, hardware-specific MLIR code:

builder func gpuBarrier() { builder.emitOp("gpu.barrier") }.emma

Is emmited at compile time, to create the following MLIR code:

func.func @gpuBarrier() { gpu.barrier }.mlir

Allowing you to create custom assembly code for your specific use-case or hardware, and leverage the full power of your hardware, LLVM and the MLIR ecosystem.

🔥 Support for Async/Await in GPU Kernels

Async/await simplified parrallel and async operations which are all too common in GPU programming. Emma automatically creates the necessary code to support async/await in GPU kernels, without any runtime overhead.

kernel func allocateAndFill(with constant: Float) { // The allocation will begin in the background let mem = gpu.alloc(1024) // do other stuff // If the allocation is not complete, pause here until it is await gpu.fill(await mem, constant) }.emma

General Language Features

Emma offers powerful yet familiar general-purpose capabilities, ensuring developers transition seamlessly from traditional languages:

CUDA Support

To allow for a smooth transition from CUDA to Emma, we support binding existing CUDA code into your Emma program, and automatically generating the necessary bindings to allow you to call your existing CUDA code from Emma the same way you would a native Emma kernel.

Work in progress: We are currently working on transpiling existing CUDA code into Emma, to allow you to translate your code to Emma to take advantage of the full power of Emma, including cross-platform support.

Low-level Engineering

Emma is usable for more than just AI. While it is designed with GPU programming and AI at the core, the language is general-purpose, and designed to be easy to use, yet give you the power to express complex ideas.

Emma is designed to allow you to use it as a low-level language with low-level access, giving you access the full power of your hardware, LLVM and the MLIR ecosystem.

We've developed everything from AI frameworks to kernels, operating systems, display drivers and embedded systems & microcontrollers.