New Language Features
- [#7664]: Allow
bit_setto be backed by arrays of integers
New Compiler Improvements
Speedups
- [#7720]: LLVM Backend Performance Improvements to Reduce Compile Times Part 1
- [#7729]: LLVM Backend Performance Improvements to Reduce Compile Times Part 2
- [#7747]: Compiler Performance Improvements to Reduce Compile Times Part 3
- [#7685]: Complete Parapoly Rewrite + Race condition fixes
- [#7694]: Make global checking codegen order-independent
- [#7686]: Parse integer literals without allocating per digit and reject non digits in their exponent
- [#7739]: Make
radlinkdefault linker on Windows - [#7701]: Multithread The Entire Semantic Checker
- [#7728]:
mapperformance improvements
General fixes and improvements
- [#7654]: Experimental support for cross-linking Windows executables
- [#7788]: Add the new
-windows-sdk-rootto theodin help buildcommand - [#7497]: Fix #7488:
-veterror incore_builtin_soa.odinwhen appending multiple empty structs to#soa[dynamic] - [#7500]: Fix #5851: Detect and error on chained
offset_ofexpressions - [#7505]: Apply mojibake magic to test runner, too
- [#7509]: Fix #7499: Add ctrl-c handler to
run_subprocess - [#7070]: Fix
vendor:ENet.Bufferdata/length ordering issue - [#7524]: Fix alias
nullptrICE - [#7528]:
intrinsics.type_elem_type()added case forType_FixedCapacityDynamicArray - [#7531]: Improve error message for constant indexing
- [#7530]:
simd_abscodegen improvement + fix for unsigned integers - [#7545]: Fix #6917: LLVM IR
va_arginstruction uses wrong stride for C varargs on Windows - [#7548]: Fixes
simd_approx_recipandsimd_approx_recip_sqrt - [#7549]: Fixes
simd_selectandsimd_runtime_swizzleoperand construction - [#7574]: Fix #7573: Check Enumerations iota fits explicit base type
- [#7570]: Fix #7544: Constant
bit_fieldfield access returning zero value - [#7568]: Fix
side_effectsvsvolatiletypo in error message - [#7561]: Fixes #6888: SIMD gather/scatter and masked load/store randomly crashing the compiler
- [#7550]: Fix syntax error type with
-json-errors - [#7577]: Fix
#locationin global variable initializers - [#7582]: Fix #7581: Compiler crash when checking code with swizzled SOA fields
- [#7605]: Fix #7604: Allow building at
/ - [#7607]: Fix #7598: Keep entity iteration valid across a scope map rehash
- [#7623]: Add
-filesuggestion whenmainis duplicated or package names differ - [#7628]: Fix quadratic type checking case: don't cache polymorphic record specializations
- [#7631]: Fix record instantiated poly proc on selector when used as a proc value
- [#7629]: Fix #7596 and #7511
- [#7621]: Fixes the attributes of the context parameter in dummy procedures
- [#7641]: Fix field sorting for
bit_fieldliterals - [#7656]: Fix #7609: Emit union constants for non-constantable unions
- [#7658]: Fixes
#must_tailon WASM targets - [#7652]: Fix #6951 and #5214:
$procedure arguments matching the wrong instantiation - [#7639]: Fix #6302: Broadcasting arrays of matrices and matrices
- [#7661]: Fix #7587: Full length swizzles through a pointer keeping the pointer type
- [#7594]: Fix #7583:
-strict-stylerequires comma before newline after proc parameters which have a default value - [#7588]: Fix #7427 and #7193: Error on OOB tuple element in compound literals
- [#7668]: Fix #5318: Procedures passed to
$parameters share an instantiation's name - [#7666]: Add
ExactValue_Rationalto improve precision on compiler float computation - [#7602]: Adds lifetime markers for named locals
- [#7674]: Fix #5105 and #5569: Deferred call in short circuits causes LLVM codegen failure
- [#7682]: Fixes the
nocaptureattribute on LLVM >= 21 - [#7679]: Fix #7477 and #7506: Casts between nested arrays of the same depth
- [#7697]: Fix compound literals of array backed
bit_fields - [#7692]: Disallows the "odin" calling convention with
#must_tail - [#7706]: Fix #7430: Fixed capacity dynamic array literals lose their length
- [#7709]: Fix #7708: Compare a polymorphic record's constant parameters by value in
subst_unify - [#7711]: Fix #7700: Constant
#soafield access yields the per-element field array; compare and canonicalizetypeidconstants - [#7716]: Fix
intrinsics.procedure_ofwith parapoly specializations - [#7714]: Fixes #3995, #4337, #5950, #7197, and #7640: Handle globals initialized with the address of a non constant literal
- [#7718]: Fix #7490: Preserve zero-initialized arrays in
intrinsics.concatenate - [#7722]: Use a response file for
MSVC-style linkers (link.exeandradlink.exe) when the command line exceeds theCreateProcesslimit of 32KiB - [#7723]: Fix mark a generated polymorphic procedure before publishing it to other threads
- [#7520]: Fix
#soapointer field access throughusing - [#7743]: Allow
usingon#soapointers, and make the fields ausing#soapointer parameter promotes assignable - [#7746]: Fix
-linker:radlinkbeing rejected on Windows - [#7740]: Fix #7689: Incorrect debug source location at the end of if/else chains
New Packages
- [#7523]:
asm: Generalize memory operand syntax to a flat term list
Package Improvements
Speedups
- [#7630]:
core:strconv: Ported Eisel-Lemire's fast float algorithm to Odin - [#7672]:
core:strconv: Second part of the Fast Float port (SWAR based scanning) - [#7725]:
core:strconv: Adds a#configto opt out of fast float (and its table) - [#7726]:
core:hash/xxhash: Add a few more#no_bounds_checktoXXH3 - [#7728]:
base:runtime:mapperformance improvements
General fixes and improvements
- [#7496]:
core:sys/windows: Add bindings for advanced mouse/pointer/pen manipulation - [#7508]:
vendor:windows/wasapi: Fixes - [#7516]:
core:mem: Revert #6476, which misunderstood themem.Scratchallocator's semantics - [#7517]:
core:mem: Implement tests for themem.Scratchallocator - [#7489]:
core:simd/arm: Implement SIMD Arm Neon shift left - [#6787]:
core:fmt: Improvedfmt_osdocumentation - [#7527]:
core:simd/x86: Fixed typo inavx.odin - [#7539]:
vendor:curl(Linux): Remove import declarations for crypto libraries that differ by distro - [#7532]:
core:sys/windows: Add line-drawing functions ingdi32.odin - [#7563]:
core:simd/arm: Implement SIMD Arm Neon shift right - [#7576]:
vendor:sdl3/ttf: Use[^]byterather thancstringand addExpandStringwrapper - [#7572]:
vendor:libc-shim: Replacemem_zerowith null termination instrncpy - [#7565]:
core:sys/windows: Add performance counterPSAPIbindings - [#7553]:
vendor:box2d: Add missingGetVersionbinding - [#7546]:
vendor/box3d: SupportBOX3D_SHAREDon Windows - [#7543]:
vendor:egl: Bind more procedures and constants - [#7599]:
core:os: Fix the 0th env var being duplicated on Linux - [#7600]:
vendor:OpenEXRCoreFixes - [#7536]:
core:odin: Fix #7526: Handle triple quote/tick string - [#7603]:
core:simd/arm: Implement SIMD Arm Neon zip unzip extract - [#7615]:
base:runtime: Fix #7562: Windows AMD64 no-CRT stack probe support - [#7620]:
core:dynlib: Improvements and explanations in example - [#7622]:
core:strconv: Fixes three bugs in hex float parsing - [#7624]:
core:math/big: Fix squaring path writing the denominator into the numerator - [#7633]:
core:encoding/json: Size the unquote buffer for replaced invalidUTF-8 - [#6722]:
core:sys/linux: FixTime_Valprecision comment - [#7634]:
core:crypto/_fiat: Fix P-256fe_sqrtaddition chain, unblocking compressed SEC1 point decoding - [#7627]:
core:rexcode: Add 512bitvmovntdq(a) - [#7659]:
core:encoding/base64: Add strict decoding options - [#7663]:
core:simd/x86: Implement simd x86 avx2 avx512 shift logical - [#7632]:
core:simd/arm: Implement simd arm neon transpose reverse - [#7579]:
core:c: Fixes #7540: fastX type widths - [#7584]:
core:sys/windows: Extend Win32 common dialog bindings - [#7610]:
core:sys/windows: Fix #7547: Double-null-terminate path inSHFileOperationW - [#7665]:
core:container/bit_array: Addcreate_from_enumhelper. Improve documentation, fix examples. - [#7671]:
core:container/xar: Fix chunk slot count cappingArraycapacity - [#7484]:
core:sort: Document all public procedures and Interface types - [#7676]:
core:crypto/aegis: Minor documentation cleanups - [#7673]:
core:encoding/json: Removes@(private)fromunmarshal_valuefor use in user unmarshalers - [#7590]:
core:os: Allocate the long-path buffer in the caller's allocator - [#7320]:
vendor:sdl3: WASM foreign import library configurable - [#7684]:
core:rexcode: Changedappendtoappend_elemfor a sizable improvement - [#7683]:
core:simd/x86: Implement simd x86 avx512 evex512 - [#7690]:
core:encoding/base64: Add unpadded base64 encoding - [#7695]:
core:simd/x86: Implement simd x86 avx512 typo fix - [#7703]:
core:encoding/csv: Preserve final CSV records in multiline mode - [#7704]:
core:encoding/cbor: Fixbit_setbyte order - [#7643]:
vendor:sdl2: AddRenderSetVSync - [#7721]:
core:sync/chan: Accept.Recvchannels inchan.recvandchan.try_recv - [#7733]:
core:odin: Fix parser assert with invalid for-in stmt - [#7731]:
core:time/timezone: Preserve fractional timestamps in timezone conversions - [#7738]:
core:math/linalg/glsl: Fixmix_vec4andmix_dvec4implementations - [#7753]:
core:fmt: Fix incorrect number of bytes written returned when formatting floats withh/H - [#7751]:
core:simd/x86: Implement simd x86 sse2_mm_insert_epi16fix - [#7755]:
core:sys/windows: AddGetCursorandGetDpiForSystem - [#7756]:
vendor:box3d: Fixing typo fromuserMaterialdtouserMaterialId
Miscellaneous
- [#7495]: macOS Intel removed from CI tests and releases, due to general flakiness of the CI. Odin can still be built from source on Intel Macs.
- [#7569]: Fix #7525: Add test coverage for inline-asm label definitions on AMD64
- [#7670]: Update NetBSD CI from 2026Q1 -> 2026Q3
- [#7707]: Adjust doc comments that misrender as CommonMark
- [#7754]: Upgrade Ubuntu CI to LLVM 22
- [#7744]: Update
test_core_runtime.odin
Full Changelog: dev-2026-09...dev-2026-10