Skip to content

v0.13.0

Compare
Choose a tag to compare
@gingerBill gingerBill released this 30 Aug 16:52
· 10872 commits to master since this release
31989c9

New Features

  • LLVM C API integration for Windows through -llvm-api
  • Experimental Support for -llvm-api for Linux and MacOS
  • union #maybe directive
  • Built-in Maybe type, e.g. Maybe(int) or Maybe(^T)
  • Selector Call Expressions x->y(123) == x.y(x, 123) (useful for COM APIs)
  • Allow .? to unwrap any union depending on the inferred context
  • Remove using import
  • not_in replaced notin
  • Relative pointers #relative(i16) ^Foo
  • Relative slices #relative (i16) []Foo
  • Add "pure" procedure types
  • Add new ternary expressions: x if cond else y and `x when cond else y
  • Support by-reference semantics for for value_ref, i in &some_array and for key, value_ref in &some_map
  • Allow map indices to be references &m[key] and return a valid pointer if exists otherwise nil
  • Allow referencing a compound literal &Foo{}
  • Slice literals will use stack memory within a procedure and global memory in a global scope
  • Add -subsystem flag for Windows
  • Allow shadowing for -vet with immutable parameters
  • @(force)/@(require) attributes for foreign import (they are equivalent)
  • Endian specific floats, i.e. f32le f64be
  • #optional_ok for procedures
  • Improved odin <command> help
  • -ignore-vs-search
  • Support --flag as redundancy for -flag
  • Add -extra-linker-flags:<string>
  • Add #config to replace #defined
  • Restrict #defined within procedure bodies to remove possible race conditions
  • Remove the need for type_of, size_of, align_of, and offset_of to be keywords (now regular identifiers)
  • Strip \r from raw string literals
  • Experimental Support for WASM
  • Add -target:<string> with fuzzy checking

Library Improvements

  • Improve package os
  • Add package unicode with basic letter querying
  • Add utf8.string_to_runes and utf8.runes_to_string
  • Add more intrinsics (cpu_relax, alloca, type_*, etc)
  • Add #const to enforce constant procedure parameters to variable parameters
  • Add package sys/windows which will replace package sys/win32 in the future
  • Add more helpers to package reflect
  • Remove context.stdout/stderr
  • Add package container
  • Add more hashes
  • More package sync features
  • More package thread features
  • New mem.Allocator_Modes Query_Features and Query_Info

Bug Fixes

  • Numerous core library bug fixes
  • Fix defer related bugs
  • Fix __dynamic_array_reserve edge cases with zero sized types
  • Improve System V ABI
  • Fix name mangling for @(private) entities
  • Fix time.now() being one day out on leap years after the leap month