Releases: Sunflower-Dolls/Vapoursynth-llvmexpr
R4.3 - Bug Fix and `VkExpr` device selection
Bug Fix
- Fixes missing symbol
sincosfin LLVM backends. 50e502e
VkExpr
- Allow selecting specific Vulkan device. 9b63054
Full Changelog: R4.2...R4.3
R4.2 - Bug Fix and Optimization
VkExpr
Documentation
- Clarify round behavoirs. 909b50e
Build System
- Force
volklinkage. a3d8c98
Full Changelog: R4.1...R4.2
R4.1 - Bug Fixes
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
Vulkan Backend (VkExpr)
- Added a new Vulkan-based backend (
VkExpr) for GPU acceleration. 715a47e, bc2ee49, f73517d, 643e674, 1de85ba, 74696a6, 40fa091, b461aa6
Infix & Standard Library
-
Refactored input/output format macros (
$\huge\color{red}Breaking \space Change$ ). Replacedget_fmt/__*_FMT__withget_sampletype,__INPUT_SAMPLETYPE_*__, and__OUTPUT_SAMPLETYPE__to clarify that they return integer constants representing sample types. e2525fc - Added
__COLOR_FAMILY__macro andget_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()andget_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
Note for RC Users
Full Changelog: R3.3...R4
R4-RC2 - Bug Fixes and Optimizations
Full Changelog: R4-RC1...R4-RC2
R4-RC1 - Vulkan Backend, Infix Standard Library Improvements, and Documentation Updates
Vulkan Backend (VkExpr)
- Added a new Vulkan-based backend (
VkExpr) for GPU acceleration. 715a47e, bc2ee49, f73517d, 643e674, 1de85ba
Infix & Standard Library
- Refactored input/output format macros (Breaking Change). Replaced
get_fmt/__*_FMT__withget_sampletype,__INPUT_SAMPLETYPE_*__, and__OUTPUT_SAMPLETYPE__to clarify that they return integer constants representing sample types. e2525fc - Added
__COLOR_FAMILY__macro andget_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()andget_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
Full Changelog: R3.3...R4-RC1
R3.3 - Standard Library, Property Management, SingleExpr Improvements and Bug Fixes
Standard Library
- Added
stdlibrary for dynamic access to clip properties. After importing with@requires std, functions likeget_width,get_height,get_bitdepth, andget_fmtare available directly. These functions support bothExprandSingleExprmodes (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 inSingleExprmode. These map to the underlying Postfixprop$suffixsyntax. Types of writes to a single property should maintain type consistency within a single expression. c25544e, 4c9ea4d, 6e99c5c, eb18727 - Added
is_prop_existbuilt-in function (Infix) andsrcN.prop?syntax (Postfix) for checking the existence of frame properties. f5d2d06, 7472b55 - Added
remove_propbuilt-in function (Infix) andprop$dsyntax (Postfix) to delete frame properties. d964c43 - Enabled conditional property writes, allowing
set_propcalls withinifblocks. If a property write is skipped (e.g., theifblock 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
gotorestrictions that jumps cannot enter a variable's scope (skipping its initialization). 0c6351c, 9ec8260
Performance (Infix)
- Refactored
CodeGeneratorfor 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
$widthand$heightconstants. Usestdlibrary functions instead. 6514aa9 - Deprecated
frame.widthandframe.heightinSingleExprmode. Usestdlibrary 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
Preprocessor System
- Added comprehensive preprocessor for infix expressions with
@define,@if,@ifdef,@ifndef,@else,@endif,@error, and@undefdirectives. Supports compile-time constant expression evaluation, function-like macros, token pasting (@@), recursion, and conditional branch elimination. 8229a95 - Added
consteval(),is_consteval(), andstatic_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
@requiresdirective. Includes built-inalgorithmslibrary (sorting, searching) andmetalibrary (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
SingleExprby 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
!= 0semantics. 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
- Added array data type and operationss. 66419c2, eba3268
- Added VSCode extension for LLVMExpr infix syntax highlighting. 8619b90
- Added
formatparameter toSingleExprfor specifying output format. 9c03122 - Added AST dumping capability via
--dump-astflag ininfix2postfixtool 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
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
exprutilspython library and integrate infix handling directly intollvmexprAdded parameterinfixto use infix syntax directly. 693a4d7 - Added
SingleExprfunction. 244d743
For more information about the new release, refer to documents.
Full Changelog: R2.3...R3