Odin Programming Language

Fall in Love with Programming, all over Again.

ios
Language Commercial

Cue — English by Dialogue

Learn the English phrases people actually say, inside the short conversations where they say them — then keep them by coming back.

Visit project
windows macos
Tools Commercial

Blick

A fully native nonlinear video editor built from scratch for an editing workflow that keeps up.

Visit project
Preview of Vigil
windows linux macos
Tools Commercial

Vigil

A portable, software-rendered desktop workspace for packages, symbols, documentation, and source navigation.

Visit project
windows linux macos
Tools Commercial

LiquiGen

Real-time liquid simulations for water, blood, and slime with instant meshing.

Visit project
windows linux macos
Tools Commercial

EmberGen

Real-time volumetric fluid simulations for fire, smoke, and explosions.

Visit project
windows linux macos
Tools Commercial

IlluGen

Procedural asset generation for noise, flowmaps, meshes, masks, and more.

Visit project
windows linux macos
Tools Commercial

GeoGen

Real-time terrain and planet generation with node-based workflows.

Visit project
Preview of MMT
web
Tools Commercial

MMT

Advanced crypto liquidity and order-flow analysis for professional traders.

Visit project
Preview of Understanding the Odin Programming Language
web
Books

Understanding the Odin Programming Language

A digital book for beginners and intermediate Odin programmers.

Visit project
Preview of ChiAha™ Digital Twin Toolkit
web
Tools Commercial

ChiAha™ Digital Twin Toolkit

Written in Odin. Predicts production line performance and OEE within 1% accuracy, and answers factory-flow questions before you change the line.

Visit project
Preview of OLS
windows linux macos
Tools Open Source

OLS

Language server for Odin with completion, hover, and go-to-definition support across all major editors.

Visit project
Preview of Spall
windows linux macos web
Tools Open Source

Spall

Fast, easy-to-use profiler that runs in your browser and natively on your computer.

Visit project
Preview of Todool
windows linux macos
Tools Open Source

Todool

To-do editor with modal editing, advanced movement, and powerful commands for tracking development cycles.

Visit project
Preview of Diorama Break
Steam To Be Announced

Diorama Break

The special tactics JRPG where you can talk directly to the Hero (whether he wants it or not). Fight through tactical turn-based battles and awkward conversations alike.

View on Steam
Preview of Fish Lab
Steam Coming Sep 14

Fish Lab

An upcoming incremental game about collecting fish, making discoveries, and upgrading your lab — synced to music.

View on Steam
Preview of Little Backpack
Steam Coming soon

Little Backpack

A cozy inventory management game about packing a small backpack, made with Odin and raylib.

View on Steam
Preview of Daisy Trains
Steam Coming soon

Daisy Trains

A vibrant 3D train puzzle game about building railways, managing trains, and delivering coloured cargo.

View on Steam
Preview of Volt Deck
Steam Released

Volt Deck

A deckbuilding roguelite about hacking terminals and building powerful card combinations, made with Odin and raylib.

View on Steam
Preview of Quilt
Steam In development

Quilt

An in-development puzzle game that combines nonograms, Minesweeper, and jigsaw mechanics, made with Odin and raylib.

View on Steam
Preview of Terrafactor
Steam Released

Terrafactor

You have one job — feed The Hole. Harvest the land with your hands, build machines to do it for you, craft more advanced technology... then feed it to The Hole.

View on Steam
Preview of Relative Frame
Steam Released

Relative Frame

Explore space in a hand crafted, physics based universe, with immersive sound and atmosphere. Fight and board ships, collect rare cargo, and upgrade your ship.

View on Steam
Preview of 2Deez
Steam Released

2Deez

A simple fighting game distilling the core essence of 3D fighting games! And yet, it's 2D...? Fight through a story mode featuring a cursed rat, a cotton candy monster, and evil wizards.

View on Steam
Preview of DUMMS!
Steam Released

DUMMS!

A fast-paced action game about dummies causing chaos, developed with Odin and Sokol.

View on Steam
Preview of Solar Storm
Steam Released

Solar Storm

A retro turn-based artillery shooter, built from scratch in Odin and inspired by Worms and Scorched Earth.

View on Steam
Preview of CAT & ONION
Steam Released

CAT & ONION

A cozy, whimsical short cat adventure written entirely in Odin with raylib.

View on Steam

The Data-Oriented Language for People Who Ship

Software from the Showcase and games shipping on Steam, all built with Odin.

See the Showcase See the Games

Join the Odin community on Discord.

Programming Done Right

Odin is a general-purpose programming language with distinct typing built for high performance, modern systems and data-oriented programming.

Odin is the C alternative for the Joy of Programming.

hellope.odin
package main

import "core:fmt"

main :: proc() {
	greetings := []string{"Hellope", "Bonjour", "こんにちは"}
	for greeting, i in greetings {
		fmt.println(i, "=", greeting)
	}
}
package main

import "core:fmt"

main :: proc() {
	a := [3]f32{1, 2, 3}
	b := [3]f32{4, 5, 6}

	fmt.println(a * b) // [4, 10, 18]  component-wise
	fmt.println(a + b) // [5, 7, 9]
	fmt.println(a.zyx) // [3, 2, 1]    swizzle
}
package main

import "core:fmt"

main :: proc() {
	nums := make([]int, 3)
	defer delete(nums) // runs when main returns

	nums[0], nums[1], nums[2] = 1, 2, 3
	fmt.println(nums)
}
package main

import "core:fmt"

Permission  :: enum {Read, Write, Execute}
Permissions :: bit_set[Permission]

main :: proc() {
	p: Permissions = {.Read, .Write}
	fmt.println(.Execute in p)  // false
	fmt.println(p + {.Execute}) // Permissions{Read, Write, Execute}
}
package main

import "core:fmt"

Suit :: enum {Hearts, Diamonds, Clubs, Spades}

main :: proc() {
	symbols := [Suit]rune{
		.Hearts   = '♥',
		.Diamonds = '♦',
		.Clubs    = '♣',
		.Spades   = '♠',
	}
	fmt.println(symbols[.Spades]) // ♠
}
package main

import "core:fmt"

Pos :: struct { line, col: int }

Token :: struct {
	using pos: Pos,
	text: string,
}

main :: proc() {
	tok := Token{Pos{3, 12}, "hello"}
	fmt.println(tok.line, tok.col) // reach in without .pos
	fmt.println(tok.text)
}
package main

import "core:fmt"

main :: proc() {
	xs := [5]int{10, 20, 30, 40, 50}

	fmt.println(xs[:])   // [10, 20, 30, 40, 50]  whole array as a view
	fmt.println(xs[1:4]) // [20, 30, 40]
	fmt.println(xs[2:])  // [30, 40, 50]
	fmt.println(xs[:3])  // [10, 20, 30]
}
package main

import "core:fmt"

main :: proc() {
	grid := [3][3]int{
		{1, 2, 3},
		{4, 5, 6},
		{7, 8, 9},
	}

	search: for row, y in grid {
		for val, x in row {
			if val == 5 {
				fmt.printfln("found at (%d, %d)", x, y)
				break search
			}
		}
	}
}
package main

import "core:fmt"

divmod :: proc(a, b: int) -> (quotient, remainder: int) {
	return a / b, a % b
}

main :: proc() {
	q, r := divmod(17, 5)
	fmt.println(q, r) // 3 2
}
package main

import "core:simd"

// Vectorized check that a utf8 buffer is all ASCII
is_ascii :: proc(utf8: []#simd[16]u8) -> bool {
	acc: #simd[16]u8
	for chunk in utf8 {
		acc |= chunk // fold every set of code units into the result
	}
	return simd.reduce_max(acc) < 0x80 // every lane in the ASCII range?
}
package main

import "core:fmt"

rdtsc :: asm() -> (lo, hi: u32) [
	lo = %eax,
	hi = %edx,
] {
	rdtsc
}

main :: proc() {
	lo, hi := rdtsc()
	cycles := (u64(hi) << 32) | u64(lo)
	fmt.println("cycle counter:", cycles)
}

The Odin Principles

Simplicity

Odin has been designed for readability, scalability, and orthogonality of concepts. Simplicity is complicated to get right, clear is better than clever.

High Performance

Odin allows for the highest performance through low-level control over the memory layout, memory management and custom allocators and so much more.

For Modern Systems

Odin is designed from the bottom up for the modern computer, with built-in support for SOA data types, array programming, and other features.

Joy of Programming

We got into programming because we love to solve problems. Why shouldn't our tools bring us joy whilst doing it? Enjoy programming again, with Odin!

Batteries Included

Odin comes with high quality packages out of the box in its core library.

Odin provides official libraries for all major graphics APIs: OpenGL, Vulkan, Direct3D11, Direct3D12, Metal, wgpu, and WebGL 1 & 2.

Odin additionally brings you officially maintained bindings for popular libraries such as SDL2, GLFW, raylib, microui, miniaudio and much more, in its vendor library!

Simple DirectMedia Layer raylib OpenGL WebGL Vulkan Metal DirectX gpu microui miniaudio

All product names, logos, and brands are property of their respective owners.

The Odin Community

Odin is Open Source

Odin is an open source programming language and contributions from the community are welcome! If you want to help out, check the issue tracker for open issues that may interest you. Those labelled help wanted are in particular need of community assistance right now.

Join the Odin Discord and help us bring the joy of programming in Odin to all. 🥳

Thank You!



GitHub Sponsors

Thank you to everyone who sponsor Odin.