github odin-lang/Odin dev-2026-07

4 hours ago

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: dev-2026-06...dev-2027-07

Don't miss a new Odin release

NewReleases is sending notifications on new releases.