Added
-
The optimiser is now somewhat better at removing unnecessary
copies of array slices. -
futhark bench
andfuthark test
now take a--concurrency
option for limiting how many threads are used for housekeeping
tasks. Set this to a low value if you run out of memory. -
random
test blocks are now allowed to contain integer literals
with type suffixes. -
:frame <n>
command forfuthark repl
for inspecting the stack. -
e :> t
notation, which means the same ase : t
for now, but
will have looser constraints in the future. -
Size-lifted type abbreviations can be declared with
type~
and
size-lifted type parameters with'~
. These currently have no
significant difference from fully lifted types.
Changed
-
Tuples are now 0-indexed (#821, which also includes a conversion
script). -
Invalid ranges like
1..<0
now produce a run-time error instead
of an empty array. -
Record updates (
r with f = e
) now requirer
to have a
completely known type up tof
. This is a restriction that will
hopefully be lifted in the future. -
The backtrace format has changed to be innermost-first, like
pretty much all other languages. -
Value specs must now explicitly quantify all sizes of function
parameters. Instead ofval sum: []t -> t
you must write
val sum [n]: [n]t -> t
-
futhark test
now once again numbers un-named data sets from 0
rather than from 1. This fits a new general principle of always
numbering from 0 in Futhark. -
Type abbreviations declared with
type
may no longer contain
functions or anonymous sizes in their definition. Usetype^
for
these cases. Just a warning for now, but will be an error in the
future.
Fixed
-
Work around (probable) AMD OpenCL compiler bug for
reduce_by_index
operations with complex operators that require
locking. -
Properly handle another ICE on parse errors in test stanzas (#819).
-
futhark_context_new_with_command_queue()
now actually works. Oops. -
Different scopes are now properly addressed during type inference
(#838). Realistically, there will still be some missing cases.