Skip to content

Releases: diku-dk/futhark

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).

0.20.1

28 Aug 10:10
Compare
Choose a tag to compare

Added

  • The #[trace] and #[break] attributes now replace the trace
    and break functions (although they are still present in
    slightly-reduced but compatible form).

  • The #[opaque] attribute replaces the opaque function, which is
    now deprecated.

  • Tracing now works in compiled code, albeit with several caveats
    (mainly, it does not work for code running on the GPU).

  • New wasm and wasm-multicore backends by Philip Lassen. Still
    very experimental; do not expect API stability.

  • New intrinsic type f16, along with a prelude module f16.
    Implemented with hardware support where it is available, and with
    f32-based emulation where it is not.

  • Sometimes slightly more informative error message when input of
    the wrong type is passed to a test program.

Changed

  • The ! function in the integer modules is now called not.

  • ! is now builtin syntax. You can no longer define a function
    called !. It is extremely unlikely this affects you. This
    removes the last special-casing of prefix operators.

  • A prefix operator section (i.e. (!)) is no longer permitted
    (and it never was according to the grammar).

  • The offset parameter for the "raw" array creation functions in the
    C API is now int64_t instead of int.

Fixed

  • i64.abs was wrong for arguments that did not fit in an i32.

  • Some f32 operations (**, abs, max) would be done in double
    precision on the CUDA backend.

  • Yet another defunctorisation bug (#1397).

  • The clz function would sometimes exhibit undefined behaviour in
    CPU code (#1415).

  • Operator priority of prefix - was wrong - it is now the same as
    ! (#1419).

  • futhark hash is now invariant to source location as well as
    stable across OS/compiler/library versions.

  • futhark literate is now much better at avoiding unnecessary
    recalculation.

  • Fixed a hole in size type checking that would usually lead to
    compiler crashes (#1435).

  • Underscores now allowed in numeric literals in test data (#1440).

  • The cuda backend did not use single-pass segmented scans as
    intended. Now it does.

0.19.7

02 Jul 15:31
Compare
Choose a tag to compare

Added

  • A new memory reuse optimisation has been added. This results in
    slightly lower footprint for many programs.

  • The cuda backend now uses a fast single-pass implementation for
    segmented scans, due to Morten Tychsen Clausen (#1375).

  • futhark bench now prints interim results while it is running.

Fixed

  • futhark test now provides better error message when asked to
    test an undefined entry point (#1367).

  • futhark pkg now detects some nonsensical package paths (#1364).

  • FutharkScript now parses f x y as applying f to x and y,
    rather than as f (x y).

  • Some internal array utility functions would not be generated if
    entry points exposed both unit arrays and boolean arrays (#1374).

  • Nested reductions used (much) more memory for intermediate results
    than strictly needed.

  • Size propagation bug in defunctionalisation (#1384).

  • In the C FFI, array types used only internally to implement opaque
    types are no longer exposed (#1387).

  • futhark bench now copes with test programs that consume their
    input (#1386). This required an extension of the server protocol
    as well.