dev-2022-12
gingerBill
released this
06 Dec 22:54
·
6146 commits
to master
since this release
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_zeroed
andfree
internally
- Only requires
- Robin Hood hashing
- Smaller header information (
runtime.Map_Info
) for dynamic calls. - Allows for calling
delete_key
whilst 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
, orname
if built-in (or the initial package for convenience)
- Variables are namedspaced with
- Improvements to debug information generation
-default-to-nil-allocator
also enabled-no-dynamic-literals
- Improvements to
intrinsics.ptr_sub
code generation - Numerous bug fixes
New Packages
vendor:cgltf
Package Improvements
- Add
Allocator_Mode.Alloc_Non_Zeroed
- DirectX packages to use
bit_set
for flags where possible instead of just anenum
- Implement numerous
core:math
procedures in native Odin - Add
math.pow10
- Add
strings.write_(f16|f32|f64)
- Add
user_data: rawptr
tofilepath.Walk_Proc