New Language Features
matrixtypematrix[Rows, Columns]Element_Type- A
matrixis a mathematical type built into Odin. It is a regular array of numbers, arranged in rows and columns - Multiplication between matrices and arrays
- Component-wise operations
- Submatrix casting square matrices
- Submatrix casting non-square matrices
- Column-major memory layout
- Limited to a maximum of 16 elements
- Supports integers, floats, and complex numbers (only)
- Optimized for SIMD vectorization
- Built-in procedures (Compiler Level)
transposeouter_producthadamard_productmatrix_flattenconj
- Built-in procedures (Runtime Level)
determinantadjugateinverseinverse_transposehermitian_adjointmatrix_tracematrix_minor
odin report- Reporting of Platform Specific Information
wasi_wasm32support- Improved WASM support in general
New Packages
core:cryptovendor:ENet
Package Improvements
- Improvements to
vendor:OpenGL- Set
VertexAttribPointerrelated calls to useuintptrinstead ofrawptrfor the byte offset parameter - Convert all functions taking
GLbooleantobool
- Set
- Updates to
core:sync/sync2- Generic
Futexinterface for each platform Semaimplemented withFutex
- Generic
- Improvements to
core:mem/virtualto make usage consistent - Minor improvements to the SDL vendor packages
core:encoding/json- add alias forMJSONasBitsquid- Improvements to
vendor:microui - Improvements to
vendor:raylib - Add more OOM checks within the core library
- Unify
runtime.memory_equalandruntime.string_eqlogic - Add
idtothread.Thread - Add
slice.swap_between - Add experimental
big.Rat
Compiler Improvements
intrinsics.unaligned_storeintrinsics.unaligned_loadintrinsics.mem_zero_volatileoffset_of_by_string- Heavily improve the LLVM struct type generation to improve ABI
- Simplify
maplogic and code generation - Disallow
or_returnwithindefer - Fix
strip-semicolonon some machines which didn't truncate correctly - Allow parsing for
[^]T{}to improve error messages - Support LLVM 11, LLVM 12, and LLVM 13 in the code
- Fix debug problems
- Improved
bit_setsemantics