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
fzweb
web 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.chunk
to split a string in parts of fixed length (#3971)lib: add
choice.type.tag
(#3897)lib: add
Sequence.contains
(#3968)lib: add
type.equality
toarray
,list
,Linked_List
(#4016)lib: implementation of
i128
(#4034)lib/ast: add
Nullary
andBinary
functions (#4052)lib/be: add
fuzion.java.cast
(#3912)
-
Changes to the following standard library features
lib: bool use
false
/true
instead of uppercase version (#3980)lib: moved
float.type.sin
/float.type.cos
,... tofloat.sin
/float.cos
,... (#4037), so instead ofs := f64.sin 3.14
you can now write
s := (3.14).sin
or even
s := 3.14.sin
lib: added new choice type
trit
with valuesTRUE
,FALSE
, andnil
, changedSequence.finite
to returntrit
to distinquish the cases known finite, known infinite, and unknown. (#4020)lib: change
Sequence.first
/last
to return options (#4018)lib: connections/connection change api (#4054)
lib: ensure
Sequence.equality
with infinite sequences terminates whenever possible (#4021, #4035)lib: fix dead-lock in thread_pool (#3992)
lib:
java_string_to_string
, passjava_ref
directly (#3956)lib: merge
num_option
intooption
(#3935)lib: move
time.durations
to duration (#4009)lib:
nom
code 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 ref
for 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
void
constraint (#3954)ast: improve type inference
flat_map
issue (#3863)ast: improve type inference via choice generics (#3877)
ast: make
x.val.0
work 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.