R39 – Fixing Bugs and Undoing Bad Ideas

R39 is finally done after far too long. It has the optimizations and bug fixes and nothing really interesting beyond that. Hopefully I’ll have enough time to start experimenting with bigger changes soon…

Release highlights

  • Optimized Sobel, Prewitt and Levels
  • Added float support to BoxBlur
  • Added swapN and dupN operators to Expr
  • AVX-512 support (as in proper memory alignment when AVX-512 is preset, no actual optimizations)
  • Fixed a pile of value range clamping issues for 9-15 output in internal filters

Breaking changes

  • Sobel and Prewitt functions had their min and max arguments removed since they’re just a bad idea inherited from MaskTools.
  • Reverted the horrible per plane argument system in Levels to the way it previously worked. Fortunately nobody seemed to even notice this change.
  • Now uses Nasm instead of Yasm in the build system.
  • CropRel is now simply know as Crop since that’s the crop function most people usually want anyway. CropRel is still kept as an alias for compatibility.