Skip to content

Releases: diku-dk/futhark

0.22.6

18 Dec 18:51
Compare
Choose a tag to compare

Added

  • Slightly better type errors for sum types (#1792).

  • Better tracing output in interpreter (#1795).

  • Improved optimisation of code that uses zero-element arrays
    (sometimes used for type witnesses).

Fixed

  • Mishandling of bounds checks in parallel backends could cause
    compiler crashes (#1791).

  • Mis-simplification of certain sequentialised scatters into
    single-element arrays (#1793).

  • Invalid scatter fusion would cause an internal compiler error
    (#1794).

  • The code generator flipped the order of match cases.

  • Simpification of concatenations (#1796).

  • Defunctionalisation error for fancy size programming (#1798).

  • Code generation for load-unbalanced reductions in multicore backend
    (#1800).

  • Futhark now works on CUDA 12 (#1801).

  • mul_hi and mad_hi for signed integer types now actually do
    signed multiplication (previously it was always unsigned).

0.22.5

09 Dec 20:02
Compare
Choose a tag to compare

Added

  • Memory short circuiting now also applied to the multicore backend.

  • Fixes for AD of scan with nonscalar operators. Work by Lotte
    Bruun and Ulrik Larsen.

  • Generalised histograms now supported in AD. Work by Lotte Bruun and
    Ulrik Larsen.

  • OpenCL kernels now embed group size information, which can
    potentially be used for better register allocation by the OpenCL
    implementation.

Fixed

  • A hole in the type checker that allowed one to sneak functions out
    if conditionals (#1787).

  • futhark repl: unsigned integers are now printed correctly.

  • A bug in the type-checking of match (#1783).

  • Missing sequencing in type-checking of in-place let expressions (#1786).

  • Crash in defunctionaliser caused by duplicate parameter names
    (#1780).

  • Infelicities in multicore codegen for scans (#1777).

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.