Skip to content

Releases: diku-dk/futhark

0.21.3

07 Jan 11:42
Compare
Choose a tag to compare

Added

  • Parse errors now list possible expected tokens.

  • Lexer errors now mention the file.

Fixed

  • Overloaded number literals cannot be sum types (#1557).

  • Defective GPU code generation for vectorised non-commutative
    operatators (#1559).

  • Excessive memory usage for some programs (#1325).

0.21.2

22 Dec 16:15
Compare
Choose a tag to compare

Added

  • New functions: reduce_by_index_2d, reduce_by_index_3d.

  • Manifests now contain compiler version information.

Fixed

  • Allocation insertion pass bug (#1546).

  • An exotic bug involving TLS and dynamically loading code generated
    by the multicore backend.

  • Unconstrained ambiguous types now default to () (#1552). This
    should essentially never have any observable impact, except that
    more programs will type check.

  • Double buffering compiler crash (#1553).

0.21.1

11 Dec 20:21
Compare
Choose a tag to compare

Added

  • Top-level value definitions can (and should) now be declared with
    with def, although let still works.

  • New tool: futhark defs, for printing locations of top-level
    definitions.

Changed

  • def is now a reserved word.

Fixed

  • Contrived intra-group code versions with no actual parallelism would
    be given a group size of zero (#1524).

0.20.8

08 Dec 10:37
Compare
Choose a tag to compare

Added

  • futhark repl now allows Ctrl-c to interrupt execution.

Fixed

  • Alias tracking of sum types.

  • Proper checking that a function declared to return a unique-typed
    value actually does so.

  • Faulty uniqueness checking and inference for lambdas (#1535).

  • Monomorphisation would duplicate functions under rare circumstances
    (#1537).

  • Interpreter didn't check that the arguments passed to unflatten
    made sense (#1539).

  • futhark literate now supports a $loaddata builtin function for
    passing datasets to Futhark programs.

0.20.7

26 Nov 14:04
Compare
Choose a tag to compare

Added

  • Better exploitation of parallelism in fused nested segmented
    reductions.

  • Prelude function not for negating booleans.

Fixed

  • Some incorrect removal of copies (#1505).

  • Handling of parametric modules with top-level existentials (#1510).

  • Module substitution fixes (#1512, #1518).

  • Invalid in-place lowering (#1523).

  • Incorrect code generation for some intra-group parallel code versions.

  • Flattening crash in the presence of irregular parallelism (#1525).

  • Incorrect substitution of type abbreviations with hidden sizes (#1531).

  • Proper handling of NaN in min/max functions for
    f16/f32/f64 in interpreter (#1528).

0.20.6

28 Oct 11:59
Compare
Choose a tag to compare

Added

  • Much better code generation for segmented scans with vectorisable
    operators.

Fixed

  • Fixes to extremely exotic GPU scans involving array operators.

  • Missing alias tracking led to invalid rewrites, causing a compiler
    crash (#1499).

  • Top-level bindings with existential sizes were mishandled (#1500, #1501).

  • A variety of memory leaks in the multicore backend, mostly (or
    perhaps exclusively) centered around context freeing or failing
    programs - this should not have affected many people.

  • Various fixes to f16 handling in the GPU backends.

0.20.5

19 Oct 13:01
Compare
Choose a tag to compare

Added

  • Existential sizes can now be explicitly quantified in type
    expressions (#1308).

  • Significantly expanded error index.

  • Attributes can now be numeric.

  • Patterns can now have attributes. None have any effect at the
    moment.

  • futhark autotune and futhark bench now take a --spec-file
    option for loading a test specification from another file.

Fixed

  • auto output reference datasets are now recreated when the program
    is newer than the data files.

  • Exotic hoisting bug (#1490).

0.20.4

07 Oct 20:00
Compare
Choose a tag to compare

Added

  • Tuning parameters now (officially) exposed in the C API.

  • futhark autotune is now 2-3x faster on many programs, as it now
    keeps the process running.

  • Negative numeric literals are now allowed in case patterns.

Fixed

  • futhark_context_config_set_profiling was missing for the c backend.

  • Correct handling of nested entry points (#1478).

  • Incorrect type information recorded when doing in-place lowering (#1481).

0.20.3

28 Sep 12:40
Compare
Choose a tag to compare

Added

  • Executables produced by C backends now take a --no-print-result option.

  • The C backends now generate a manifest when compiling with
    --library. This can be used by FFI generators (#1465).

  • The beginnings of a Rust-style error index.

  • scan on newer CUDA devices is now much faster.

Fixed

  • Unique opaque types are named properly in entry points.

  • The CUDA backend in library mode no longer exit()s the process if
    NVRTC initialisation fails.

0.20.2

10 Sep 17:44
Compare
Choose a tag to compare

Fixed

  • Simplification bug (#1455).

  • In-place-lowering bug (#1457).

  • Another in-place-lowering bug (#1460).

  • Don't try to tile inside loops with parameters with variant sizes (#1462).

  • Don't consider it an ICE when the user passes invalid command line
    options (#1464).