Skip to content

@athas athas released this Jul 9, 2018 · 1413 commits to master since this release


  • The real module type now specifies tan.

  • futharki now supports entering declarations.

  • futharki now supports a :type command (or :t for short).

  • futhark-test and futhark-benchmark now support gzipped data
    files. They must have a .gz extension.

  • Generated code now frees memory much earlier, which can help
    reduce the footprint.

  • Compilers now accept a --safe flag to make them ignore unsafe.

  • Module types may now define lifted abstract types, using the
    notation type ^t. These may be instantiated with functional
    types. A lifted abstract type has all the same restrictions as a
    lifted type parameter.


  • The rearrange construct has been removed. Use transpose instead.

  • futhark-mode.el has been moved to a separate

  • Removed |>> and <<|. Use >-> and <-< instead.

  • The empty construct is no longer supported. Just use empty
    array literals.


  • Imports of the basis library must now use an absolute path
    (e.g. /futlib/fft, not simply futlib/fft).

  • /futlib/vec2 and /futlib/vec3 have been replaced by a new
    /futlib/vector file.

  • Entry points generated by the C code backend are now prefixed with
    futhark_entry_ rather than just futhark_.

  • zip and unzip are no longer language constructs, but library
    functions, and work only on two arrays and pairs, respectively.
    Use functions zipN/unzipN (for 2<=n<=8).


  • Better error message on EOF.

  • Fixed handling of .. in import paths.

  • Type errors (and other compiler feedback) will no longer contain
    internal names.

  • futhark-test and friends can now cope with infinities and NaNs.
    Such values are printed and read as f32.nan, f32.inf,
    -f32.inf, and similarly for f32. In futhark-test, NaNs
    compare equal.

Assets 3
You can’t perform that action at this time.