/awesome-odin

A collection of awesome Odin libraries, bindings, software and resources 🧙‍♂️✨

logo

A collection of awesome Odin libraries, software and resources.

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

A star (⭐) means the resource is exceptionally good.

Note

Some of the lists are based on the Odin Libs Wiki Page

Important

Many commonly used bindings are already included in the Vendor Collection which comes with the compiler

Contents

Other Lists

Packages

Libraries

List of libraries implemented in Odin.

Note

Resources have tags based on their topics for easier CTRL+F search

Gamedev

Name Description License Tags
LBP Serialization Easy-to-use LBP binary serialization utility MIT Gamedev, Serialization, Assets
GL Font A library for quickly setting up font rendering Missing OpenGL, Graphics, Font
jobs Job system MIT Gamedev
glcache Cached OpenGL calls None OpenGL, Graphics, Gamedev
Marshmallow engine WIP Game Engine written in pure Odin None Gamedev, Engine

Formats

Name Description License Tags
Vox loader Simple loader for MagicaVoxel's .vox models MIT Gamedev, Assets
LDtk utility Simple loader for LDtk files. LDtk is a moder 2D level editor from the creator of Dead Cells MIT Gamedev, Assets, Tools
File Formats Odin implementations of various file formats - ISO, EBML BSD-3 Format
INI Parser .INI file parser MIT Format
PDB reader A library for reading .pdbs and dumping Windows stacktraces BSD-2-Clause Debugging, Auxiliary

Networking

Name Description License Tags
Odin HTTP A HTTP/1.1 server & client implementation for Odin purely written in Odin (besides OpenSSL) MIT Webdev, Server, Networking
HTTP Simple Odin http(s) client BSD-3 Webdev

Webdev

Name Description License Tags
GraphQL Parser GraphQL language parser MIT Webdev

Data structures

Name Description License Tags
Red/Black Tree Red Black Tree Implementation None Datastructure
Piece Table Piece-Table implementation written in Odin, and comes with unlimited linear undo & redo capability MIT Datastructure
Shared Memory Queue Thread safe lock free ring buffers that seek to minimize false sharing, MPMC and SPMC None Datastructure, Multithreading

Other

Name Description License Tags
Simple History A simple undo / redo history MIT UI, Gamedev, Tools, Editor
ADS1256 driver Driver for Ti ADS1256 MIT Embedded
Mani Lua bidirectional bindings generator None Lua, Generator
odin-build Build system for Odin None Auxiliary, Tooling
Snowflake Twitter Snowflake UID generation MIT UID
App Version Generate and display application version information MIT Tools, Utility, CLI
CLI Argument Parser Using types to specify how command line arguments should be parsed None Utility, CLI, Parser
Odin-style CLI Argument Parser A command-line argument parser mimicking the Odin compiler's style MIT CLI, Utility, Parser
Terminal Color Simple, easy to use terminal colors MIT CLI, Utility
Back Cross-platform back/stack traces for assertion failures, the tracking allocator, and segfaults MIT Debugging, Auxiliary

Built-in

This is a list of notable libraries which are distributed along with the Odin compiler. For a full list head over to Official Package Documentation.

Base

Base packages are required by the compiler

Name Description
builtin Contains Odin's predeclared identifiers, like basic types, procedures like len, size_of etc and many built-in constants like ODIN_DEBUG
intrinsics Contains Odin's compiler-level intrinsics, including many low-level procs like atomics, SIMD, X86 or WASM intrinsics and compile-time type reflection
runtime This is the runtime code required by the compiler. Contains definitions of context, allocator, logger, map, dynamic array, type_info etc. and implements things like appending to a dynamic array

Core

The core packages implement most of the common features you need while working with Odin

Name Description
fmt String formatting and console printing
os Cross-platform OS interface. Read files, change CWD, etc.
strings Common string operations
math Common math procedures
math/linalg Linear algebra package for 2D and 3D math with vectors, matricies and quaternions
mem Common memory operations and allocators
encoding/json Implements a JSON reader/writer, including a way to automatically marshal (serialize) structs
log Implements a console and a file logger
sort Implements sorting algorithms
sync Synchronization primitives for multithreading
thread Create and manage OS threads
reflect Runtime type reflection
path/filepath File path string operations

Vendor

Vendor packages are commonly-used third-party libraries distributed along with the compiler

Name Description Tags
raylib Bindings for Raylib, a simple and easy-to-use library to enjoy videogames programming Gamedev, Graphics
glfw Bindings for GLFW, a multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop Gamedev, Graphics
lua Bindings for Lua, a powerful, simple and embeddable scripting language Lua
fontstash Odin implementation of Fontstash - a lightweight online font texture atlas builder Gamedev, Text, Graphics
miniaudio Bindings for Miniaudio, a lightweight audio library Audio, Gamedev
microui Odin implementation of microui, a tiny immediate-mode UI library UI, Tools, ImGui, Gamedev
directx/d3d11 D3D11 bindings Gamedev, Graphics, 3D
cgltf Bindings for a GLTF asset loader Gamedev, Graphics, Format, Assets
darwin/Metal Bindings for Metal API Gamedev, Graphics, 3D
stb Bindings for libs from STB Format, Gamedev, Assets, Utility
sdl2 Bindings for SDL2, a cross-platform development library Gamedev, Graphics, Audio, Networking

Bindings

List of Odin bindings to C/C++ libraries.

Name Description License Tags
Dear Imgui Generated Dear ImGui bindings using dear_bindings. About Dear ImGui is a bloat-free Graphical User interface for C++ with minimal dependencies MIT UI, ImGui, Gamedev, Tools, C++, Cross Platform
Tracy Bindings for the Tracy profiler BSD-2-Clause Gamedev, Performance
ufbx A binding for ufbx, a simple FBX loader library Unlicense Gamedev, Assets, 3D
OpenAL A binding for OpenAL, a cross-platform 3D audio API MIT Gamedev, Audio
Termbox A binding for termbox, a text-based user interface alternative to ncurses MIT UI
Rift A binding for the Oculus Rift SDK for VR Unlicense Gamedev, VR
librg A binding for librg, MMO networking library Missing Gamedev, Server, Networking
XInput A binding for XInput, a windows input library MIT Gamedev, Windows, Input
zeromq A binding for ZeroMQ, An open-source universal messaging library Missing Networking
ObjC Bindings for the objc 2.0 runtime MIT Darwin
LibClang Bindings for libClang for Odin None
Freetype A binding for FreeType MIT Graphics, Text, Gamedev
CUE SDK Bindings for the Corsair CUE SDK. Developers can use the iCUE SDK to access CORSAIR devices, enabling them to control device LEDs and create custom lighting experiences. Unlicense
bcm2835 Bindings for BCM2835 Broadcom chip/raspberry pi1/2/3/4 MIT Embedded
Mimalloc Bindings for mimalloc MIT Memory, Allocator
MySql Bindings for MySQL Client MIT Database, Webdev, SQL
PostgreSQL Complete & documented bindings for libpq (PostgreSQL) MIT Database, Webdev, SQL
LZ4 Bindings for LZ4, an extremely fast lossless compression library BSD 2 Clause Compression, Gamedev
FMOD Bindings for FMOD MIT Gamedev, Audio
Steamworks Bindings for Steamworks SDK MIT Gamedev
libbfd Bindings for libbfd GPLv2
EFSW Bindings for the [Entropia file system watcher(https://github.com/diegostamigni/efsw) Unknown Files
Nuklear Bindings for Nuklear, s single-header ANSI C immediate mode cross-platform GUI library None UI, ImGUI, Gamedev, Cross Platform
Box2C Idiomatic Odin bindings for Box2c (aka Box2D 3.0, not to be confused with older versions which were written in C++!) None Gamedev, Physics
Box2C (Odin-style) Box2D 3.0 bindings for Odin language None Gamedev, Physics
Sokol Odin bindings for Sokol, a collection of single-header C libraries for cross-platform windowing, graphics, audio, file loading, and more! zlib Gamedev, Input, Audio, Cross-Platform

Gists

Useful Github Gists in Odin.

Name Description Tags
GLFW, OpenGL Window Tutorial GLFW and OpenGL example with very verbose comments and links to documentation for learning Gamedev, Graphics, GPU, Learning, OpenGL, GLFW
Metal in Odin Example of using Metal in Odin Natively Gamedev, Graphics, GPU, Metal, Darwin, SDL, Shaders
3D Collision Simple raylib example of 3d FPS player movement with triangle collision Gamedev, Raylib, Graphics, Physics, 3D
Block Allocator Allocator based on Sebastian Aaltonen's Offset Allocator, for suballocating GPU heaps Gamedev, GPU, Memory, Allocator
Octahedral Mapping Sphere and Hemisphere Octahedral mapping visualization in Odin and Raylib Gamedev, Graphics, GPU, Raylib
MicroUI SDL Demo A demo of MicroUI + SDL2 Gamedev, UI, ImGui, SDL
MicroUI Raylib Demo A demo of MicroUI + Raylib Gamedev, UI, ImGui, Raylib
SDL OpenGL Demo Simple SDL2 + OpenGL demo Gamedev, Graphics, OpenGL, SDL, 3D
D3D11 in Odin Simple D3D11 based on d7's example Gamedev, Graphics, Windows, SDL, 3D
Vulkan Example Vulkan-tutorial example in Odin Gamedev, Graphics, Vulkan, GLFW, Shaders
Minimal Metal Window Minmal Cocoa Window with Metal API Gamedev, Darwin, Metal, Cocoa, Graphics
D3D12 Triangle Single-procedure D3D12 triangle example Gamedev, Graphics, D3D12, Shaders, SDL
UUIDV4 UUID Generator UID, Cryptography, Wevdev
WASM4 Bindings WASM-4 Bindings Webdev, WASM, Graphics
Text Editor Simple text editor Graphics, Tools, Editor, UI, Font
Odin logger for Raylib Raylib logging callback to Odin logger Gamedev, Tools, Utility
GLFW and Vulkan Boilerplate Odin, GLFW & Vulkan boilerplate for Drawing a Triangle based on https://vulkan-tutorial.com Gamedev, Graphics, Vulkan, GLFW, Shaders

Resources

List of Odin tutorials, articles, videos and other resources.

Name Description Tags
Odin Overview Official Odin language overview Example, Article
Memory Allocation Strategies Series about memory allocation by GingerBill Article
demo.odin A demo of basically all odin features Example
Introduction to the Odin programming language Video series about Odin and programming Youtube, Playlist
Space Shooter with SDL2 and Odin Video series about programming a Space Shooter game with SDL2 and Odin Youtube, Tutorial, Playlist
Odin Programming Language: An Introduction Introduction to the Odin Programming Language by Ginger Bill from 2020-11-26 Youtube, Talk
Jai vs Odin systems programming languages Comparison of Jai and Odin (Non-spicy takes!) Youtube
Why I Use Odin for Game and Engine Development Video essay explaining what makes Odin great for game and engine development Youtube, Gamedev
Make games using Odin + Raylib Series about making a 2D platformer in Odin and Raylib Youtube, Playlist, Gamedev
5 Reasons why Odinlang is great for gamedev Video about what makes odin great for gamedev Youtube, Gamedev
Odin + WASM = 💙 Example of using Odin, WASM and WebGL together. Example, WASM, Webdev
Solar Storm Renderer A deepdive into the rendering techology of the game Solar Storm Article
Hot Reload Hot reload gameplay code. What, why, limitations and examples! Gamedev, Utility, Article
Raylib + Odin + WASM Experiment with using Raylib + Odin on web Gamedev, Raylib, WASM, Example

Interviews

Tooling

A linter is built into the compiler, see odin help check, specifically the -vet-* and -strict-style flags.

Built with Odin

Open-source Software

Open-source software implemented in Odin.

Name Description License Tags
Spall Web spall is a profiler library and a web-frontend for exploring your code and digging into potential performance problems MIT Performance, Webdev, WASM, WebGL
Todool A To-Do Editor with different modes, advanced movement & powerful commands. Track your development cycle with ease MIT Utility, Tools
HTMX Example TODO List App An implementation of Todo MVC using my in development Odin web stack. None Webdev, Tools
Dungeon of Quake Retro FPS game inspired by Quake MIT or Public Domain Raylib, Gamedev, 3D, Shaders

Closed-Source Software

A list of interesting software built in Odin. It's not open-source, but it can still be useful or inspiring.

Name Description Tags
EmberGen Real-time smoke, fire and explosion simulations for film and games Gamedev, GPU, Graphics, Physics
GeoGen Real-time Landscape, terrain and planet generator app Gamedev, GPU, Graphics
Solar Storm Sci-fi artillery game with local multiplayer Gamedev, GPU, Physics
CAT & ONION A whimsical adventure game about a cat (NOTE: the source code is available if you buy the game on itch.io) Gamedev

Editor Support

Name Description License
OLS Odin language server MIT
Sublime Text Odin syntax definition for Sublime Text MIT
GNU/Emacs Odin editing mode for GNU/Emacs None
Flycheck GNU/Emacs flycheck support for Odin Unlicense
4coder 4coder customization layer for odin None
Vim Odin highlighting for Vim MIT
Tree Sitter Odin Tree-sitter grammar MIT

Deprecated

A list of outdated/deprecated/archived libraries, included for the sake of completeness and in case someone wants to update it.

Link Reason
https://github.com/Breush/odin-binding-generator Lost interest
https://github.com/zhibog/odin-unittest check out core:testing
https://github.com/dotbmp/odin-json check out core:encoding/json
https://github.com/vassvik/odin-gl check out vendor:openGL
https://github.com/JoshuaManton/odin-sdl2 check out vendor:sdl2
https://github.com/kevinw/raylib-odin check out vendor:raylib
https://github.com/librg/odin-enet check out vendor:ENet
https://github.com/vassvik/odin-stb check out vendor:stb
https://github.com/sumofat/odin_cgltf check out vendor:cgltf
https://github.com/atkurtul/odinvk check out vendor:vulkan
https://github.com/SrMordred/odin-lua check out vendor:lua
https://github.com/mp768/odin-lua-bindings check out vendor:lua
https://github.com/laytan/odin-pattern check out core:text/match

Links

Contributions

Please submit a PR to add any interesting/useful Odin projects! Make sure to properly link license and add useful tags for easier searching.