Skip to content

@github-actions github-actions released this May 30, 2021


  • f32.hypot and f64.hypot are now much more numerically exact in
    the interpreter.

  • Generated code now contains a header with information about the
    version of Futhark used (and maybe more information in the

  • Testing/benchmarking with large input data (including randomly
    generated data) is much faster, as each file is now only read

  • Test programs may now use arbitrary FutharkScript expressions to
    produce test input, in particular expressions that produce opaque
    values. This affects both testing, benchmarking, and autotuning.

  • Compilation is about 10% faster, especially for large programs.


  • futhark repl had trouble with declarations that produced unknown
    sizes (#1347).

  • Entry points can now have same name as (undocumented!) compiler intrinsics.

  • FutharkScript now detects too many arguments passed to functions.

  • Sequentialisation bug (#1350).

  • Missing causality check for index sections.

  • futhark test now reports mismatches using proper indexes (#1356).

  • Missing alias checking in fusion could lead to compiler crash (#1358).

  • The absolute value of NaN is no longer infinity in the interpreter (#1359).

  • Proper detection of zero strides in compiler (#1360).

  • Invalid memory accesses related to internal bookkeeping of bounds checking.

Assets 3

@github-actions github-actions released this May 12, 2021


  • Initial work on granting programmers more control over existential
    sizes, starting with making type abbreviations function as
    existential quantifiers (#1301).

  • FutharkScript now also supports arrays and scientific notation.

  • Added f32.epsilon and f64.epsilon for the difference between
    1.0 and the next larger representable number.

  • Added f32.hypot and f64.hypot for your hypothenuse needs (#1344).

  • Local size bindings in let expressions, e.g:

    let [n] (xs': [n]i32) = filter (>0) xs
    in ...


  • futhark_context_report() now internally calls
    futhark_context_sync() before collecting profiling information
    (if applicable).

  • futhark literate: Parse errors for expression directives now
    detected properly.

  • futhark autotune now works with the cuda backend (#1312).

  • Devious fusion bug (#1322) causing compiler crashes.

  • Memory expansion bug for certain complex GPU kernels (#1328).

  • Complex expressions in index sections (#1332).

  • Handling of sizes in abstract types in the interpreter (#1333).

  • Type checking of explicit size requirements in loop parameter (#1324).

  • Various alias checking bugs (#1300, #1340).

Assets 3

@github-actions github-actions released this Mar 30, 2021


  • Some uniqueness ignorance in fusion (#1291).

  • An invalid transformation could in rare cases cause race
    conditions (#1292).

  • Generated Python and C code should now be warning-free.

  • Missing check for uses of size-lifted types (#1294).

  • Error in simplification of concatenations could cause compiler
    crashes (#1296).

Assets 3

@github-actions github-actions released this Mar 25, 2021


  • Better futhark test/futhark bench errors when test data does
    not have the expected type.


  • Mismatch between how thresholds were printed and what the
    autotuner was looking for (#1269).

  • zip now produces unique arrays (#1271).

  • futhark literate no longer chokes on lines beginning with --
    without a following whitespace.

  • futhark literate: :loadimg was broken due to overzealous
    type checking (#1276).

  • futhark literate: :loadimg now handles relative paths properly.

  • futhark hash no longer considers the built-in prelude.

  • Server executables had broken store/restore commands for opaque types.

Assets 3

@github-actions github-actions released this Mar 14, 2021


  • New subcommand: futhark hash.

  • futhark literate is now smart about when to regenerate image and
    animation files.

  • futhark literate now produces better error messages passing
    expressions of the wrong type to directives.


  • Type-checking of higher-order functions that take consuming
    funtional arguments.

  • Missing cases in causality checking (#1263).

  • f32.sgn was mistakenly defined with double precision arithmetic.

  • Only include double-precision atomics if actually needed by
    program (this avoids problems on devices that only support single

  • A lambda lifting bug due to not handling existential sizes
    produced by loops correctly (#1267).

  • Incorrect uniqueness attributes inserted by lambda lifting

  • FutharkScript record expressions were a bit too sensitive to

Assets 3

@github-actions github-actions released this Mar 4, 2021


  • futhark literate now supports a $loadimg builtin function for
    passing images to Futhark programs.

  • The futhark literate directive for generating videos is now

  • Support for 64-bit atomics on CUDA and OpenCL for higher
    performance with reduce_by_index in particular.
    Double-precision float atomics are used on CUDA.

  • New functions: f32.recip and f64.recip for multiplicative inverses.

  • Executables produced with the c and multicore backends now
    also accept --tuning and --size options (although there are
    not yet any tunable sizes).

  • New functions: scatter_2d and scatter_3d for scattering to
    multi-dimensional arrays (#1258).


  • The math modules no longer define the name negate (use neg


  • Exotic core language alias tracking bug (#1239).

  • Issue with entry points returning constant arrays (#1240).

  • Overzealous CSE collided with uniqueness types (#1241).

  • Defunctionalisation issue (#1242).

  • Tiling inside multiply nested loops (#1243).

  • Substitution bug in interpreter (#1250).

  • f32.sgn/f64.sgn now correct for NaN arguments.

  • CPU backends (c/multicore) are now more careful about staying
    in single precision for f32 functions (#1253).

  • futhark test and futhark bench now detect program
    initialisation errors in a saner way (#1246).

  • Partial application of operators with parameters used in a
    size-dependent way now works (#1256).

  • An issue regarding abstract size-lifted sum types (#1260).

Assets 3

@github-actions github-actions released this Jan 26, 2021


  • The C API now exposes serialisation functions for opaque values.

  • The C API now lets you pick which stream (if any) is used for
    logging prints (#1214).

  • New compilation mode: --server. For now used to support faster
    benchmarking and testing tools, but can be used to build even
    fancier things in the future (#1179).

  • Significantly faster reading/writing of large values. This mainly
    means that validation of test and benchmark results is much faster
    (close to an order of magnitude).

  • The experimental futhark literate command allows vaguely a
    notebook-like programming experience.

  • All compilers now accept an --entry option for treating more
    functions as entry points.

  • The negate function is now neg, but negate is kept around
    for a short while for backwards compatibility.

  • Generated header-files are now declared extern "C" when
    processed with a C++ compiler.

  • Parser errors in test blocks used by futhark bench and futhark test are now reported with much better error messages.


  • Interaction between slice simplification and in-place updates

  • Problem with user-defined functions with the same name as intrinsics.

  • Names from transitive imports no longer leak into scope (#1231).

  • Pattern-matching unit values now works (#1232).

Assets 3

@github-actions github-actions released this Dec 28, 2020


  • Fix tiling crash (#1203).

  • futhark run now does slightly more type-checking of its inputs

  • Sum type deduplication issue (#1209).

  • Missing parentheses when printing sum values in interpreter.

Assets 3

@github-actions github-actions released this Dec 18, 2020


  • When compiling to binaries in the C-based backends, the compiler
    now respects the CFLAGS and CC environment variables.

  • GPU backends: avoid some bounds-checks for parallel sections
    inside intra-kernel loops.

  • The cuda backend now uses a much faster single-pass scan
    implementation, although only for nonsegmented scans where the
    operator operates on scalars.


  • futhark dataset now correctly detects trailing commas in textual
    input (#1189).

  • Fixed local memory capacity check for intra-group-parallel GPU kernels.

  • Fixed compiler bug on segmented rotates where the rotation amount
    is variant to the nest (#1192).

  • futhark repl no longer crashes on type errors in given file (#1193).

  • Fixed a simplification error for certain arithmetic expressions

  • Fixed a small uniqueness-related bug in the compilation of
    operator section.

  • Sizes of opaque entry point arguments are now properly checked
    (related to #1198).

Assets 3

@github-actions github-actions released this Nov 12, 2020


  • Python backend now disables spurious NumPy overflow warnings for
    both library and binary code (#1180).

  • Undid deadlocking over-synchronisation for freeing opaque objects.

  • futhark datacmp now handles bad input files better (#1181).

Assets 3