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
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 |
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 |
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 |
---|---|---|---|
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 |
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 |
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 |
- ThePrimeagen - Odin Creator Ginger Bill Talks Odin
- Developer Voices - Is Odin "Programming done right"? (with Bill Hall)
- Mike Shah & Ginger Bill - Programming Proverbs and the Odin programming language
A linter is built into the compiler, see odin help check
, specifically the -vet-*
and -strict-style
flags.
- [DanielGavin/ols]: Language Server / Editor Support
- also contains a standalone formatter in the
tools/odinfmt
directory
- also contains a standalone formatter in the
- [obiwan87/odin-intellij]: Editor Support for Intellij IDEs
- [jtakakura/asdf-odin]: Plugin for the asdf version/package manager
- [laytan/setup-odin]: GitHub action for setting up the compiler
- [Data-Oriented-House/PortableBuildTools]: Portable, simple and fast installer for Visual Studio Build Tools
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 |
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.