2022-04-08: Fuzion April Update
Hi,
Here is this month's update:
- Social Media
- There is a Fuzion Twitter Feed, please follow!
- Effects
- Support for Effects was added to Fuzion
- Inspired by languages like Koka, Flix, Effekt
- Goal is to encapsulate (side-) effects in otherwise pure functions such that
- non-functional effects are formally documented, become part of the signature.
- code can be statically analyzed for dependencies and impact on the external world
- non-local control flow is supported
- these effects can be replaced by different handlers (e.g., code that prints to io.out (stdout) could be called using a handler for io.out that redirects the output to a file).
- Parts of the standard library use effects now.
- fuzion-lang.dev
- Effects not explained as part of the tutorial right at the start and in a specific section on effects.
- Design pages contain a section on effects.
- Fuzion Language
- New expression
type.env
to access effect of given type. - Unicode punctuations are now allowed as codepoints within operators
- New expression
- Standard Library
- New effects:
io.out
,io.err
,random
,time.nano
,state T
,envir.args
,try/raise
-
f32
/f64
now offer trigonometric functions,exp
,log
,and squareRoot
, and constantsℇ
,π
- intersection operator added to psSet:
infix ⋂
- New effects:
- fz command
-
fz -effects main.fz
now performs static analysis onmain.fz
and prints effects required by this feature.
-
- C backend
- Support for
f32
andf64
- Support for
- Language Server
- Now tries to offer infix/postfix operator completion.
- Testing
- Tests on windows now automated using github CI
Cheers,
--Fridtjof.