Added
-
Arbitrary expressions of type
i64
are now allowed as sizes. Work
by Lubin Bailly. -
New prelude function
resize
.
Removed
- The prelude functions
concat_to
andflatten_to
. They are often
not necessary now, and otherwiseresize
is available.
Changed
-
The prelude functions
flatten
andunflatten
(and their
multidimensional variants), as well assplit
, now have more
precise types. -
Local and anonymous (lambda) functions that must return unique
results (because they are passed to a higher order function that
requires this) must now have an explicit return type ascription that
declares this, using*
. This is very rare (in practice
unobserved) in real programs.
Fixed
-
futhark doc
produced some invalid links. -
flatten
did not properly check for claimed negative array sizes. -
Type checker crash on some ill-typed programs (#1926).
-
Some soundness bugs in memory short circuiting (#1927, #1930).
-
Global arrays with size parameters no longer have aliases.
-
futhark eval
no longer crashes on ambiguously typed expressions (#1946). -
A code motion pass was ignorant of consumption constraints, leading
to compiler crash (#1947). -
Type checker could get confused and think unknown sizes were
available when they really weren't (#1950). -
Some index optimisations removed certificates (#1952).
-
GPU backends can now transpose arrays whose size does not fit in a
32-bit integer (#1953). -
Bug in alias checking for the core language type checker (#1949).
Actually (finally) a proper fix of #803. -
Defunctionalisation duplicates less code (#1968).