Understanding the Odin Programming Language

AlexeyBrin2 pts0 comments

Understanding the Odin Programming Language

Do you want to learn the Odin Programming Language and demystify low-level programming?

Then this book is for you.

Read a sample or buy now

Understanding the Odin Programming Language is a book that teaches both basic and advanced Odin concepts. You'll learn about procedures, manual memory management , parametric polymorphism, data-oriented design, and much more.

The target audience is anyone with some programming experience. Odin is a simple yet powerful language, making this book a great introduction to low-level programming , regardless of your background.

A programming language is a tool. By understanding your tools, you will become a better craftsperson . Therefore, this book does not just explain how to write Odin code. It also explains why the language works the way it does.

What people say:

I highly recommend Karl Zylinski's excellently written book on Odin—perfect for anyone who wants to learn and understand the Odin programming language. -Bill "gingerBill" Hall, creator of Odin .

Karl makes a great job at explaining Odin. I had a good experience with garbage collected language like Golang and the book really helped me to transition to a non garbage collected language like Odin. -Review on store.zylinski.se by Kevin D .

I never read, I get distracted easily. But the writing style here is so good, that I didn't have any issues reading through the whole thing in a couple days. -Review on store.zylinski.se by Shaka .

Version 1.10 released! Read the release notes.

Available formats:

HTML

Beautifully laid out and easy to navigate. A portable HTML file with all the fonts and images baked in. Similar to a PDF, but nicer to use.

The optimal reading experience on a computer. Can also be read on a phone or tablet.

Available on:

store.zylinski.se HTML+eBook<br>Itch HTML+eBook

Read a sample

eBook

Specially suited for e-readers and eBook apps.

Nice and simple layout. Includes all illustrations and supports color.

Available on:

store.zylinski.se HTML+eBook<br>Itch HTML+eBook<br>Amazon Kindle eBook<br>Google Books

If you are unsure of which version to get, then I recommend buying it from store.zylinski.se or Itch. On there you'll get both the HTML and eBook versions.

Overview video

Release notes

Version 1.10

Section 8.3 has been changed to teach the [dynamic; N]T type (Fixed Capacity Dynamic Array) instead of the Small_Array. The Fixed Capacity Dynamic Array deprecates the Small_Array.

Updated Appendix B to also use the Fixed Capacity Dynamic Array.

Appendix A now has some comments about the handle-based map that now exists in core.

Minor change in 10.3 where some unneeded slicing was done.

Get the latest version by just re-downloading the book from wherever you bought it.

Version 1.9

Updated usages of core:os in order to match the changes introduced by "os2". Background: The whole core:os package was replaced during February 2026. After this replacement, some code example changes were needed. A lot of code that used core:os still works, but usages of os.read_entire_file and os.write_entire_file needed some changes.

External links in the HTML version now open in a new tab.

Improve the bubble in 10.1.1 about disabling bounds checking.

Fixed around 30 grammar issues.

Fixed several minor technical errors.

Version 1.8<br>Strings chapter overhaul

This version does some major changes to the strings chapter (chapter 11). It has been heavily revised and expanded. Some changes are:

Clearer about how UTF-8 is decoded into runes.

A section on how to manually decode UTF-8.

The old "bubble" about null termination has been made into a proper section.

The section "Deallocating strings mixed with string constants" has been made clearer and more useful by considering a map instead of an array.

A section on how the phrase "string constant" can be ambiguous.

The Windows section on UTF-16 has been mostly rewritten and now uses the new cstring16 type.

Many, many more small changes and edits.

Changes to other chapters

Chapter 1.5: Typo fix.

Chapter 2.4: Note about odin run . -keep-executable (new Odin behavior).

Chapter 3.2: Typo fix abut type inference.

Chapter 5.3: Clarification about the .(Type) syntax used to check the variant of unions.

Chapter 7.4: Clarified a sentence.

Chapter 7.8: Add information about "contextless" requirement for @init and @fini.

Chapter 10.1.5: Code typo fix.

Chapter 10.3: Remove unnecessary slice operation.

Chapter 11.6: Code typo fix.

Chapter 15.2: Move bubble about bit_set initializers to a more appropriate location.

Chapter 15.2.2: Typo fix.

Chapter 15.3: Typo fix.

... and several additional small fixes!

Version 1.7

Chapter 1: Fix broken Discord link

Chapter 5.1.3: Typo fix

Chapter 9.7: rand.int_max range clarification

Chapter 14.3: Improved 'Special_Array' example

Chapter 23: Typo fix

Chapter 26.6: Fix broken WebGPU example link

Appendix D: Fix compilation error

Version 1.6

New section 17.5 called...

chapter odin language version programming html

Related Articles