2024-11-14: Fuzion November Update
The focus of the Fuzion work shifts towards application development, which shifts also the work on the Fuzion implementation to improve daily usability.
Work on the compiler internals to improve performance is a priority, an important change is that the monomorphization phase of the compiler was merged with the data-flow-analysis reducing the overall runtime requirement.
- General
The
fzwebweb server implementation in Fuzion is ongoing work that has been made public on github: fzwebThe video recording of last month's talk on the Fuzion IR at the SPLASH VMIL workshop is available.
- Base library
-
New base library features
lib: add
fuzion.java.null(#3957)lib: add
net.connections, allowing persisted connections (#3987)lib: add
array.as_mutable(#3977)lib: add
connections.in_thread_pool(#4045)lib: add
String.chunkto split a string in parts of fixed length (#3971)lib: add
choice.type.tag(#3897)lib: add
Sequence.contains(#3968)lib: add
type.equalitytoarray,list,Linked_List(#4016)lib: implementation of
i128(#4034)lib/ast: add
NullaryandBinaryfunctions (#4052)lib/be: add
fuzion.java.cast(#3912)
-
Changes to the following standard library features
lib: bool use
false/trueinstead of uppercase version (#3980)lib: moved
float.type.sin/float.type.cos,... tofloat.sin/float.cos,... (#4037), so instead ofs := f64.sin 3.14you can now write
s := (3.14).sinor even
s := 3.14.sinlib: added new choice type
tritwith valuesTRUE,FALSE, andnil, changedSequence.finiteto returntritto distinquish the cases known finite, known infinite, and unknown. (#4020)lib: change
Sequence.first/lastto return options (#4018)lib: connections/connection change api (#4054)
lib: ensure
Sequence.equalitywith infinite sequences terminates whenever possible (#4021, #4035)lib: fix dead-lock in thread_pool (#3992)
lib:
java_string_to_string, passjava_refdirectly (#3956)lib: merge
num_optionintooption(#3935)lib: move
time.durationsto duration (#4009)lib:
nomcode cleanups (#4046)lib:
nom, remove unneeded types (#4033)lib:
outcome, redefas_outcome(#3955)lib: switch, add
as_outcome,as_option(#3949)
-
Removal of the following standard library features
-
- Documentation
doc: add profiling guide (#4065)
docs: don't create hyperlinks for fields and type parameters (#3892)
docs: heuristic for comments of arguments (#3857)
docs: hide non public arguments in section 'Fields' (#3899)
docs: put type features in seperate sections (#3891)
docs: reorganize content of navigation panel on the left side (#3883)
docs: show type features inherited by and redefined in
Type(#3902)docs: subdivide the api documentation based on library modules (#3923)
- Parser
- Front end
ast: box after resolving sugar2 (#3966)
ast: checkTypes, use isDirectlyAssignableFrom (#3964)
ast: do not try to create cotype of cotype (#3904)
ast: don't show
make ... a reffor choices (#3933)ast: error when declarding type feature within feature that does not define a type (#3985)
ast: fix check failure in
AstErrors.unusedResult(#4064)ast: fix error in inheritance call of type feature (#3960)
ast: fix require condition for
voidconstraint (#3954)ast: improve type inference
flat_mapissue (#3863)ast: improve type inference via choice generics (#3877)
ast: make
x.val.0work foroption (tuple i32 i32)(#3922)ast: raise error on selecting sth on open generic (#3908)
ast: show error when trying to call open type parameter (#3916)
ast: simplify logic of
setActualResultType(#3917)ast: t_UNDEFINED toString() now returns --UNDEFINED-- (#3894)
ast: when trying to resolve dottype-call do not consider special w.r.t. args (#3903)
ast/call: add errors check when replacing call with error (#3893)
fe: allow _ as a placeholder for a type parameter (#3995)
fe: check legality of this types (#4047)
fe: Library.Out, tighten pre condition (#3898)
fe: LibraryOut.type(), pre-cond., add:
t instanceof ResolvedType(#3907)fe: raise error if argument of non constructor has visibility modifier (#3859)
fe: use term 'hash' instead of 'version' for module identifier (#3951)
- Monomorphization / DFA
Replace AIR phase by using DFA to generate FUIR's clazzes (#3839)
Dfa better joining of tagged values (#4053)
dfa: Fix DFA for intrinsic fuzion.java.array_to_java_object0 (#3953)
dfa: fix Env.isAborted (#3915)
dfa: fix require-condition
!fieldExists(field)fuzion.java.array_length (#3911)dfa: remove debug code (#4025)
- FUIR
fuir: add caching for tag*Clazz, box*Clazz, matchStaticSubject (#4041)
fuir: cache result of
boxResultClazz()to improve interpreter execution time (#4011)fuir: fix abstract missing not recorded (#4026)
fuir: fix test atomic on windows/interpreter (#4027)
fuir: Implement GeneratingFUIR.declarationPos() (#4012)
fuir: remove clazz_fuzionJavaObject from clazzNeedsCode (#4000)
fuir/jvm: remove hard-coded Java name for
fuzion.java.Java_Object.Java_Ref(#3925)
- All back ends
be: java intrinsics, support for
set_field, complement ofget_field(#3962)
- JVM back end
jvm: comparison of constants was broken resulting in duplicate constants (#3921)
- C back end
Cheers,
--The Fuzion Team.