Skip to content

v3.9.0

Choose a tag to compare

@SchoolyB SchoolyB released this 16 Jul 08:43
fac7dd7

Features

  • Generic type parameters via <?> syntax (#1797)
  • Channels: try_send() and try_receive() for non-blocking operations (#1721)
  • else as syntax alias for otherwise (#1974)
  • [K:V] map syntax — map keyword now optional (#1961)
  • Compile-time integer constants as fixed-size array sizes (#1961)
  • --emit-c writes generated C to file instead of stdout (#2049)
  • Custom request headers support in http module (#1994)
  • atomic.spinlock_destroy() to free spinlock memory (#1721)
  • os.unset_env() to remove environment variables (#2002)
  • arrays.any() and arrays.all() higher-order functions (#2000)
  • strings.to_chars(), strings.from_chars(), strings.char_at(), strings.remove_prefix(), strings.remove_suffix(), strings.last_index_of() (#1997, #1998)
  • time.diff() to return the difference between two timestamps (#1997)
  • Helpful hints added to 10 common compiler error messages (#1566)

Bug Fixes

  • Validate Channel type for first arg of all channels functions (#2061)
  • Reject channels.try_receive() single capture with E3040 instead of C error leak (#2060)
  • Materialize rvalue for map field access through explicit ptr deref (#2065)
  • Allow local consts as fixed-size array sizes (#2070)
  • Strip \$ escape in codegen so escaped interpolation emits valid C (#2077)
  • Char/byte array literals use correct elem_size in codegen (#2066)
  • Typecheck index argument in arrays.remove_at() and arrays.insert_at() (#2000)
  • Catch channels.send/try_send type mismatch and resolve module-qualified types (#2061)

Final Release

This is the final release of the EZ programming language.