Skip to content

dev-2024-07

Latest
Compare
Choose a tag to compare
@gingerBill gingerBill released this 01 Jul 17:28
· 282 commits to master since this release
b4ca044

New Language Features

  • Allow for constant strings in foreign imports
  • #exists(<string>) -> bool
  • @(rodata)
  • context.random_generator
    • Brand new runtime.Random_Generator interface

Compiler Improvements

  • Brand new Multithreaded Test Runner
  • Improvements to error line rendering
    • Full support for Unicode grapheme clusters
  • NetBSD ARM64 support
  • -show-defineables and -export-defineables
  • -vet-cast
    • Looks for redundant casts or transmutes, and transmutes that should be casts
  • -strict-style now enforces a lot more regarding the official Odin code base style
    • -vet-style is a much weaker form that does not have all of the same enforced options as -strict-style
    • Enforces -vet-cast
    • Enforces case statements to be in the same column as their switch token
    • 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 for and label: #partial switch
  • Allow #soa arrays to be used directly with make, 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 f32 operations when doing complex32 and quaternion64 operations to improve accuracy and performance
  • Allow for when x in y { (minor oversight in syntax)
  • Keep bit_field accesses 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:flags
  • core:encoding/uuid
  • core:mem/tlsf
    • "Two-Level Segregated Fit" memory allocator
  • core:image/bmp

Package Improvements

  • core:text/table now supports Unicode grapheme clusters correctly
  • core:math/rand now uses the new context.random_generator interface instead of the implementation specific rand.Rand
  • core:crypto has 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:raylib declarations
  • Move rlgl to vendor:raylib/rlgl
  • Fixes to core:math/big and add numerous other utility procedures
  • Fix code generation for vendor:vulkan on ^[3]f32 parameters
  • Numerous improvements to core:odin/parser
  • Make runtime.heap_alloc et al "contextless"
  • Add #no_broadcast to append_soa calls
  • Add no_zero_* variants for #soa dynamic arrays
  • More test suites