Skip to content
Choose a tag to compare

Weld v0.3.0

@sppalkia sppalkia released this Aug 23, 2019
· 23 commits to master since this release
Choose a tag to compare

This is the first tagged release of Weld. See the release notes below.


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 performs keyexists and lookup with a single hash operation. The operation returns a value and a boolean indicating whether the value was found. This operator will replace lookup on dictionaries eventually. See the language docs for more detail.

  • Changes the sort API to take a comparator function similar to libc qsort.

  • Adds an assert operator, which crashes the program if the assertion fails and evaluates to true 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).