Skip to content

v0.1.1

Latest

Choose a tag to compare

@sukeya sukeya released this 04 May 08:52
· 15 commits to main since this release
2e8759b

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_DEBUG with core::debug_print()
  • Replaced MATH_EXPR_ERROR_LOCATION with core::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 4 or 16 based on configuration settings
  • Refactored implementations in files such as function_nodes.hpp, vector_nodes.hpp, and node_utils.hpp to 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.hpp
  • igeneric_function.hpp
  • function_compositor.hpp
  • lexer/modifiers.hpp
  • parser.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.hpp has been removed
  • External code that directly depends on MATH_EXPR_DEBUG or MATH_EXPR_ERROR_LOCATION will require modifications