Skip to content

Releases: diku-dk/futhark

0.22.4

14 Nov 18:29
Compare
Choose a tag to compare

Added

  • Memory short circuiting, a major new optimisation by Philip
    Munksgaard that avoids copies by constructing values in-place.

Fixed

  • assert was sometimes optimised away by CSE.

  • futhark literate now handles type abbreviations in entry points
    (#1750).

  • Handling of non-inlined functions in GPU code. Still very restricted.

  • Uniqueness checking bug (#1751).

  • Simplification bug (#1753).

  • A bug related to optimisation of scalar code migrated to GPU.

  • Memory optimisation bug for top-level constants (#1755).

  • Handling of holes in defunctionalisation (again).

  • A few cases where optimisation (safely but perhaps confusingly)
    removed bounds checks (#1758).

  • Futhark now works on Windows again (#1734). This support remains
    very flaky and not well tested.

  • Type inference of field projection (#1762).

0.22.3

28 Oct 16:01
Compare
Choose a tag to compare

Fixed

  • Non-server executables neglected to synchronise before printing results (#1731).

  • Fixed handling of holes in defunctionalisation (#1738).

  • Ascription of higher-order modules (#1741).

  • Fixed compiler crash when attempting to tile irregular parallelism (#1739).

  • Incorrect regularity checking in loop interchange (#1744).

  • Pattern match exhaustiveness of bools (#1748).

  • Improper consumption checking of nonlocal bindings (#1749).

0.22.2

21 Sep 10:55
Compare
Choose a tag to compare

Added

  • futhark repl is now delightfully more colourful.

  • futhark repl no longer prints scalar types with type suffixes (#1724).

  • futhark pyopencl executables now accept --build-option.

  • New functions: f16.nextafter, f32.nextafter, f64.nextafter,
    matching the ones in the C math library.

  • futhark literate now prints directives in the output exactly as
    they appear in the source.

Fixed

  • Diagnostics will no longer contain control codes when output is a
    file.

  • CLI executables now fail when printing an opaque instead of
    producing garbage. This improves handling of some incorrect uses of
    auto output (#1251).

0.22.1

18 Aug 07:26
Compare
Choose a tag to compare

Removed

  • Removed prelude functions reduce_stream, map_stream,
    reduce_stream_per, and reduce_map_per.

Fixed

  • Various fixes to scalar migration (#1721).

0.21.15

01 Aug 13:04
Compare
Choose a tag to compare

Fixed

  • Corrupted OOM error messages.

  • Excessive internal fragmentation for some programs (#1715).

0.21.14

30 Jul 08:52
Compare
Choose a tag to compare

Fixed

  • replicate was broken for sizes that didn't fit in i32.

  • Transposition of empty arrays in interpreter (#1700).

  • Exotic simplification error (#1309).

  • Rare race condition could lead to leaking of error message memory in
    multicore and ispc backends (#1709).

  • Overzealous aliasing for built-in overloaded types (#1711).

0.21.13

06 Jul 17:57
Compare
Choose a tag to compare

Added

  • New fusion engine by Amar Topalovic and Walter Restelli-Nielsen.
    Fuses more, which is good for some programs and bad for others.
    Most programs see no change. This is mainly a robust foundation for
    further improvements.

  • New experimental backend: ispc. By Louis Marott Normann,
    Kristoffer August Kortbæk, William Pema Norbu Holmes Malling, and
    Oliver Bak Kjersgaard Petersen.

  • New prelude functions: hist, spread. These function as
    non-consuming variants of reduce_by_index and scatter.

  • Using == to compare arrays is now deprecated.

  • New command: futhark tokens. You probably don't care about this one.

  • In the C API, opaque types that correspond to tuples or records can
    now have their elements inspected and be created from elements
    (#1568).

  • New server protocol commands: types, fields, entry_points.

  • Tuples and records can now be passed from FutharkScript to Futhark
    entry points (#1684).

Fixed

  • Sometimes missing cases in match expressions were not detected.

  • A defective simplification rule could in very rare cases lead to
    infinite recursion in the compiler (#1685).

  • Some broken links in futhark doc output (#1686).

  • Incorrect checking of whether a function parameter is consumable
    based on its type (#1687).

  • Missing aliases for functions that return multiple aliased values
    (#1690).

  • new/values functions for GPU backends are now properly
    asynchronous (#1664). This may uncover bugs in application code.

0.21.12

19 May 14:03
Compare
Choose a tag to compare

Added

  • Somewhat simplified the handling of "uniqueness types" (which is a
    term we are moving away from). You should never see * in
    non-function types, and they are better thought of as effect
    indicators.

  • futhark literate: prints tracing output (and other logging
    messages that may occur) when run with -v (#1678).

  • Entry points can now be any valid Futhark identifier.

Fixed

  • futhark test -C was broken.

  • futhark_context_free() for the GPU backends neglected to free some
    memory used for internal bookkeeping, which could lead to memory
    leaks for processes that repeatedly create and destroy contexts
    (#1676).

  • FutharkScript now allows ' in names.

  • futhark lsp now handles warnings in programs that also have errors.

0.21.11

06 May 19:29
Compare
Choose a tag to compare

Added

  • The CUDA backend now supports compute capability 8.6 and 8.7.

  • Philip Børgesen has implemented a new optimisation for GPU backends
    that migrates scalar work to the GPU, in order to reduce
    synchronisation. This results in major speedup for some programs.

  • String literals are now allowed in input blocks.

  • Experimental and undocumented support for automatic differentiation,
    available on the secret menu.

  • Assertions and attributes are now ignored when used as size
    expressions. E.g. iota (assert p n) 0 now has size n.

  • futhark test only runs the interpreter if passed -i.

  • futhark literate now shows progress bars when run with -v.

Fixed

  • futhark lsp is now better at handling multiple files (#1647).

  • Incorrect handling of local quantification when determining type
    equivalence in during module type ascription (#1648).

  • Incorrect checking of liftedness when instantiating polymorphic
    functions during module type ascription.

  • Tightened some restrictions on the use of existential sizes that
    could otherwise lead to compiler crashes (#1650). This restriction
    is perhaps a bit too might and it may be possible to loosen it in
    the future.

  • Another defunctorisation bug (#1653). Somehow we find these every
    time Martin Elsman writes a nontrivial Futhark program.

  • futhark bench: convergence phase now does at least --runs runs.

  • Errors and warnings no longer awkwardly mixed together in console output.

  • Slightly better type errors for ambiguous sizes (#1661).

  • Better type errors for module ascription involving nested modules
    (#1660).

  • futhark doc: some formatting bugs.

  • futhark doc didn't notice all local module types (#1666).

  • Missing consumption check in optimisation could lead to ICE (#1669).

0.21.10

18 Apr 20:03
Compare
Choose a tag to compare

Added

  • New math functions: f16.erf, f32.erf, f64.erf.

  • New math functions: f16.erfc, f32.erfc, f64.erfc.

  • New math functions: f16.cbrt, f32.cbrt, f64.cbrt.

Fixed

  • Variables being indexed now have correct source spans in AST.

  • futhark lsps hover information now contains proper range information.

  • futhark query and futhark lsp incorrectly thought size
    parameters had type i32.

  • futhark doc put documentation for prelude modules in the wrong
    location (which also led to messed-up style sheets).