We are pleased to announce the release of Halide 12.0.0!
This is mostly a quality of life and bugfix release to set the stage for larger changes in Halide 13 (which will require C++17).
You can download one of our binary releases here, or check one of the following package repositories:
- Vcpkg: https://github.com/microsoft/vcpkg/tree/master/ports/halide
- Homebrew: https://formulae.brew.sh/formula/halide
Language and Compiler
- Added
align_extent
scheduling directive #5829 - Added
TailStrategy::Predicate
as an alternative toTailStrategy::GuardWithIf
to use predicated loops unconditionally #5856 - Added
scatter()
andgather()
expressions to support reading from and writing to multiple locations in update definitions #5553 - Added internal memoization to Adams2019 autoscheduler (performance improvement) #5697 #5654
- Removed old-style
realize()
methods which had been deprecated #5676 - Removed deprecated scheduling directive overloads #5656
- Many simplifier and bounds inference improvements and bugfixes #5615 #5618 #5895 #6002
Backends
- Added support for AVX512 VNNI instructions #5725 #5807
- Removed OpenGL/GLSL backend #5626
- Fixed various errors with
large_buffers
#5716 #5940 - Improved support for
sdot
andudot
instructions on ARM (where supported) #5954 - Improved support for WebAssembly SIMD ops, when compiling with LLVM 13 #5849 #5850 #5853 #5854 #5861 #5863
- PyStub generators must now choose to use either only positional arguments or only keyword arguments. This is an ABI break #5761
Build
- Added scripts to create Ubuntu packages #5754 #5967
- Added experimental support for ClangCL on Windows #5876
- Added support and pre-built binaries for macOS ARM64
- Halide headers no longer inject stack space linker flags on Windows; now, the compiler runs on a fiber with enough stack space #5873
- Halide shared library no longer exposes LLVM symbols on macOS and Linux. Help wanted for Windows! #5659