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

2022-05-06: Fuzion May Update

Hi,

Here is this month's update:

  • Events
    • A talk on Fuzion was accepted for this month's GPN20!
  • fuzion-lang.dev
    • twitter feed integration
    • browser-back-button improved
    • idioms:
      • added idioms: 80: truncate floating point
      • updated several idioms to use type inference instead of explicit type parameters
      • Used new enum-style syntax for choice in idiom 122: Suit : choice of SPADES, HEARTS, DIAMONDS, CLUBS.
    • Design: Added idea for supporting different levels of visibility.
  • Fuzion Language
    • type parameters in feature declarations are now part of the normal argument list, i.e, you write stack(T type, size i32) is ... instead of stack<T>(size i32) is .... The old syntax using < and > will eventually be removed when the uniform syntax proofs useful.
    • New keyword type, expression of the form x.y.type produces instance of a synthetic feature that represents type x.y
    • call syntax of the form f a, b is not longer supported, must be either f a b or f(a,b)
    • Easier syntax for choice type declarations:
        red is
        green is
        blue is
        point(x,y i32) is
      
        colorOrPoint : choice<red, green, blue, point> is
              
      can now be written as
        colorOrPoint : choice of
          red, green, blue.
          point(x,y i32).
              
    • match statements now support * as default branch
    • If the result type of a lambda is a type parameter to the surrounding call, type inference now can determine that type parameter (provided all types in the lambda expression are known). This helps with features like map that in most cases no longer need explicit type parameters.
  • Standard Library
    • added to string: trimStart and string.trimEnd
    • added Sequence: flatMap, first(default T), nth(n i32)
    • added float: atan2, isNan, fraction, round, floor, ceil
    • added numericSequence: average, mean, ...
    • added floatSequence: std_dev
    • added ctrie: concurrent lock free hash trie, unfinished but works single threaded
    • new effects: panic, exit and concur.thread
    • new feature Type that will be the parent feature of types
    • more use of snake case: string.parse_i32_binary, etc.
  • IR
    • Module files (.fum) no longer contain generic arguments, but type parameter fields instead. This simplifies the IR further by eliminating special handling for generic arguments.
  • Language Server
    • jump to definition for redefinition now offers the redefined features as well
    • jump to definition, if no matching feature found look for features with same name but different arg count
    • fix some issues with the new type args
    • changed, when choosing heuristic for completions etc. consider token left and right of cursor. before only right token was considered.
    • failed, tried improving experience editing stdlib files
  • Other
    • added Fuzion to https://github.com/ChessMax/awesome-programming-languages

Cheers,

--Fridtjof.