Releases: diku-dk/futhark
0.22.6
Added
-
Slightly better type errors for sum types (#1792).
-
Better tracing output in interpreter (#1795).
-
Improved optimisation of code that uses zero-element arrays
(sometimes used for type witnesses).
Fixed
-
Mishandling of bounds checks in parallel backends could cause
compiler crashes (#1791). -
Mis-simplification of certain sequentialised scatters into
single-element arrays (#1793). -
Invalid
scatter
fusion would cause an internal compiler error
(#1794). -
The code generator flipped the order of
match
cases. -
Simpification of concatenations (#1796).
-
Defunctionalisation error for fancy size programming (#1798).
-
Code generation for load-unbalanced reductions in multicore backend
(#1800). -
Futhark now works on CUDA 12 (#1801).
-
mul_hi
andmad_hi
for signed integer types now actually do
signed multiplication (previously it was always unsigned).
0.22.5
Added
-
Memory short circuiting now also applied to the
multicore
backend. -
Fixes for AD of
scan
with nonscalar operators. Work by Lotte
Bruun and Ulrik Larsen. -
Generalised histograms now supported in AD. Work by Lotte Bruun and
Ulrik Larsen. -
OpenCL kernels now embed group size information, which can
potentially be used for better register allocation by the OpenCL
implementation.
Fixed
-
A hole in the type checker that allowed one to sneak functions out
if conditionals (#1787). -
futhark repl
: unsigned integers are now printed correctly. -
A bug in the type-checking of
match
(#1783). -
Missing sequencing in type-checking of in-place
let
expressions (#1786). -
Crash in defunctionaliser caused by duplicate parameter names
(#1780). -
Infelicities in multicore codegen for scans (#1777).
0.22.4
Added
- Memory short circuiting, a major new optimisation by Philip
Munksgaard that avoids copies by constructing values in-place.
Fixed
-
assert
was sometimes optimised away by CSE. -
futhark literate
now handles type abbreviations in entry points
(#1750). -
Handling of non-inlined functions in GPU code. Still very restricted.
-
Uniqueness checking bug (#1751).
-
Simplification bug (#1753).
-
A bug related to optimisation of scalar code migrated to GPU.
-
Memory optimisation bug for top-level constants (#1755).
-
Handling of holes in defunctionalisation (again).
-
A few cases where optimisation (safely but perhaps confusingly)
removed bounds checks (#1758). -
Futhark now works on Windows again (#1734). This support remains
very flaky and not well tested. -
Type inference of field projection (#1762).
0.22.3
Fixed
-
Non-server executables neglected to synchronise before printing results (#1731).
-
Fixed handling of holes in defunctionalisation (#1738).
-
Ascription of higher-order modules (#1741).
-
Fixed compiler crash when attempting to tile irregular parallelism (#1739).
-
Incorrect regularity checking in loop interchange (#1744).
-
Pattern match exhaustiveness of bools (#1748).
-
Improper consumption checking of nonlocal bindings (#1749).
0.22.2
Added
-
futhark repl
is now delightfully more colourful. -
futhark repl
no longer prints scalar types with type suffixes (#1724). -
futhark pyopencl
executables now accept--build-option
. -
New functions:
f16.nextafter
,f32.nextafter
,f64.nextafter
,
matching the ones in the C math library. -
futhark literate
now prints directives in the output exactly as
they appear in the source.
Fixed
-
Diagnostics will no longer contain control codes when output is a
file. -
CLI executables now fail when printing an opaque instead of
producing garbage. This improves handling of some incorrect uses of
auto output
(#1251).
0.22.1
0.21.15
0.21.14
Fixed
-
replicate
was broken for sizes that didn't fit ini32
. -
Transposition of empty arrays in interpreter (#1700).
-
Exotic simplification error (#1309).
-
Rare race condition could lead to leaking of error message memory in
multicore
andispc
backends (#1709). -
Overzealous aliasing for built-in overloaded types (#1711).
0.21.13
Added
-
New fusion engine by Amar Topalovic and Walter Restelli-Nielsen.
Fuses more, which is good for some programs and bad for others.
Most programs see no change. This is mainly a robust foundation for
further improvements. -
New experimental backend:
ispc
. By Louis Marott Normann,
Kristoffer August Kortbæk, William Pema Norbu Holmes Malling, and
Oliver Bak Kjersgaard Petersen. -
New prelude functions:
hist
,spread
. These function as
non-consuming variants ofreduce_by_index
andscatter
. -
Using
==
to compare arrays is now deprecated. -
New command:
futhark tokens
. You probably don't care about this one. -
In the C API, opaque types that correspond to tuples or records can
now have their elements inspected and be created from elements
(#1568). -
New server protocol commands:
types
,fields
,entry_points
. -
Tuples and records can now be passed from FutharkScript to Futhark
entry points (#1684).
Fixed
-
Sometimes missing cases in
match
expressions were not detected. -
A defective simplification rule could in very rare cases lead to
infinite recursion in the compiler (#1685). -
Some broken links in
futhark doc
output (#1686). -
Incorrect checking of whether a function parameter is consumable
based on its type (#1687). -
Missing aliases for functions that return multiple aliased values
(#1690). -
new
/values
functions for GPU backends are now properly
asynchronous (#1664). This may uncover bugs in application code.
0.21.12
Added
-
Somewhat simplified the handling of "uniqueness types" (which is a
term we are moving away from). You should never see*
in
non-function types, and they are better thought of as effect
indicators. -
futhark literate
: prints tracing output (and other logging
messages that may occur) when run with-v
(#1678). -
Entry points can now be any valid Futhark identifier.
Fixed
-
futhark test -C
was broken. -
futhark_context_free()
for the GPU backends neglected to free some
memory used for internal bookkeeping, which could lead to memory
leaks for processes that repeatedly create and destroy contexts
(#1676). -
FutharkScript now allows
'
in names. -
futhark lsp
now handles warnings in programs that also have errors.