Fuzion Logo
flang.dev — The Fuzion Language Portal
JavaScript seems to be disabled. Functionality is limited.

2022-08-16: Fuzion August Update


Here is this month's update:

  • Fuzion language
    • added syntax sugar for tuple types like (i32, list bool).
    • allowed types to be put in parentheses, i.e., (stack i32) is the same as stack i32. Syntax of .env and .type will require parentheses, i.e., instead of stack i32 .type one will have to write (stack i32).type and similarly for .env.
    • changed parser to allow actual arguments passed to type parameters to be any type, including function types (i32)->bool or tuples (i32, string).
    • removed support for lambdas using fun keyword, i.e., instead of fun (x i32) -> x+x, you have to write x -> x+x. Type inference from a lambda is not possible, though.
    • features with empty argument list and a result type that is put in parentheses (usually a tuple) now require an empty argument list () since the result type would otherwise be parsed as an argument list.
  • Intermediate Representation
    • Added abstract interpreter framework and application-wide data-flow analysis
  • C backend
    • can optionally use Boehm garbage collector now, enabled via -useGC option for the fz command
    • Uses whole-program data-flow analysis to remove unreachable features, resulting in a significant reduction in code size and compile time
  • benchmarks
    • added a variety of "standard" benchmarks to be run nightly (not deployed to flang.dev website yet)
  • flang.dev
    • porting of webserver from Java to Fuzion has started. Performance still too poor to deploy, though.
  • language sever
    • shows used effects of main feature(s) in inlay hint:
      inlay hint
  • fzjava
    • fixed passing of arrays of references when calling Java code from Fuzion features.
  • base library
    • started adding support for file I/O.
    • asString on mutable value now calls asString on the value.
    • mapOf now accepts an array of tuples as follows:
      myMap := mapOf [ ("one", 1), ("two", 2), ("three", 3) ]