Skip to content

R3.3 - Standard Library, Property Management, SingleExpr Improvements and Bug Fixes

Choose a tag to compare

@github-actions github-actions released this 20 Nov 05:02
· 96 commits to main since this release

Standard Library

  • Added std library for dynamic access to clip properties. After importing with @requires std, functions like get_width, get_height, get_bitdepth, and get_fmt are available directly. These functions support both Expr and SingleExpr modes (with mode-specific signatures). 6050a48, a451f07

Property Management

  • Added typed property write functions (set_propi, set_propf, set_propai, set_propaf) to explicitly control the type of output properties in SingleExpr mode. These map to the underlying Postfix prop$suffix syntax. Types of writes to a single property should maintain type consistency within a single expression. c25544e, 4c9ea4d, 6e99c5c, eb18727
  • Added is_prop_exist built-in function (Infix) and srcN.prop? syntax (Postfix) for checking the existence of frame properties. f5d2d06, 7472b55
  • Added remove_prop built-in function (Infix) and prop$d syntax (Postfix) to delete frame properties. d964c43
  • Enabled conditional property writes, allowing set_prop calls within if blocks. If a property write is skipped (e.g., the if block is not executed), the property is copied from the first source clip (src0) if it exists. 24e1551, c25544e

SingleExpr Improvements

  • Added support for input clips with different dimensions. 70e08d6
  • Fixed accessing the same property name from different clips. defd031

Safety and Reliability (Infix)

  • Implemented recursion detection in semantic analysis to prevent compiler crashes due to infinite recursion. a3a0d66
  • Added formal verification for definite assignment of variables, ensuring that all variables are defined before use on all execution paths. This is made possible by new goto restrictions that jumps cannot enter a variable's scope (skipping its initialization). 0c6351c, 9ec8260

Performance (Infix)

  • Refactored CodeGenerator for improved compilation performance. c66be00
  • Disabled stack effect validation in release builds to speed up processing. 74d12e3

Bug Fixes (Infix)

  • Fixed preprocessor token pasting and rescanning behavior. 3b3b858
  • Fixed goto validation logic. 0c6351c
  • Fixed semantic check for built-in functions. 6852f5a

Deprecations (Infix)

  • Deprecated $width and $height constants. Use std library functions instead. 6514aa9
  • Deprecated frame.width and frame.height in SingleExpr mode. Use std library functions instead. 6514aa9

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

Full Changelog: R3.2...R3.3