Skip to content

dev-2022-12

Compare
Choose a tag to compare
@gingerBill gingerBill released this 06 Dec 22:54
· 5336 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 and free internally
    • 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, or name if built-in (or the initial package for convenience)
  • 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 an enum
  • Implement numerous core:math procedures in native Odin
  • Add math.pow10
  • Add strings.write_(f16|f32|f64)
  • Add user_data: rawptr to filepath.Walk_Proc