Skip to content

v1.3.9

Latest

Choose a tag to compare

@zhengchun zhengchun released this 05 Oct 05:37
· 2 commits to master since this release

What's Changed

Bug fixes

  • Fix chained predicates on a filter expression by @dastrobu in #143
  • Fix following:: axis in predicates by @zhengchun in #146
  • Fix panic on boolean operands in comparison operator by @zhengchun in #145 (security report, CWE-476)
  • Round substring() positions with XPath round() by @SashaMIT in #147
  • Clip substring() to the window after start, not to the whole string by @youdie006 in #138
  • Return false from matches() when the node-set argument selects nothing by @youdie006 in #141
  • Convert number/boolean arguments with asString in four string functions by @youdie006 in #144
  • Keep boolean XPath results out of node selection by @rupayon123 in (#142, fixes #133)

Unicode

  • Make string-length(), substring() and translate() count characters by @youdie006 in #139
    • All three index by character per XPath 1.0 §4.2 instead of by byte: string-length("日本語") is now 3, substring("日本語abc", 2, 2) returns "本語", and translate() no longer produces mojibake.

Performance & behavior

  • Skip Filter flag for non-positional predicates by @thunderkatz in #140
    • Optimize expression tree building by avoiding Filter node overhead for non-positional predicates during XPath compiling.

Tests

  • Add unit tests for core node and conversion functions [#137] by @escholtz
  • Add unit tests for substring function edge cases and non-matching inputs [#136] by @escholtz
  • Add tests for fractional number literals without leading zero [#135] by @escholtz
  • Add tests for invalid XPath expressions and function arguments [#134] by @escholtz