github odin-lang/Odin dev-2026-08

3 hours ago

New Language Features

  • Allow custom -collections to be used for foreign imports in #6999

New Compiler Improvements

  • Disallow proc group assignment to blank identifier in #6996
  • Increase stack size for threads in #6997
  • Reject chained deferred procedures in #7013
  • Fix arm64 ABI: '#simd' vectors and vector aggregates not passed in registers (#7010) by in #7015
  • Fix darwin arm64 argument passing abi in #7030
  • Fix playdate -subtarget issue where floats were incorrectly compiled in #7026
  • Make object and assembly file extensions user-changeable again in #7041
  • Fix subtype comparisons (#6151, #3689, #7020 and #4734) in #7039
  • Fix constant aggregate rebuild in #7046
  • Keep polymorphic probes read-only in #7052
  • Fix switch fallthrough in lb_emit_struct_ev (#7050) in #7051
  • Fix arm64 argument alignment abi for composite type of size <= 16 bytes in #7045
  • Preserve recursive struct aliases in #7042
  • Compare mmap result to MAP_FAILED rather than nullptr (#7053) in #7065
  • Stricter type coercions in convert_to_typed in #7056
  • Fix backend deadlock where func_raw_types_mutex and types_mutex were waiting on each other by in #7060
  • Add typeid constant case to check_comparison (#7027) in #7064
  • Fixes compile time equality comparison for string16 in #7071
  • Allow fixed-capacity arrays in constant unions (#7089) in #7090
  • Fixes spurious #no_alias compile errors during polymorphic overload resolution in #7116
  • Reject the use of labels as expressions (#5830 and #7108) in #7130
  • Fix hang for poly procs with default proc literal params in #7146
  • Fix expand_values panic on type expressions in #7157
  • Handle spaces in args for 'odin run . -- ' on Windows in #7162
  • Don't assert on -define: values with an exponent in #7164
  • Fix error hint for vet tag in #7132
  • RISC-V fixes/improvements in #7144
  • Fix LLVM codegen for matching on nil for union{} in #7139
  • Allow #caller_expression on constant parameters which are procedures in #7119
  • Fixes compile error due to #no_alias shifting position in procs with indirect return in #7214
  • Fixes a compiler segfault with zero sized parameters on targets that ignore these in the LLVM signature in #7215
  • Fix every named argument in "Given argument types" being labelled with the first argument's name in #7217
  • Fix levenstein_distance in #7218
  • Fix signed Int Constants being permitted to exceed size in #7220
  • Fix string16 oob in #7221
  • Fix new line suppression by @kalsprite in #7222
  • Improve grammar on import name error in #7223
  • Fix matrix col error message that said rows instead in #7224
  • Minor typos in #7225
  • Fix crash on poly in #7226
  • Fix -vet-packages not working in certain cases in #7210
  • Pack tuple results into variadic arguments (#7167) in #7185
  • Polymorphic procedures resolving to nil (#6753 and #) in #7208

New Packages

  • [core:crypto/rsa] Add RSA support in #6857
  • [core:encoding/asn1] Add strict DER + [core:crypto/x509] (X.509 v3) in #6838
  • [core:crypto/turboshake] Add TurboSHAKE in #7043
  • [core:rexcode] Add rexcode, a high-performance multi-architecture instruction encoder/decoder/printer package in #6839
  • [core:debug/trace] Replaced with a much improved implementation in #7141

Package Improvements

  • [core:container/rbtree] Match find_or_insert semantics with AVL in #6988

  • [core:container/rbtree] Add upsert in #7002

  • [vendor:box3d] Fix missing return value of *_GetUserData functions in #7006

  • [core:sys/windows] Add additional bindings in #7022

  • [vendor:raylib] Update rlgl bindings to raylib 6 in #7023 and #7028

  • [core:strings] Add @(require_results) where useful in #7038

  • [core:log] Make multi logger use all loggers instead of breaking on first non match in #7057

  • [core:encoding/csv] Update example to use the new core:os in #7076

  • [base:runtime] Fix markdown table in docs in #7077

  • [base:runtime] Fix map reporting incorrect capacity after shrinking in #7097

  • [core:os] Fixes file open emulation of posix open behavior on mode/perm mismatch on Windows in #7098

  • [base:runtime] Fixes SoA dynamic arrays not zeroing all elements after shrink + grow in #7103

  • [core:odin/tokenizer] Set token kind to float for hex floats in #7117

  • [vendor:sdl3] Fix (S/G)etDefaultTextureScaleMode in #7133

  • [core:unicode] Fix duplicated entries within unicode_spaces and space_ranges in #7142

  • [base:runtime] Fixes growth check for SoA dynamic arrays in #7145

  • [core:debug/trace] Sync tracking allocator with core:mem in #7147

  • [core:debug/trace] Sync allocator with core:mem in #7200

  • [core:sys/windows] Fix LoadLibraryEx_Flags off-by-one in #7151

  • [core:mem/virtual] Close dangling handle in map implementation on Windows in #7159

  • [core:testing] Respect TERM=dumb in test runner to prevent ANSI sequences, color in #7160

  • [core:thread] Add get_name and set_name in #5464

  • [base:runtime] Shrink map to minimum capacity with shrink in #7152

  • [core:text/scanner] Fix #7153 and add a test in #7165

  • [core:rexcode/x86] Label addressing for RIP-relative disp and movabs imm in #7168

  • [core:simd/arm] Implement simd arm crc32 in #7174

  • [core:compress/gzip] Fix example code in #7178

  • [core:simd/arm] Implement simd arm pmull in #7184

  • [base:runtime] Follow up fix of shrink_map #7182

  • [core:odin/parser] Correct end position for fields with a specialization in #7180

  • [core:text/scanner] Fix octal escape parsing in #7176

  • [core:os] Update stale os.flags file doc in #7187

  • [core:mem] Zero tracking_allocator.allocation_map and tracking_allocator.bad_free_array in destroy in #7195

  • [base:runtime] Make soa builtins go vroom in #7196

  • [base:runtime] Cleans up obsolete comments in _append_soa_elems in #7204

  • [base:runtime] Annotates the array parameter of dynamic array builtins with #no_alias in #7149

  • [core:simd/arm] Impl fix simd arm SHA in #7205

  • [core:os] Fix glob not cloning pattern when no meta characters present in #7206

  • [core:crypto/_fiat] Fix conditional in ensure in #7211

  • [vendor:box3d] Update box3d (#7177) to erincatto/box3d@3fc20f5 in #7212 + #7231

  • [core:crypto] Minor fixes in #7228

  • [core:os] Resolve relative path before SHFileOperationW in _remove_all in #7230

  • [core:net] Fix percent encoding for bytes < 0x10 (#7109) in #7234

  • [core:simd/arm] Implement simd arm neon bit manipulation in #7216

  • Various typo fixes across the packages

Miscellaneous

  • [vendor:*] Replace makefiles in with shell scripts in #7034
  • CI: Update NetBSD to 10_2026Q1 in #7085
  • Improve build scripts portabability and make them pwd independent in #7084
  • CI: Make NetBSD CI less prone to breaking when scheduled on old CPUs

What's Changed

Full Changelog: dev-2026-07a...dev-2026-08

Don't miss a new Odin release

NewReleases is sending notifications on new releases.