Skip to content

Commit

Permalink
Merge pull request #2673 from tokiwa-software/v0.087
Browse files Browse the repository at this point in the history
set version to 0.087, add release notes
  • Loading branch information
fridis authored Mar 7, 2024
2 parents 836bf83 + 75e05e9 commit 692842b
Show file tree
Hide file tree
Showing 2 changed files with 174 additions and 2 deletions.
174 changes: 173 additions & 1 deletion release_notes.md
Original file line number Diff line number Diff line change
@@ -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:/tokiwa-software/fuzion/pull/2500), [#2502](https:/tokiwa-software/fuzion/pull/2502), [#2505](https:/tokiwa-software/fuzion/pull/2505), [#2514](https:/tokiwa-software/fuzion/pull/2514), [#2538](https:/tokiwa-software/fuzion/pull/2538), [#2545](https:/tokiwa-software/fuzion/pull/2545)).

- We have switched to using JDK 21 ([#2504](https:/tokiwa-software/fuzion/pull/2504)).

- Documentation

- API documentation</a> is now grouped by feature types ([#2431](https:/tokiwa-software/fuzion/pull/2431)).

- Work on a Fuzion reference manual as started ([#2490](https:/tokiwa-software/fuzion/pull/2490)).

- Documentation for the `universe` feature was added ([#2625](https:/tokiwa-software/fuzion/pull/2625)).

- Type features are now included in the generated API documentation ([#2649](https:/tokiwa-software/fuzion/pull/2649)).

- Build infrastructure

- Added a `base-only` target to the `Makefile` for faster build-test cycles ([#2501](https:/tokiwa-software/fuzion/pull/2501)).

- Fuzion language

- A function feature can no longer be declared using `f rt is ...` it must be `f rt =&gt; ...`, declarations using `is` are used only for constructors ([#2401](https:/tokiwa-software/fuzion/pull/2401), [#2443](https:/tokiwa-software/fuzion/pull/2443), [#2444](https:/tokiwa-software/fuzion/pull/2444)).

- The `.type.` can now be omitted in calls to type features ([#2631](https:/tokiwa-software/fuzion/pull/2631)).

- base library

- Minor additions to `composition.fz` adding links and more birds, but still work in progress [#2491](https:/tokiwa-software/fuzion/pull/2491).

- Removed `as_stream` as a step towards removing streams altogether ([#2476](https:/tokiwa-software/fuzion/pull/2476)).

- Added `Sequence.peek` ([#2475](https:/tokiwa-software/fuzion/pull/2475)).

- Features `TRUE` and `FALSE` are no longer public, but the corresponding types are ([#2468](https:/tokiwa-software/fuzion/pull/2468)).

- Added pipe features `&lt;|`, `&lt;||`, etc. to establish symmetry with `|&gt;`, `||&gt;`, etc. ([#2462](https:/tokiwa-software/fuzion/pull/2462)).

- The `unit.type.monoid` is now `public` ([#2418](https:/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:/tokiwa-software/fuzion/pull/2406)).

- Replaced `is` by `=&gt;` in function features ([#2401](https:/tokiwa-software/fuzion/pull/2401)).

- Intrinsics and effects that allow directory listing have been implemented ([#1688](https:/tokiwa-software/fuzion/pull/1688), [#2635](https:/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:/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:/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:/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:/tokiwa-software/fuzion/pull/2531)).

- `Set.add` was implemented due to errors with the abstract version ([#2533](https:/tokiwa-software/fuzion/pull/2533)).

- When producing a string from a sequence, separate the elements with `, ` instead of just a `,` ([#2548](https:/tokiwa-software/fuzion/pull/2548)).

- Facilities to launch processes have been added ([#2575](https:/tokiwa-software/fuzion/pull/2575)).

- Visibility of `Type` is now `module:public`, because nothing should inherit from or call `Type` ([#2581](https:/tokiwa-software/fuzion/pull/2581)).

- `bench` now uses the `time.nano` effect ([#2606](https:/tokiwa-software/fuzion/pull/2606)).

- `String`: add features for center, left, and right padding of strings ([#2609](https:/tokiwa-software/fuzion/pull/2609)).

- Some fixes for unsafe intrinsics ([#2521](https:/tokiwa-software/fuzion/pull/2521), [#2594](https:/tokiwa-software/fuzion/pull/2594),
[#2627](https:/tokiwa-software/fuzion/pull/2627)).

- Refactoring of `interval` ([#2551](https:/tokiwa-software/fuzion/pull/2551), [#2560](https:/tokiwa-software/fuzion/pull/2560), [#2608](https:/tokiwa-software/fuzion/pull/2608)).

- Front End

- Added visibility checks for `abstract` features ([#2453](https:/tokiwa-software/fuzion/pull/2453)).

- Improve type inference for tagged union types ([#2582](https:/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:/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:/tokiwa-software/fuzion/pull/2616), [#2617](https:/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:/tokiwa-software/fuzion/pull/2622)).

- Suppress `declarationsInLazy` error if it is a subsequent error, due to frequent false-positives ([#2628](https:/tokiwa-software/fuzion/pull/2628)).

- Fix source range of parsed lambdas ([#2646](https:/tokiwa-software/fuzion/pull/2646)).

- Middle End

- Significant performance improvement and cleanup in the handling of run-time types (clazzes), ([#2416](https:/tokiwa-software/fuzion/pull/2416), [#2413](https:/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:/tokiwa-software/fuzion/pull/2407)).

- JVM back end

- Fixed `VerifyError` for features resulting in void ([#2477](https:/tokiwa-software/fuzion/issues/2477), [#2485](https:/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:/tokiwa-software/fuzion/pull/2426), [#2469](https:/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:/tokiwa-software/fuzion/pull/2487)).

- Support for the stackmap table attribute was added ([#2499](https:/tokiwa-software/fuzion/pull/2499), [#2556](https:/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:/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:/tokiwa-software/fuzion/pull/2547)).

- For the `-jar` and `-classes` backends, fix the result of `envir.args` ([#2549](https:/tokiwa-software/fuzion/pull/2549)).

- The `-jar` and `-classes` backends now support an optional argument `-o=&lt;outputName&gt;` to specify the name of the generated output ( [#2567](https:/tokiwa-software/fuzion/pull/2567)).

- C back end

- Fixed internal handling of `void` types ([#2466](https:/tokiwa-software/fuzion/pull/2466)).

- The Boehm Garbage Collector is now enabled by default fixing a giant memory leak ([#2428](https:/tokiwa-software/fuzion/pull/2428)).

- Separated `include/fz.h` into platform-specific files, refactored ([#2553](https:/tokiwa-software/fuzion/pull/2553), [#2573](https:/tokiwa-software/fuzion/pull/2573), [#2601](https:/tokiwa-software/fuzion/pull/2601)).

- Replace `__atomic` compiler-specific built-ins by C11 standard atomics ([#2563](https:/tokiwa-software/fuzion/pull/2563)).

- Not longer emits duplicate casts in generated code ([#2592](https:/tokiwa-software/fuzion/pull/2592)).

- The generated C source files are not deleted unless `-XkeepGeneratedCode` is set ([#2605](https:/tokiwa-software/fuzion/pull/2605)).

- `fz` tool

- Run simple examples given on the command line using the `-e &lt;code&gt;` or `-execute &lt;code&gt;` argument ([#2618](https:/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:/tokiwa-software/fuzion/pull/2619)).

- Running `fz` without any arguments now shows the general help instead of the default backend help ([#2648](https:/tokiwa-software/fuzion/pull/2648)).

- Experimentation with calling the Fuzion compiler via fzjava from the JVM backend have started ([#2536](https:/tokiwa-software/fuzion/pull/2536)).


## 2024-01-11: V0.086

Expand Down Expand Up @@ -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.

<!-- LocalWords: Fuzion JDK Makefile fz lt ints ascii nano DFA CFG JVM fzjava
-->
<!-- LocalWords: VerifyError backend stackmap backends envir args Boehm
-->
<!-- LocalWords: atomics XkeepGeneratedCode
-->
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.087dev
0.087

0 comments on commit 692842b

Please sign in to comment.