)]}'
{
  "commit": "14bcaaf58eefc2c139350253d3cdfb1940bca7e4",
  "tree": "8d1f838d924139d1a853c2a70cba9606aca3bf56",
  "parents": [
    "ed9ea2e7accc316d4086ac377f622ca90f2c016d"
  ],
  "author": {
    "name": "Andy Heninger",
    "email": "andy.heninger@gmail.com",
    "time": "Thu Feb 13 21:40:28 2020 -0800"
  },
  "committer": {
    "name": "Andy Heninger",
    "email": "andy.heninger@gmail.com",
    "time": "Tue Feb 18 18:28:10 2020 -0800"
  },
  "message": "ICU-20876 Regex Grapheme Cluster matching with Break Iterators.\n\nChange the implementation of grapheme cluster matching in regex to use an ICU\nbreak iterator instead of a little one-off state machine.\n\nThe old implementation had fallen behind the Unicode UAX-29 specification for\ngraphem clusters, and could not be easily updated.\n\nThe implementation follows the same general pattern that is used for finding\nword boundaries with an ICU break iterator. In reviewing that code, a few\nimprovements to the handling of ICU error codes were also made.\n\nAlso note that this change adds a new dependency on Break Iteration.  Regex\npatterns that previously would work with ICU builds that were configured with\nno break iteration will now fail. But only if they include \\X for matching\ngrapheme cluster boundaries.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5f6db59407333da01f3c925eacda1d0dc14f8f75",
      "old_mode": 33188,
      "old_path": "icu4c/source/i18n/regexcmp.cpp",
      "new_id": "dd777b7538405f279a191c48fd0b4b74406182de",
      "new_mode": 33188,
      "new_path": "icu4c/source/i18n/regexcmp.cpp"
    },
    {
      "type": "modify",
      "old_id": "495c2bb5446e7d4e00f502f2724e92619c67f2b7",
      "old_mode": 33188,
      "old_path": "icu4c/source/i18n/rematch.cpp",
      "new_id": "69909faab9cac81b382f9b4d5d33c993780af749",
      "new_mode": 33188,
      "new_path": "icu4c/source/i18n/rematch.cpp"
    },
    {
      "type": "modify",
      "old_id": "9be2771bb4a44b9b3360eeff137d4b513f94b930",
      "old_mode": 33188,
      "old_path": "icu4c/source/i18n/unicode/regex.h",
      "new_id": "7f7d15228046b1e6bcc2d94cc4d4b4bb00ae8847",
      "new_mode": 33188,
      "new_path": "icu4c/source/i18n/unicode/regex.h"
    },
    {
      "type": "modify",
      "old_id": "0e4378af53b4dfb9be7928aba64f0726af37ae26",
      "old_mode": 33188,
      "old_path": "icu4c/source/test/testdata/regextst.txt",
      "new_id": "4609ee98f9af6d95c653af903b0a6267ee4533e8",
      "new_mode": 33188,
      "new_path": "icu4c/source/test/testdata/regextst.txt"
    }
  ]
}
