diff --git a/release_notes.md b/release_notes.md index 5252c7473b..662dcacbc4 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,4 +1,169 @@ -## 2024-**-**: V0.087 +## 2024-03-07: V0.087 + +- General + + - The Fuzion GitHub repository is open for external contributors, we added a Contributor License Agreement and documentation for new contributors ([#2500](https://github.com/tokiwa-software/fuzion/pull/2500), [#2502](https://github.com/tokiwa-software/fuzion/pull/2502), [#2505](https://github.com/tokiwa-software/fuzion/pull/2505), [#2514](https://github.com/tokiwa-software/fuzion/pull/2514), [#2538](https://github.com/tokiwa-software/fuzion/pull/2538), [#2545](https://github.com/tokiwa-software/fuzion/pull/2545)). + + - We have switched to using JDK 21 ([#2504](https://github.com/tokiwa-software/fuzion/pull/2504)). + +- Documentation + + - API documentation is now grouped by feature types ([#2431](https://github.com/tokiwa-software/fuzion/pull/2431)). + + - Work on a Fuzion reference manual as started ([#2490](https://github.com/tokiwa-software/fuzion/pull/2490)). + + - Documentation for the `universe` feature was added ([#2625](https://github.com/tokiwa-software/fuzion/pull/2625)). + + - Type features are now included in the generated API documentation ([#2649](https://github.com/tokiwa-software/fuzion/pull/2649)). + +- Build infrastructure + + - Added a `base-only` target to the `Makefile` for faster build-test cycles ([#2501](https://github.com/tokiwa-software/fuzion/pull/2501)). + +- Fuzion language + + - A function feature can no longer be declared using `f rt is ...` it must be `f rt => ...`, declarations using `is` are used only for constructors ([#2401](https://github.com/tokiwa-software/fuzion/pull/2401), [#2443](https://github.com/tokiwa-software/fuzion/pull/2443), [#2444](https://github.com/tokiwa-software/fuzion/pull/2444)). + + - The `.type.` can now be omitted in calls to type features ([#2631](https://github.com/tokiwa-software/fuzion/pull/2631)). + +- base library + + - Minor additions to `composition.fz` adding links and more birds, but still work in progress [#2491](https://github.com/tokiwa-software/fuzion/pull/2491). + + - Removed `as_stream` as a step towards removing streams altogether ([#2476](https://github.com/tokiwa-software/fuzion/pull/2476)). + + - Added `Sequence.peek` ([#2475](https://github.com/tokiwa-software/fuzion/pull/2475)). + + - Features `TRUE` and `FALSE` are no longer public, but the corresponding types are ([#2468](https://github.com/tokiwa-software/fuzion/pull/2468)). + + - Added pipe features `<|`, `<||`, etc. to establish symmetry with `|>`, `||>`, etc. ([#2462](https://github.com/tokiwa-software/fuzion/pull/2462)). + + - The `unit.type.monoid` is now `public` ([#2418](https://github.com/tokiwa-software/fuzion/pull/2418)). + + - Removed `say` without arguments to print a new line to enable the use of `say` with one argument in partial applications like `l.for_each say` ([#2406](https://github.com/tokiwa-software/fuzion/pull/2406)). + + - Replaced `is` by `=>` in function features ([#2401](https://github.com/tokiwa-software/fuzion/pull/2401)). + + - Intrinsics and effects that allow directory listing have been implemented ([#1688](https://github.com/tokiwa-software/fuzion/pull/1688), [#2635](https://github.com/tokiwa-software/fuzion/pull/2635)). + + - Add `infix ::` to `list`, which allows creating a list from a given starting element and a partial function that gets applied on each iteration ([#2516](https://github.com/tokiwa-software/fuzion/pull/2516)). + + This permits code like + + ints := 0 :: +1 + + to create a list of all integers starting at `0` and calculating the next element by adding one using the partial function `+1`. + + - Change `Sequence.infix |` to be an alias for `map`, the new alias for `for_each` is `Sequence.infix !` now ([#2517](https://github.com/tokiwa-software/fuzion/pull/2517)). + + - Handling of infinite sequences has been made more convenient since the number of entries shown by `as_string` is limited for non-finite sequences ([#2528](https://github.com/tokiwa-software/fuzion/pull/2528)). + + You can now safely do things like + + say (1.. | x->x**2) + + which used to crash, but now results in + + [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, …] + + - Add feature `String.is_ascii` ([#2531](https://github.com/tokiwa-software/fuzion/pull/2531)). + + - `Set.add` was implemented due to errors with the abstract version ([#2533](https://github.com/tokiwa-software/fuzion/pull/2533)). + + - When producing a string from a sequence, separate the elements with `, ` instead of just a `,` ([#2548](https://github.com/tokiwa-software/fuzion/pull/2548)). + + - Facilities to launch processes have been added ([#2575](https://github.com/tokiwa-software/fuzion/pull/2575)). + + - Visibility of `Type` is now `module:public`, because nothing should inherit from or call `Type` ([#2581](https://github.com/tokiwa-software/fuzion/pull/2581)). + + - `bench` now uses the `time.nano` effect ([#2606](https://github.com/tokiwa-software/fuzion/pull/2606)). + + - `String`: add features for center, left, and right padding of strings ([#2609](https://github.com/tokiwa-software/fuzion/pull/2609)). + + - Some fixes for unsafe intrinsics ([#2521](https://github.com/tokiwa-software/fuzion/pull/2521), [#2594](https://github.com/tokiwa-software/fuzion/pull/2594), + [#2627](https://github.com/tokiwa-software/fuzion/pull/2627)). + + - Refactoring of `interval` ([#2551](https://github.com/tokiwa-software/fuzion/pull/2551), [#2560](https://github.com/tokiwa-software/fuzion/pull/2560), [#2608](https://github.com/tokiwa-software/fuzion/pull/2608)). + +- Front End + + - Added visibility checks for `abstract` features ([#2453](https://github.com/tokiwa-software/fuzion/pull/2453)). + + - Improve type inference for tagged union types ([#2582](https://github.com/tokiwa-software/fuzion/pull/2582)). + + # infers that all the numbers to be of type option f64 + a := [0.3, option 3.142, nil, 42] + + # infers that all the numbers to be of type option f64 + if b then 42 else option 3.14 + + - Improve type inference type parameters ([#2585](https://github.com/tokiwa-software/fuzion/pull/2585)). + + # type parameters for `zip` can now be inferred in this case: + prods := ([1,2,3].zip 0.. a,b->a*b) + + - Remove string comparisons in the code ([#2616](https://github.com/tokiwa-software/fuzion/pull/2616), [#2617](https://github.com/tokiwa-software/fuzion/pull/2617)). + + - Replace `Could not find called feature` messages by more specific errors in case the feature could be found but is invisible or the argument count does not match ([#2622](https://github.com/tokiwa-software/fuzion/pull/2622)). + + - Suppress `declarationsInLazy` error if it is a subsequent error, due to frequent false-positives ([#2628](https://github.com/tokiwa-software/fuzion/pull/2628)). + + - Fix source range of parsed lambdas ([#2646](https://github.com/tokiwa-software/fuzion/pull/2646)). + +- Middle End + + - Significant performance improvement and cleanup in the handling of run-time types (clazzes), ([#2416](https://github.com/tokiwa-software/fuzion/pull/2416), [#2413](https://github.com/tokiwa-software/fuzion/pull/2413)). + +- Analyzers + + - `fz -effects` now uses the data-flow analysis (DFA) infrastructure instead of the less accurate control flow graph (CFG) ([#2407](https://github.com/tokiwa-software/fuzion/pull/2407)). + +- JVM back end + + - Fixed `VerifyError` for features resulting in void ([#2477](https://github.com/tokiwa-software/fuzion/issues/2477), [#2485](https://github.com/tokiwa-software/fuzion/pull/2485)). + + - Fixed race conditions between warnings printed by JVM back end and errors by running code that resulted in flaky test runs ([#2426](https://github.com/tokiwa-software/fuzion/pull/2426), [#2469](https://github.com/tokiwa-software/fuzion/pull/2469)). + + - The fzjava interface known from the interpreter that allows calling into Java code is now supported by the JVM backend as well ( [#2487](https://github.com/tokiwa-software/fuzion/pull/2487)). + + - Support for the stackmap table attribute was added ([#2499](https://github.com/tokiwa-software/fuzion/pull/2499), [#2556](https://github.com/tokiwa-software/fuzion/pull/2556)). This allowed switching to class files for JDK version 21. + + - Improvements to tail recursive call optimization (however, this does still not work in many cases) ([#2543](https://github.com/tokiwa-software/fuzion/pull/2543)). + + - The `-jar` and `-classes` backends now create a run script that allows one to easily run the jar file or the classes ([#2547](https://github.com/tokiwa-software/fuzion/pull/2547)). + + - For the `-jar` and `-classes` backends, fix the result of `envir.args` ([#2549](https://github.com/tokiwa-software/fuzion/pull/2549)). + + - The `-jar` and `-classes` backends now support an optional argument `-o=<outputName>` to specify the name of the generated output ( [#2567](https://github.com/tokiwa-software/fuzion/pull/2567)). + +- C back end + + - Fixed internal handling of `void` types ([#2466](https://github.com/tokiwa-software/fuzion/pull/2466)). + + - The Boehm Garbage Collector is now enabled by default fixing a giant memory leak ([#2428](https://github.com/tokiwa-software/fuzion/pull/2428)). + + - Separated `include/fz.h` into platform-specific files, refactored ([#2553](https://github.com/tokiwa-software/fuzion/pull/2553), [#2573](https://github.com/tokiwa-software/fuzion/pull/2573), [#2601](https://github.com/tokiwa-software/fuzion/pull/2601)). + + - Replace `__atomic` compiler-specific built-ins by C11 standard atomics ([#2563](https://github.com/tokiwa-software/fuzion/pull/2563)). + + - Not longer emits duplicate casts in generated code ([#2592](https://github.com/tokiwa-software/fuzion/pull/2592)). + + - The generated C source files are not deleted unless `-XkeepGeneratedCode` is set ([#2605](https://github.com/tokiwa-software/fuzion/pull/2605)). + +- `fz` tool + + - Run simple examples given on the command line using the `-e <code>` or `-execute <code>` argument ([#2618](https://github.com/tokiwa-software/fuzion/pull/2618)). So it is now possible to do + + fz -e 'say "Hello, world!"' + + to run a one-liner. + + - In the case of a contract failure (pre/post-condition or check) due to a bug in the fz tool, the failed expression will now be shown ([#2619](https://github.com/tokiwa-software/fuzion/pull/2619)). + + - Running `fz` without any arguments now shows the general help instead of the default backend help ([#2648](https://github.com/tokiwa-software/fuzion/pull/2648)). + + - Experimentation with calling the Fuzion compiler via fzjava from the JVM backend have started ([#2536](https://github.com/tokiwa-software/fuzion/pull/2536)). + ## 2024-01-11: V0.086 @@ -3222,3 +3387,10 @@ Benchmarks: ## 2020-09-29: V0.001 - First version to be presented to very few selected users via the fuzion-lang.dev website. + + + + diff --git a/version.txt b/version.txt index 9a6a30ee94..ad6b43f289 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.087dev +0.087