Skip to content

Releases: Sunflower-Dolls/Vapoursynth-llvmexpr

R4.3 - Bug Fix and `VkExpr` device selection

19 Dec 02:07

Choose a tag to compare

Bug Fix

  • Fixes missing symbol sincosf in LLVM backends. 50e502e

VkExpr

  • Allow selecting specific Vulkan device. 9b63054

Full Changelog: R4.2...R4.3

R4.2 - Bug Fix and Optimization

16 Dec 13:55

Choose a tag to compare

VkExpr

  • Fixed inconsistent round behavior on some platforms. 5db4fc0
  • Optimized CPU performance. 530d90d

Documentation

Build System

Full Changelog: R4.1...R4.2

R4.1 - Bug Fixes

15 Dec 11:56

Choose a tag to compare

VkExpr

  • Load Vulkan extensions based on availability. 0ac7ee9
  • Add Vulkan validation layer only if available. be5bff7
  • Fix segmentation error if failed to reduce CFG. 9a7e089
  • Fix indefinite hang on Windows after all frames are output. 85d2a08
  • Improve dependency discovery for Vulkan headers and VMA. 21db358

Thanks @HolyWu and @TheFeelTrain for testing and debugging.

Full Changelog: R4...R4.1

R4 - Vulkan Backend, Infix Standard Library Improvements, and Documentation Updates

15 Dec 04:09

Choose a tag to compare

Vulkan Backend (VkExpr)

Infix & Standard Library

  • Refactored input/output format macros ($\huge\color{red}Breaking \space Change$). Replaced get_fmt/__*_FMT__ with get_sampletype, __INPUT_SAMPLETYPE_*__, and __OUTPUT_SAMPLETYPE__ to clarify that they return integer constants representing sample types. e2525fc
  • Added __COLOR_FAMILY__ macro and get_color_family() standard library function. e2525fc
  • Added __NUM_PLANES__ family of macros (__NUM_PLANES__, __NUM_PLANES_0__, etc.) for accessing the number of planes in input clips. 8ecd6a8
  • Improved get_width() and get_height() to correctly handle plane indices. 8ecd6a8

Documentation & Tooling

  • Updated VSCode plugin to highlight the new __GPU__ macro. 643e674
  • Clarified pixel read-after-write behavior in documentation. 73063fd
  • Fixed LaTeX rendering issues in documentation. ce6b91c
  • Various documentation improvements and clarifications. 76f38b7, 4c5c7fa

Bug Fixes

  • Fix "Fails to build Preprocessor with Clang 20 on Fedora 42" (#9). badbc42

Note for RC Users

Full Changelog: R3.3...R4

R4-RC2 - Bug Fixes and Optimizations

13 Dec 12:02

Choose a tag to compare

Full Changelog: R4-RC1...R4-RC2

R4-RC1 - Vulkan Backend, Infix Standard Library Improvements, and Documentation Updates

12 Dec 16:13

Choose a tag to compare

Vulkan Backend (VkExpr)

Infix & Standard Library

  • Refactored input/output format macros (Breaking Change). Replaced get_fmt/__*_FMT__ with get_sampletype, __INPUT_SAMPLETYPE_*__, and __OUTPUT_SAMPLETYPE__ to clarify that they return integer constants representing sample types. e2525fc
  • Added __COLOR_FAMILY__ macro and get_color_family() standard library function. e2525fc
  • Added __NUM_PLANES__ family of macros (__NUM_PLANES__, __NUM_PLANES_0__, etc.) for accessing the number of planes in input clips. 8ecd6a8
  • Improved get_width() and get_height() to correctly handle plane indices. 8ecd6a8

Documentation & Tooling

  • Updated VSCode plugin to highlight the new __GPU__ macro. 643e674
  • Clarified pixel read-after-write behavior in documentation. 73063fd
  • Fixed LaTeX rendering issues in documentation. ce6b91c
  • Various documentation improvements and clarifications. 76f38b7, 4c5c7fa

Bug Fixes

  • Fix "Fails to build Preprocessor with Clang 20 on Fedora 42" (#9). badbc42

Full Changelog: R3.3...R4-RC1

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

20 Nov 05:02

Choose a tag to compare

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

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

30 Oct 15:10

Choose a tag to compare

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

R3.1 - Array Support, VSCode extension, `format`Parameter for `SingleExpr` and More Complex Function Control Flow

22 Oct 07:29

Choose a tag to compare

  • Added array data type and operationss. 66419c2, eba3268
  • Added VSCode extension for LLVMExpr infix syntax highlighting. 8619b90
  • Added format parameter to SingleExpr for specifying output format. 9c03122
  • Added AST dumping capability via --dump-ast flag in infix2postfix tool for debugging. 2ec447d
  • Implemented parser error recovery for better error handling. 5358920
  • Implemented void return type for functions, avoid leaving to stack effect check. 8b7f8ea
  • Allowed multiple and early returns from user-defined functions in infix syntax. e435cce
  • Replaced line numbers with source ranges for more precise error diagnostics. 66bb177
  • Added warning for unused symbols. 06b74f9
  • Force clang compiler for consistency across platforms. 2aeca7b

Full Changelog: R3...R3.1

R3 - Bug Fixes, Major Refactor and A LOT MORE

17 Oct 15:04

Choose a tag to compare

TL;DR

exprutils is removed and C++ plugin directly accepts infix code. SingleExpr has been added to compute per-frame property values (like akarin.PropExpr) but can do much more.

  • Fixed mirroring handling and out-of-bound memory access. de1d809
  • Fixed missing symbol on Windows. #6 @Mr-Z-2697
  • Removed exprutils python library and integrate infix handling directly into llvmexpr Added parameter infix to use infix syntax directly. 693a4d7
  • Added SingleExpr function. 244d743

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

Full Changelog: R2.3...R3