github diku-dk/futhark v0.4.0
0.4.0

latest releases: nightly, v0.25.24, v0.25.23...
6 years ago

Added

  • The constructor for generated PyOpenCL classes now accepts a
    command_queue parameter (#480).

  • Transposing small arrays is now much faster when using OpenCL
    backend (#478).

  • Infix operators can now be defined in prefix notation, e.g.:

    let (+) (x: i32) (y: i32) = x - y
    

    This permits them to have type- and shape parameters.

  • Comparison operators (<=, <, >, >=) are now valid for boolean
    operands.

  • Ordinary functions can be used as infix by enclosing them in
    backticks, as in Haskell. They are left-associative and have
    lowest priority.

  • Numeric modules now have largest/smallest values.

  • Numeric modules now have sum, product, maximum, and
    minimum functions.

  • Added --Werror command line option to compilers.

  • Higher-order functions are now supported (#323).

  • Type inference is now supported, although with some limitations
    around records, in-place updates, and unzip. (#503)

  • Added a range of higher-order utility functions to the prelude,
    including (among others):

    val (|>) '^a '^b: a ->  (a -> b) -> b
    
    val (<|) '^a '^b: (a -> b) -> a -> b
    
    val (|>>) '^a 'b '^c: (a -> b) -> (b -> c) -> a -> c
    
    val (<<|) '^a 'b '^c: (b -> c) -> (a -> b) a -> c
    

Changed

  • FUTHARK_VERSIONED_CODE is now FUTHARK_INCREMENTAL_FLATTENING.

  • The SOACs map, reduce, filter, partition, scan,
    stream_red, and stream_map have been replaced with library
    functions.

  • The futlib/mss and futlib/lss modules have been rewritten to use
    higher-order functions instead of modules.

Fixed

  • Transpositions in generated OpenCL code no longer crashes on
    large but empty arrays (#483).

  • Booleans can now be compared with relational operators without
    crashing the compiler (#499).

Don't miss a new futhark release

NewReleases is sending notifications on new releases.