Weld v0.3.0
Pre-releaseThis is the first tagged release of Weld. See the release notes below.
v0.3.0
This release brings a new, optimized LLVM backend and updates to the core Weld APIs. It also removes multi-threading support for the time being, beause the old multi-threading design imposed undue overhead on single-threaded programs. In the future, threading will be re-introduced.
Detailed Notes
-
Introduces the
WeldContext
API, which provides a context for Weld runs to allocate their memory and to reuse objects allocated by other Weld runs. See the [WeldContext
documentation]({{ site.url }}/docs/latest/weld/struct.WeldContext.html) for more details on how this is used. -
Adds an
optlookup
operator that performskeyexists
andlookup
with a single hash operation. The operation returns a value and a boolean indicating whether the value was found. This operator will replacelookup
on dictionaries eventually. See the language docs for more detail. -
Changes the
sort
API to take a comparator function similar tolibc
qsort
. -
Adds an
assert
operator, which crashes the program if the assertion fails and evaluates totrue
otherwise. -
Removes support for the
nditer
iterator. This will be added back in a future release. -
Adds new options for dumping code. See the [new configuration options]({{ site.url }}/docs/latest/weld/#constants) for details.
-
Adds the ability to make type aliases:
type mytuple = {i32,i32};
-
Internally, the backend now uses LLVM's C builder API. This improves both compilation times and execution time (since LLVM's optimizer does a better job overall)
-
Change the hash function to CRC32. This is only supported on x86/x64.
-
Implements common subexpression elimination.
-
Bug fixes (see the PRs on the Weld repository).