Repository navigation
Release Notes
Summary of Changes
The changes primarily focus on reorganizing internal implementation details and fixing bugs related to vector operations.
Rather than adding new features, the emphasis has been on improving maintainability and properly applying existing optimizations.
Major Changes
Reduction of Macro Dependencies
We have migrated functionality previously implemented using macros—such as debug output and error location generation—to function-based implementations.
- Replaced
MATH_EXPR_DEBUGwithcore::debug_print() - Replaced
MATH_EXPR_ERROR_LOCATIONwithcore::error_location() - Refactored multiple implementations that used auxiliary macros into standard function and method definitions
- Removed
include/math_expr/core/cleanup.hpp
These changes have improved code readability and maintainability.
Additionally, the introduction of std::source_location usage has further clarified the C++20-based implementation approach.
Fix for kDisableSuperscalarUnroll
A bug was fixed where kDisableSuperscalarUnroll was not being properly applied during vector operation unrolling processing.
- Introduced batch processing logic for
loop_unroll - Standardized unroll width to either
4or16based on configuration settings - Refactored implementations in files such as
function_nodes.hpp,vector_nodes.hpp, andnode_utils.hppto use the unified processing logic
This modification represents an important fix, particularly for performance-critical use cases.
Implementation Reorganization
Internal duplicate code and macro-based implementations were reduced, with these areas being replaced with template functions and standard control structures.
ifunction.hppigeneric_function.hppfunction_compositor.hpplexer/modifiers.hppparser.hpp
The changes in parser.hpp are significant, though most are due to replacements of debug output and auxiliary processing functions.
Compatibility Notes
There are potential backward compatibility considerations.
- The file
include/math_expr/core/cleanup.hpphas been removed - External code that directly depends on
MATH_EXPR_DEBUGorMATH_EXPR_ERROR_LOCATIONwill require modifications