Releases: diku-dk/futhark
0.21.1
Added
-
Top-level value definitions can (and should) now be declared with
withdef
, althoughlet
still works. -
New tool:
futhark defs
, for printing locations of top-level
definitions.
Changed
def
is now a reserved word.
Fixed
- Contrived intra-group code versions with no actual parallelism would
be given a group size of zero (#1524).
0.20.8
Added
futhark repl
now allows Ctrl-c to interrupt execution.
Fixed
-
Alias tracking of sum types.
-
Proper checking that a function declared to return a unique-typed
value actually does so. -
Faulty uniqueness checking and inference for lambdas (#1535).
-
Monomorphisation would duplicate functions under rare circumstances
(#1537). -
Interpreter didn't check that the arguments passed to
unflatten
made sense (#1539). -
futhark literate
now supports a$loaddata
builtin function for
passing datasets to Futhark programs.
0.20.7
Added
-
Better exploitation of parallelism in fused nested segmented
reductions. -
Prelude function
not
for negating booleans.
Fixed
-
Some incorrect removal of copies (#1505).
-
Handling of parametric modules with top-level existentials (#1510).
-
Invalid in-place lowering (#1523).
-
Incorrect code generation for some intra-group parallel code versions.
-
Flattening crash in the presence of irregular parallelism (#1525).
-
Incorrect substitution of type abbreviations with hidden sizes (#1531).
-
Proper handling of NaN in
min
/max
functions for
f16
/f32
/f64
in interpreter (#1528).
0.20.6
Added
- Much better code generation for segmented scans with vectorisable
operators.
Fixed
-
Fixes to extremely exotic GPU scans involving array operators.
-
Missing alias tracking led to invalid rewrites, causing a compiler
crash (#1499). -
Top-level bindings with existential sizes were mishandled (#1500, #1501).
-
A variety of memory leaks in the multicore backend, mostly (or
perhaps exclusively) centered around context freeing or failing
programs - this should not have affected many people. -
Various fixes to
f16
handling in the GPU backends.
0.20.5
Added
-
Existential sizes can now be explicitly quantified in type
expressions (#1308). -
Significantly expanded error index.
-
Attributes can now be numeric.
-
Patterns can now have attributes. None have any effect at the
moment. -
futhark autotune
andfuthark bench
now take a--spec-file
option for loading a test specification from another file.
Fixed
-
auto output
reference datasets are now recreated when the program
is newer than the data files. -
Exotic hoisting bug (#1490).
0.20.4
Added
-
Tuning parameters now (officially) exposed in the C API.
-
futhark autotune
is now 2-3x faster on many programs, as it now
keeps the process running. -
Negative numeric literals are now allowed in
case
patterns.
Fixed
0.20.3
Added
-
Executables produced by C backends now take a
--no-print-result
option. -
The C backends now generate a manifest when compiling with
--library
. This can be used by FFI generators (#1465). -
The beginnings of a Rust-style error index.
-
scan
on newer CUDA devices is now much faster.
Fixed
-
Unique opaque types are named properly in entry points.
-
The CUDA backend in library mode no longer
exit()
s the process if
NVRTC initialisation fails.
0.20.2
0.20.1
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.
0.19.7
Added
-
A new memory reuse optimisation has been added. This results in
slightly lower footprint for many programs. -
The
cuda
backend now uses a fast single-pass implementation for
segmentedscan
s, due to Morten Tychsen Clausen (#1375). -
futhark bench
now prints interim results while it is running.
Fixed
-
futhark test
now provides better error message when asked to
test an undefined entry point (#1367). -
futhark pkg
now detects some nonsensical package paths (#1364). -
FutharkScript now parses
f x y
as applyingf
tox
andy
,
rather than asf (x y)
. -
Some internal array utility functions would not be generated if
entry points exposed both unit arrays and boolean arrays (#1374). -
Nested reductions used (much) more memory for intermediate results
than strictly needed. -
Size propagation bug in defunctionalisation (#1384).
-
In the C FFI, array types used only internally to implement opaque
types are no longer exposed (#1387). -
futhark bench
now copes with test programs that consume their
input (#1386). This required an extension of the server protocol
as well.