Fuzion Logo
fuzion-lang.dev — The Fuzion Language Portal
JavaScript seems to be disabled. Functionality is limited.

2024-10-17: Fuzion October Update

Last month was the first month with no changes to the Fuzion language. But this was not due to lack of activity, but the focus has clearly shifted to Fuzion application development, base library work, documentation and internal improvements.

  • General
    • At OOPSLA / SPLASH 2024's VMIL workshop, the internals of The Fuzion Intermediate Representations will be presented next Sunday.

    • In the background, we are working on implementing the web server for the Fuzion website in Fuzion itself. The work on this is not yet public, but we are making good progress. It will be released as soon as the initial development phase is complete.

  • Fuzion language
    • no changes!

  • Base library
    • New base library features

      • concur.Futur

        • add concur.Futur and thread.submit that returns a Future (#3625)

        • add and_then to concur.Future (#3768)

      • added SIEVE cache implementation (#3760)

      • added composition operations O/B3 (owl and becard) (#3782)

      • date_time now supports before/after (#3856)

      • Introduced switch, parent of choices with success and failure (#3732)

      • Enable resource cleanup in effects via effect.finally (#3784)

    • Changes to the following standard library features

      • Faster find in Sequence and String using Knuth Morris Pratt search algorithm (#3713)

      • lock_free.map add NYI, indentation fixes, ... (#3701)

      • net/server, add thread_pool arg to accept_threaded (#3673)

      • option/outcome, change panic messages (#3564)

      • Sequence.slice add precondition (#3720)

  • API Documentation
    • annotate features which are or contain abstract features (#3704)

    • annotate private constructors (#3815)

    • annotate redefined features (#3719)

    • complete restructuring of sections based on AbstractFeature.Kind (#3821)

    • don't show parents of function features (#3804)

    • fix check-condition (_sourceModule != null); (#3828)

    • fix wrongly displayed is where it should be => (#3810)

    • show features inherited from Type as type features (#3717)

    • show names of generic types relative to the feature they are used in (#3814)

    • use monospace font only for code, increase contrast on description (#3806)

  • Parser
    • parser: change implFldInit to use operatorExpr not exprInLine (#3864)

    • parser: do not parse single dot as operator (#3746)

  • Front end
    • Frontend produces librarymodule (#3811)

    • createMIR from library module (#3675)

    • fix check condition failure (#3707)

    • flag error on illegal .this type (#3696)

    • library feature current, use thisType of selfType (#3774)

    • refine check, legal qual this type (#3766)

    • Wip frontend reset (#3775)

    • ast/air: Small cleanup in logic for this-type replacement (#3807)

    • ast: avoid duplicate error with source position 'built-in' (#3785)

    • ast: Don't let co-type inherit from Type in case of earlier errors (#3791)

    • ast: fix "source position not available" in error (#3735)

    • ast: fix NPE in empty_constructor4.fz example (#3715)

    • ast: fix outers generics where not fully resolved => require condition failure (#3755)

    • ast: fix precondition failure, AbstractType.asString (#3641)

    • ast: fix stack overflow in case of recursive constraint (#3751)

    • ast: generate type features for more than just constructors/choice (#3655)

    • ast: improve error message when redefining hidden feature (#3618)

    • ast: improve logic for order of duplicate feature declaration errors (#3790)

    • ast: In Call, relax target type lookup to allow for partial application, fix #3658 (#3671)

    • ast: inference via constraint type parameter (#3838)

    • ast: Resolution.resolveTypes, relax post condition (#3706)

    • ast: suppress subsequent error of generated feature λ.call (#3692)

    • ast: Types, remove unused f_Any (#3712)

    • ast/fe: Simplify Expr.box, add box result type to .fum file (#3872)

  • DFA
    • dfa: "effect.type.default0" install new effect only if none is installed (#3702)

    • dfa: Env, fix logic bug in env merging code (#3780)

    • dfa: redefine matchCaseTags to return nothing if case never evaluated by DFA (#3700)

  • Middle End
    • First step to remove air and use DFA for monomorphization (#3820)

    • ai: add check to access of env, site should not always result in void (#3748)

    • air: Add missing this-type replacement in co-type inheritance clause, fix #3801 (#3805)

    • air: remove Clazzes.instance (#3729)

    • air: Use sourceRange(), not pos() when missing abstract implementation (#3795)

  • Fuzion IR
    • fuir: remove manual stack cleanup (#3217)

  • JVM back end
    • jvm: add FuzionOptions to jar file when using -jar target (#3783)

    • jvm: Use special value instead of null for unit type effect to fix #3734 (#3736)

    • be/jvm,dfa: fix get_static_field0 (#3853)

    • be/jvm: add check for locals of stackmaptable (#3836)

    • be/jvm: cleanup, break up long boolean expression (#3765)

    • be/jvm: fix "VerifyError: Instruction type does not match stack map" (#3745)

    • be/jvm: fix check condition in drop (#3764)

    • be/jvm: fix verify error #3778 (#3829)

    • be/jvm: get_field fix ClassCastException (#3862)

    • be/jvm: use resultType instead of javaType in a few places (#3788)

    • be/jvm/c: fix get_field0 (#3851)

    • be/jvm/runtime: handle null message in getException (#3800)

    • fzjava: improve determinism of short-hands (#3854)

  • C back end
    • c: remove uses of FUIR.isIntrinsicUsed (#3822)

    • c/jvm: in error created in the backends, output clazz names in quotes (#3855)

    • be/c: die more gracefully, if JVM not started (#3844)

    • be/c: handle jstring==NULL more gracefully (#3846)

  • Interpreter back end
    • be/int: add tail call optimization (#3722)

    • int: Add error handling to exit after an exception in a spawned thread (#3824)

  • Tests
    • tests: add regression tests (#3709, #3874, #3865, #3841, #3743)

    • tests: add suffix _int to expected out/err files if files for other backends exist (#3818)

    • tests: fix "result is not used" error (#3725)

    • tests: fix calls_on_ref_and_val_target_negative and change to simple_and_negative (#3740)

    • tests: fix windows test failure (#3867)

    • tests: improve negative tests to clearly display result (#3708)

    • tests: kill after 600s (#3830)

    • tests: replace negative tests with simple_and_negative tests(#3759, #3762, #3779)

    • tests: skip onesCount in interpreter takes >10min on linux (#3868)

    • tests: skip test lib_concur_thread_pool in be/c (#3832)

  • Util
    • util: cleanup, remove mir expr kind Stop (#3827)

    • util: fix crash of non ascii-7-codepoint (#3699)

  • Windows
    • win: fix found identifier '�' (#3739)

Cheers,

--The Fuzion Team.

last changed: 2024-10-17