Download Latest Version dev-2026-07a source code.zip (150.8 MB)
Email in envelope

Get an email when there's a new version of Odin

Home / dev-2026-07
Name Modified Size InfoDownloads / Week
Parent folder
odin-linux-arm64-dev-2026-07.tar.gz 2026-07-06 64.7 MB
dev-2026-07 source code.tar.gz 2026-07-06 148.7 MB
dev-2026-07 source code.zip 2026-07-06 149.9 MB
README.md 2026-07-06 4.6 kB
odin-linux-amd64-dev-2026-07.tar.gz 2026-07-06 66.6 MB
odin-macos-amd64-dev-2026-07.tar.gz 2026-07-06 62.2 MB
odin-macos-arm64-dev-2026-07.tar.gz 2026-07-06 58.4 MB
odin-windows-amd64-dev-2026-07.zip 2026-07-06 144.9 MB
Totals: 8 Items   695.5 MB 1

New Language Features

  • Add restricted Odin subset mode -bedrock in [#6654]
  • Add Playdate support as a -subtarget of -target:freestanding_arm32 in [#6900]
  • Support q.xyz on quaternion*

New Compiler Improvements

  • New Feature: Stack canaries [#6830]
  • Change default settings to enable pie and full relro on Linux in [#6790]
  • Make the type hash 63-bit to not crash OMG JIT in WebKit under WASM in [#6829]
  • Add suggestion to use 'typeid_of(type)' when trying to do typeid(type) in [#6846]
  • @(test) procs in #+private files are now processed in [#6844]
  • Reject transitive #subtype-only implicit conversion in checker in [#6845]
  • Fix initialization of global anys [#6849]
  • Fix: tuples are not handled properly in struct literals in [#6859]
  • Move away from system for odin run in [#6848]
  • Raise child process error signal if odin run child gets terminated [#6870]
  • Flush accumulated errors before printing assert in [#5508]
  • Fix [#6874] in [#6880]
  • Fix [#6885] in [#6886]
  • Resolve panic on 64-bit constant overflow in [#6904]
  • Fix constant union stuff against tests in [#6905]
  • Report range type correctly on out-of-bounds in [#6906]
  • Add more constant type cases in [#6913]
  • Use lb_add_values_to_array for cvarargs in [#6908]
  • Only allow direct CVarArg usage in c_va_start in [#6916]
  • Add ways to diff anon procs with same signature in [#6920]
  • Fix compiler segmentation fault when field names start with '.' in [#6928]
  • Fix UTF-8 decode error check in [#6930]
  • Improve custom output location (-out) support for LLVM-IR, OBJ + ASM in [#6932]
  • Fix typo in union error in [#6929]
  • Make checking of untyped to union conversions more strict in [#6925]
  • Allow casts to change mode for array programming in [#6921]
  • Avoid code regeneration for fns in unroll in [#6939]
  • Make diverging or_else inherit #load lhs type in [#6934]
  • Add diverging (!), #optional_ok to proc canon name in [#6935]
  • Fix misuse of lb_emit_(min|max) in simd_(min|max) in [#6924]
  • Remove support for LLVM 14, suggest apt.llvm.org if llvm-config-14 can't be found in [#6918]
  • Use specific format to make f64 strings canonical in [#6949]
  • Disallow types in #any_int params in [#6950]
  • Convert poly const int to f64 when needed in [#6948]

New Packages

  • [core:raylib] Raylib 6.0 in [#6940]
  • [vendor:box3d] Box3D bindings in [#6933]

Package Improvements

  • [core:terminal/ansi] Add Alternate Screen Buffer in [#6813]
  • [core:nbio] Fix UAF op op.l in cross-thread exec in [#6819]
  • [core:slice] Fix wrong variable name in slice.rotate in * fixed wrong variable name in [#6828]
  • [vendor:vulkan] Update Vulkan in [#6824]
  • [core:container/pool] Fix ABA race in the free list in [#6822]
  • [core:bufio] Improve reader_read_slice's documentation using the power of punctuation in [#6463]
  • [base:runtime] Added optional allocator error to map_insert in [#6836]
  • [core:odin] Correct divergence from C++ parser with expr levels, causing failures in [#6861]
  • [vendor:stb/truetype] Amend PackFontRanges types in [#5662]
  • [core:mem] Rename DEFAULT_PAGE_SIZE to PAGE_SIZE in [#6471]
  • [core:os] Improve consistency in os.read_entire_file_from_file in [#6671]
  • [core:flags] Improve bit_set support in [#6435]
  • [vendor:x11/xlib] Update Xlib documentation link to current PDF in [#6875]
  • [core:text/regex] Improve regex compiler performance in [#6873]
  • [core:mem] Fix mem.Dynamic_Arena alignment in [#6878]
  • [core:crypto/wycheproof] Update the tests to match recent changes in [#6887]
  • [vendor:sdl3] Remove non-exported joystick_lock symbol in [#6893]
  • [vendor:windows/GameInput] Remove GameInput prefix from interface type names in [#6903]
  • [core:encoding/entity] Fix whitespace normalization in [#6914]
  • [core:container/handle_map] Remove unused base:builtin import in [#6931]
  • [vendor:wgpu] Update to v29.0.1.1 in [#6947]
  • [core:encoding/cbor] Fix segfault decoding map/big.int nested in slice elements in [#6945]
  • [core:encoding/cbor] Fix data corruption in [#6954]
  • [vendor:wgpu] Update to v29.0.1.1
  • [core:container/xar] Forward caller location to make in array_push_back_* in [#6958]

Miscellaneous

  • Fix nightly static Linux build in [#6808]
  • Added missing LDFLAGS for OpenBSD in [#6728]
  • Deduplicate macOS and Linux nightly builds in [#6812]
  • Remove dependency on mbedx509, mbedcrypto for Darwin in [#6842]

What's Changed

Full Changelog: https://github.com/odin-lang/Odin/compare/dev-2026-06...dev-2027-07

Source: README.md, updated 2026-07-06