A collection of awesome Odin libraries, bindings, software and resources 🧙♂️✨
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
Many lists include a "tags" secion. The goal is to make it very easy to find a resource/library for specific type, even if it falls into multiple categories.
Notable tags:
List of libraries implemented in Odin.
[!NOTE] Resources have tags based on their topics for easier CTRL+F search
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 |
Godot Toolkit | Toolkit for Godot 4.0 to work with GDExtension and generating boilerplate | Apache 2.0 | Gamedev, Engine, Utility |
glTF2 ⭐ | Native Odin implementation of glTF2 loading file format | MIT | Gamedev, Format, 3D |
Aseprite loader | Handler for Aseprite's .ase/.aseprite, .aseprite-extension & extended .gpl files writen in Odin | BSD 3-Clause | Gamedev, 2D, Format |
Odin + Raylib Hotreloading Template | An Odin + Raylib game template with Hot Reloading pre-setup. My game projects tend to have some things in common, so I made this template so I can get up and running quicker | Custom | Gamedev, Template, Raylib |
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 .pdb s and dumping Windows stacktraces |
BSD-2-Clause | Debugging, Auxiliary |
Java classfile parser | A parser and verifier for Java .class files |
MIT | Format, Java classfile |
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 |
Name | Description | License | Tags |
---|---|---|---|
GraphQL Parser | GraphQL language parser | MIT | Webdev |
Name | Description | License | Tags |
---|---|---|---|
Mustache | Mustache logic-less templating engine | MIT | Template, Webdev |
Temple | Templating engine that compiles to Odin io calls | None | Template, Webdev |
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 |
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 |
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 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 |
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 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 |
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 |
WGPU | Bindings for WGPU | Apache 2.0 | Gamedev, GPU, WGPU, Graphics |
libpcap | Bindings for libpcap | None | Networking |
Jolt | Bindings for the Jolt physics engine | None | Gamedev, 3D, Physics |
libui-ng | Bindings for libui-ng: a portable GUI library for C. "libui for the next generation" | None | UI, Tools |
LLVM | Generated bindings for LLVM (LLVM-C 17.0.1), currently Windows-only | None | Compilers |
ffmpeg | Bindings for ffmpeg, a complete, cross-platform solution to record, convert and stream audio and video | None | Video |
meshoptimizer | Bindings for meshoptimizer, a mesh optimization library that makes meshes smaller and faster to render | None | Gamedev, Graphics, 3D, Tools |
m3d | Bindings for model3d format, a 3D model format specification and single header SDK. Supports skeletal animations, voxels and has the best data density | None | Gamedev, Graphics, 3D, Format |
OpenAL | Bindings for OpenAL, a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications | None | Gamedev, Audio |
Luau | A fast, small, safe, gradually typed embeddable scripting language derived from Lua | MIT | Language, Lua |
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, Webdev |
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 |
LLDB visualization | Python script for slice, map, and string formatting in LLDB | Debugger, Tools, Utility |
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 |
Sokol WASM Playground | Example of Sokol and Odin on web using emscripten | Gamedev, Sokol, WASM, Example |
A linter is built into the compiler, see odin help check
, specifically the -vet-*
and -strict-style
flags.
tools/odinfmt
directoryOpen-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 |
LD55 - The Last Summoner | LD55 entry made with Odin and Raylib. You are the last summoner alive in an apocalypse and you have to survivor using your summons! | Gamedev, Raylib |
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 |
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 |
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 |
Please submit a PR to add any interesting/useful Odin projects! Make sure to properly link license and add useful tags for easier searching.