New Language Features
- New
map: High performance, cache-friendly, open-addressed Robin Hood hashing hash map data structure with various optimizations for Odin- PR #2181
- Smaller internal data structure than previously (4 pointers down from 7 pointers)
- SOA based memory layout
- Up to 4x-6x faster insertion and lookup on average
- Entries are stored in non-contiguous cell-layout which means no element straddles across a cache line
- Only one allocation per map rather than two (previously hashes and entries)
- Only requires
alloc_non_zeroedandfreeinternally
- Only requires
- Robin Hood hashing
- Smaller header information (
runtime.Map_Info) for dynamic calls. - Allows for calling
delete_keywhilst iterating across the map
Compiler Improvements
- Add debug symbols for global constants for integers, booleans, enums, runes, and pointers
- Variables are namedspaced with
pkg::name, ornameif built-in (or the initial package for convenience)
- Variables are namedspaced with
- Improvements to debug information generation
-default-to-nil-allocatoralso enabled-no-dynamic-literals- Improvements to
intrinsics.ptr_subcode generation - Numerous bug fixes
New Packages
vendor:cgltf
Package Improvements
- Add
Allocator_Mode.Alloc_Non_Zeroed - DirectX packages to use
bit_setfor flags where possible instead of just anenum - Implement numerous
core:mathprocedures in native Odin - Add
math.pow10 - Add
strings.write_(f16|f32|f64) - Add
user_data: rawptrtofilepath.Walk_Proc