New Language Features
- Allow for constant strings in
foreign imports #exists(<string>) -> bool@(rodata)context.random_generator- Brand new
runtime.Random_Generatorinterface
- Brand new
Compiler Improvements
- Brand new Multithreaded Test Runner
- Improvements to error line rendering
- Full support for Unicode grapheme clusters
- NetBSD ARM64 support
-show-defineablesand-export-defineables-vet-cast- Looks for redundant
casts ortransmutes, andtransmutes that should becasts
- Looks for redundant
-strict-stylenow enforces a lot more regarding the official Odin code base style-vet-styleis a much weaker form that does not have all of the same enforced options as-strict-style- Enforces
-vet-cast - Enforces
casestatements to be in the same column as theirswitchtoken - Enforces 1TBS style
-vet-tabs- Enforces tabs to be used for indentation with statements/declarations
-custom-attribute:<string>-custom-attribute:attr1-custom-attribute:attr1,attr2-custom-attribute:attr1 -custom-attribute:attr2
- Improve parsing for
label: #reverse forandlabel: #partial switch - Allow
#soaarrays to be used directly withmake,reserve,append, etc. intrinsics.procedure_of(call(...))intrinsics.syscall_bsd- Fixes to debug information generation for LLVM < 13
- Add
#directory(complements#file) - Remove
@(warning)and#warning - Allow
- constant_array - Support
@(extra_linker_flags)on WASM targets - Use
f32operations when doingcomplex32andquaternion64operations to improve accuracy and performance - Allow for
when x in y {(minor oversight in syntax) - Keep
bit_fieldaccesses happy with-santitize:address - Fix for
bit_set[$T]not setting the bounds correctly (#3842) intrinsics.type_struct_has_implicit_padding- Remove quite a few possible race conditions in the compiler
- Numerous big fixes
New Packages
vendor:wgpu(WebGPU)core:flagscore:encoding/uuidcore:mem/tlsf- "Two-Level Segregated Fit" memory allocator
core:image/bmp
Package Improvements
core:text/tablenow supports Unicode grapheme clusters correctlycore:math/randnow uses the newcontext.random_generatorinterface instead of the implementation specificrand.Randcore:cryptohas a Random_Generator interface for entropic cryptographic random number generators- Improvements to
core:strconv- Support complex/quaternion parsing
- Partial parsing of infinity
- Improvements to
vendor:raylibdeclarations - Move
rlgltovendor:raylib/rlgl - Fixes to
core:math/bigand add numerous other utility procedures - Fix code generation for
vendor:vulkanon^[3]f32parameters - Numerous improvements to
core:odin/parser - Make
runtime.heap_allocet al"contextless" - Add
#no_broadcasttoappend_soacalls - Add
no_zero_*variants for#soadynamic arrays - More test suites