Skip to content

R3.2 - Preprocessor System, Standard Library, Performance Boost and Bug Fixes

Choose a tag to compare

@github-actions github-actions released this 30 Oct 15:10
· 129 commits to main since this release

Preprocessor System

  • Added comprehensive preprocessor for infix expressions with @define, @if, @ifdef, @ifndef, @else, @endif, @error, and @undef directives. Supports compile-time constant expression evaluation, function-like macros, token pasting (@@), recursion, and conditional branch elimination. 8229a95
  • Added consteval(), is_consteval(), and static_assert() intrinsics for compile-time evaluation and assertions. 18df83c, af633eb
  • Added predefined macros __SUBSAMPLE_W__, __SUBSAMPLE_H__, __PLANE_NO__, __OUTPUT_FMT__, and __INPUT_FMT_N__ for accessing frame and clip properties. eec0ffc, 3608daa

Standard Library

  • Added standard library support via @requires directive. Includes built-in algorithms library (sorting, searching) and meta library (metaprogramming utilities). 75e3727, 26fb053
  • Implemented Introsort for improved sorting performance. fd91c61

Performance Improvements

  • Overhauled tokenizer using compile-time regular expressions (ctre), improving complex expression compilation speed by 2x. 8e1a247
  • Optimized SingleExpr by allocating small static arrays on the stack. 270b6e6
  • Optimized dynamic array allocation and conversion with new optimization pass. 2299adc

Other Improvements

  • Refactored analysis framework into dedicated passes for better modularity. cd54f4a, 196564e, 35038e1
  • Added special write-only _ variable to discard unwanted values. f79a085
  • Standardized infix conditional logic to use != 0 semantics. b0e717e
  • Fixed bitwise operator rounding to match Akarin.Expr behavior (round to nearest integer). cd54f4a

For more information about the new release, refer to documents.

Full Changelog: R3.1...R3.2