2024-08-13: Fuzion August Update
The main change we see in August is a significant growth in the Fuzion team due to two interns joining us. Feedback from new team members results in significant usability improvements in Fuzion
- General
We have two additions to our team in August: Khalil Mejri joins us for an internship as part of his bachelor degree in software engineering and Lisa Wirkner joins us for a two week work experience internship implementing internationalization as an effect.
- Fuzion language
Shadowing of fields is no longer permitted to avoid confusion (#3322)
numeric literals are no longer automatically converted to
i64
if they do not fit the range ofi32
(#3414)relaxed semantics for choice features: They now may inherit from one other choice feature (#3060)
This permits code to, e.g., inherit from
option
:maybe_String : option String is redef as_string => is_nil ? "no String" : "a String: $val"
Defining a type feature in
universe
now results in an error (#3411)
- Base library
-
Added libraries for base16 (hex) (#3375), base32/base32hex (#3368), and base64/base64url encodings (#3319)
panic
andtry
now inherit fromeff.fallible
(#3335)This permits catching a
panic
as follows:panic.try function_that_may_panic .catch (msg -> say "*** caught panic $msg ***")
- Minor improvements
Made
outcome.is_error
public
(#3351)ctrie
now uses ids for root and snapshot like the reference implementation (#3280)merged
character_encodings
andencodings
(#3393)merged
list.filter0
withlist.filter
(#3417)moved
infix ∈
andinfix ∉
toproperty.equatable
(#3325)Removed feature
Types
, moveTypes.get
totype_as_value
, fix #3431 (#3466)remove type parameter from
effect.type.unsafe_get
(#3450)rename
list.zip0
aslist.zip
(#3413)In feature documentation, replaced triple backticks by quadruple indentation. (#3331)
writer
, changed arg-type fromarray
toSequence
(#3384)io.buffered.reader
: pass mutate effect as argument (#3389)io.buffered.writer
: fix out of bounds access to source array (#3475)net.client
: switched toio.buffered.writer
(#3309)net.server
: switched toio.buffered.writer
(#3332)process
: made it possible to useio.buffered.writer
for writing (#3304)String
: changedcut
feature result from tuple to record type (#3400)bool
: made the ternary operator lazy (#3404)
-
- Documentation
-
Fuzion Reference Manual
- Fuzion API Documentation
show
ref
keyword to API documentation (#3425)added reference constructor section in API docs (#3433)
split types section into 'reference types' and 'value types', include constructors (#3435)
fix code lines not added if last in comment (#3333)
generate type feature documentation inside original feature (#3407)
include inherited features in the docs (#3451)
sort feature names in API docs case insensitively (#3427)
underline all links in API docs on mouse-over (#3398, #3440)
use
cursor:pointer
on complete<details>
element. (#3441)
-
- Parser
- Front End
improve errors reported for too restrictive visibility of outer types (#3432)
performance: cache result of
ResolvedNormalType.isRef()
(#3448)Fixed outer type resolution for partial calls resulting in unjustified errors, fix #3306 (#3307)
-
Minor improvements
destructure, update java doc (#3282)
made code more robust in case of compilation errors. (#3327)
Improved error shown on failure of a pre- / post-condition, now shows full failing expression (#3291)
raise error on redefining field (#3387)
Re-resolve Current if used as partial function, improve #3308 (#3314)
Show declared feature in case of wrong number of actual arguments (#3329)
Fixed bug when checking actual type par against constraints for choice, fix #3362 (#3386)
- Middle End
fix field falsely detected to be redefined (#3412)
reduce verbosity level of
GLOBAL CLAZZ
output (#3402)Move reporting missing implementations of abstracts to DFA, fix #3359 (#3397)
fuir:
isTailCall
, handle case boxing (#3409)dfa: When
fz
is run with-verbose=1
, print the time spent during DFA (#3401)
- Back ends
Preconditions are front-end syntax sugar now, so precondition handling was removed from all back ends(#3285)
- JVM back end
- C back end
always do tail call optimization no matter the lifetime (#3462)
create call
fzE_create_jvm
only ifJAVA_HOME
is set (#3361)fix code being generated for effect detected not to be used (#3366)
fix logic for
FUZION_DEBUG_TAIL_CALL
(#3408)follow clang-tidy suggestions (#3365)
implement dir traversal for win.c (#3349)
- Util
fix
ArrayIndexOutOfBoundsException
when creating error message (#3457)Fix handling of env var
FUZION_DISABLE_ANSI_ESCAPSE
(#3455)fix source range length in error message (#3443)
move non Error specific helper methods to
StringHelper
(#3430)sort allocation statistics output (#3447)
use curly underline instead to display error location (#3367)
Move handling of properties to FuzionOptions, add env var support (#3449)
- Tests
io.dir, align behavior of back ends and add test (#3270)
always use
-XmaxErrors=-1
(#3396)change filenames for
record_int
(#3444)fix
grep: empty (sub)expression
(#3305)fix two problems in
check_example
scripts (#3377)In scripts for simple C tests, handle PIPE_FAIL (141) (#3286)
increase stack size
process_buffered_writer
(#3320)portable nproc (#3290)
prepare for removing variable shadowing (#3311)
use some local mutate for buffered writer and web-server (#3382)
ast/tests: Do not turn ambiguous type into a free type, fix #3337 (#3339)
ast/tests: Repeat type resolution for arguments in lambda to fix #3315 and fix #3308 (#3318)
fz
commandfz: underline code in errors instead of marking with circumflex (#3342)
- Infrastructure
Cheers,
--The Fuzion Team.