Added
-
The
#[trace]
and#[break]
attributes now replace thetrace
andbreak
functions (although they are still present in
slightly-reduced but compatible form). -
The
#[opaque]
attribute replaces theopaque
function, which is
now deprecated. -
Tracing now works in compiled code, albeit with several caveats
(mainly, it does not work for code running on the GPU). -
New
wasm
andwasm-multicore
backends by Philip Lassen. Still
very experimental; do not expect API stability. -
New intrinsic type
f16
, along with a prelude modulef16
.
Implemented with hardware support where it is available, and with
f32
-based emulation where it is not. -
Sometimes slightly more informative error message when input of
the wrong type is passed to a test program.
Changed
-
The
!
function in the integer modules is now callednot
. -
!
is now builtin syntax. You can no longer define a function
called!
. It is extremely unlikely this affects you. This
removes the last special-casing of prefix operators. -
A prefix operator section (i.e.
(!)
) is no longer permitted
(and it never was according to the grammar). -
The offset parameter for the "raw" array creation functions in the
C API is nowint64_t
instead ofint
.
Fixed
-
i64.abs
was wrong for arguments that did not fit in ani32
. -
Some
f32
operations (**
,abs
,max
) would be done in double
precision on the CUDA backend. -
Yet another defunctorisation bug (#1397).
-
The
clz
function would sometimes exhibit undefined behaviour in
CPU code (#1415). -
Operator priority of prefix
-
was wrong - it is now the same as
!
(#1419). -
futhark hash
is now invariant to source location as well as
stable across OS/compiler/library versions. -
futhark literate
is now much better at avoiding unnecessary
recalculation. -
Fixed a hole in size type checking that would usually lead to
compiler crashes (#1435). -
Underscores now allowed in numeric literals in test data (#1440).
-
The
cuda
backend did not use single-pass segmented scans as
intended. Now it does.