Skip to content

2.28.0: UTF-8, garbage-collectable group names

Latest

Choose a tag to compare

@mudge mudge released this 28 Sep 14:16
· 3 commits to main since this release
1d0ac91

Changed

  • Capturing group names are now always returned as UTF-8 strings (and symbols), even if the RE2::Regexp sets the utf8 option to false, as RE2 stores them internally as UTF-8.

Fixed

  • Fix a segmentation fault when calling RE2::Set#match after RE2::Set#compile has failed, e.g. if the patterns exceed max_mem. This now raises an RE2::Set::MatchError (or returns an empty array if the exception option is false) as if the set had not been compiled.
  • Fix a use-after-free when re-initializing an RE2::Set while matching against it. RE2::Set objects can no longer be re-initialized.
  • Fix a use-after-free when calling initialize_copy on an RE2::MatchData or RE2::Scanner with itself.
  • Prevent an RE2::Regexp being re-initialized while its options are being parsed, which could replace the pattern of a frozen RE2::Regexp and leak memory.
  • Symbol keys returned by RE2::MatchData#named_captures (with symbolize_names) and RE2::MatchData#deconstruct_keys can now be garbage collected, preventing unbounded memory growth when matching many different patterns. Non-ASCII capturing group names are also now returned as correctly encoded symbols.
  • Always compile the extension with C++17, fixing builds with RubyInstaller 4.0.5-1's ucrt64 toolchain.

SHA256 checksums:

e44820c02705cbb83d70a3e45cd03e72a3d182f7a88d18cb4f34ab432c68e5a9  re2-2.28.0-aarch64-linux-gnu.gem
8898fe5c37ca6e9219ef032bb5bcadf5c28d37368e570c639d885e51ec084097  re2-2.28.0-aarch64-linux-musl.gem
b58e40c5133d24f10384c6c2cc0d1b849308c845c3179478cb9c5cd59332625d  re2-2.28.0-arm-linux-gnu.gem
7e4dfee266483d1adfec7736ddb85b43afd4b8bcb9d61c8d0ca737248539420b  re2-2.28.0-arm-linux-musl.gem
01aa1e09f68eeef110d1d6d5d0f686b3aa6076eeb362decb4d1c2751c4222219  re2-2.28.0-arm64-darwin.gem
a3510c82db0455485447e0b67b00ca0f89a1503f7851967040c93b9d99a40068  re2-2.28.0-x64-mingw-ucrt.gem
33421c6cc09b81e81fccc010469d495b9c85ebb6cca3107d3632093daef80740  re2-2.28.0-x86_64-darwin.gem
fb703048612f2e39a175b96abcd78d3d2cc2032418b0fe0b17cca110897694d6  re2-2.28.0-x86_64-linux-gnu.gem
8869daa213c1a721a38a844bafe283172fd761f879b76b9198739c0cf86557da  re2-2.28.0-x86_64-linux-musl.gem
9d2ff383749a304f607ff2c6d63f84ede2fc6581512c7e12acd50622d392d10d  re2-2.28.0.gem