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 ofstack<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 formx.y.type
produces instance of a synthetic feature that represents typex.y
- call syntax of the form
f a, b
is not longer supported, must be eitherf a b
orf(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 ascolorOrPoint : 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.
- type parameters in feature declarations are now part of the normal argument list, i.e, you write
- Standard Library
- added to
string
:trimStart
andstring.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
andconcur.thread
- new feature
Type
that will be the parent feature of types - more use of snake case:
string.parse_i32_binary
, etc.
- added to
- 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.