)]}'
{
  "log": [
    {
      "commit": "f2b16986a194ab839c5a23bd7fe904f9fae1526f",
      "tree": "cad79ef7c4b40274bd11c1c4b48d9889426611ab",
      "parents": [
        "90e52490b39f0052fb5313d67728eff77191aaae"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Mar 29 09:08:58 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Mar 29 09:08:58 2025 +0100"
      },
      "message": "patch 9.1.1258: regexp: max \\U and \\%U value is limited by INT_MAX\n\nProblem:  regexp: max \\U and \\%U value is limited by INT_MAX but gives a\n          confusing error message (related: v8.1.0985).\nSolution: give a better error message when the value reaches INT_MAX\n\nWhen searching Vim allows to get up to 8 hex characters using the /\\V\nand /\\%V regex atoms.  However, when using \"/\\UFFFFFFFF\" the code point is\nalready above what an integer variable can hold, which is 2,147,483,647.\n\nSince patch v8.1.0985, Vim already limited the max codepoint to INT_MAX\n(otherwise it caused a crash in the nfa regex engine), but instead of\nerror\u0027ing out it silently fell back to parse the number as a backslash\nvalue and not as a codepoint value and as such this \"/[\\UFFFFFFFF]\" will\nhappily find a \"\\\" or an literal \"F\".  And this \"/[\\d127-\\UFFFFFFFF]\"\nwill error out as \"reverse range in character class).\n\nInterestingly, the max Unicode codepoint value is U+10FFFF which still\nfits into an ordinary integer value,  which means, that we don\u0027t even\nneed to parse 8 hex characters, but 6 should have been enough.\n\nHowever, let\u0027s not limit Vim to search for only max 6 hex characters\n(which would be a backward incompatible change), but instead allow all 8\ncharacters and only if the codepoint reaches INT_MAX, give a more\nprecise error message (about what the max unicode codepoint value is).\nThis allows to search for \"[\\U7FFFFFFE]\" (will likely return \"E486\nPattern not found\") and \"[/\\U7FFFFFF]\" now errors \"E1517: Value too\nlarge, max Unicode codepoint is U+10FFFF\".\n\nWhile this change is straight forward on architectures where long is 8\nbytes, this is not so simple on Windows or 32bit architectures where long\nis 4 bytes (and therefore the test fails there).  To account for that,\nlet\u0027s make use of the vimlong_T number type and make a few corresponding\nchanges in the regex engine code and cast the value to the expected data\ntype. This however may not work correctly on systems that doesn\u0027t have\nthe long long datatype (e.g. OpenVMS) and probably the test will fail\nthere.\n\nfixes: #16949\ncloses: #16994\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "22e8e12d9f5034e1984db0c567b281fda4de8dd7",
      "tree": "856c42096fc98bd92eb4a475d5039ebf4cf9cb25",
      "parents": [
        "df9f67e10d214e0124f2141f59593529801307a4"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Jul 30 20:39:18 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Jul 30 20:39:18 2024 +0200"
      },
      "message": "patch 9.1.0645: regex: wrong match when searching multi-byte char case-insensitive\n\nProblem:  regex: wrong match when searching multi-byte char\n          case-insensitive (diffsetter)\nSolution: Apply proper case-folding for characters and search-string\n\nThis patch does the following 4 things:\n\n1) When the regexp engine compares two utf-8 codepoints case\n   insensitive it may match an adjacent character, because it assumes\n   it can step over as many bytes as the pattern contains.\n\n   This however is not necessarily true because of case-folding, a\n   multi-byte UTF-8 character can be considered equal to some\n   single-byte value.\n\n   Let\u0027s consider the pattern \u0027ſ\u0027 and the string \u0027s\u0027. When comparing and\n   ignoring case, the single character \u0027s\u0027 matches, and since it matches\n   Vim will try to step over the match (by the amount of bytes of the\n   pattern), assuming that since it matches, the length of both strings is\n   the same.\n\n   However in that case, it should only step over the single byte value\n   \u0027s\u0027 by 1 byte and try to start matching after it again. So for the\n   backtracking engine we need to ensure:\n   * we try to match the correct length for the pattern and the text\n   * in case of a match, we step over it correctly\n\n   There is one tricky thing for the backtracing engine. We also need to\n   calculate correctly the number of bytes to compare the 2 different\n   utf-8 strings s1 and s2. So we will count the number of characters in\n   s1 that the byte len specified. Then we count the number of bytes to\n   step over the same number of characters in string s2 and then we can\n   correctly compare the 2 utf-8 strings.\n\n2) A similar thing can happen for the NFA engine, when skipping to the\n   next character to test for a match. We are skipping over the regstart\n   pointer, however we do not consider the case that because of\n   case-folding we may need to adjust the number of bytes to skip over.\n   So this needs to be adjusted in find_match_text() as well.\n\n3) A related issue turned out, when prog-\u003ematch_text is actually empty.\n   In that case we should try to find the next match and skip this\n   condition.\n\n4) When comparing characters using collections, we must also apply case\n   folding to each character in the collection and not just to the\n   current character from the search string.  This doesn\u0027t apply to the\n   NFA engine, because internally it converts collections to branches\n   [abc] -\u003e a\\|b\\|c\n\nfixes: #14294\ncloses: #14756\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6043024cd48db485e3c748e8f46ca87e3cdef9d9",
      "tree": "a40288608d58be78a7fa26c4a0ba22deb0501307",
      "parents": [
        "679f5abb9930fafda29ae038f47de357e9a0f53e"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue May 14 11:19:47 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue May 14 11:19:47 2024 +0200"
      },
      "message": "patch 9.1.0412: typo in regexp_bt.c in DEBUG code\n\nProblem:  typo in regexp_bt.c in DEBUG code, causing\n          compile error (@kfleong7, after v9.1.0409)\nSolution: Replace bulen by buflen\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "82792db6315f7c7b0e299cdde1566f2932a463f8",
      "tree": "1c737947e930d407f6ebdb2d07d08e14df96e560",
      "parents": [
        "86f6e2c2eed7df2bf5c60cc74d08d7a8d3c75f45"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Sun May 12 00:07:17 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 12 00:07:17 2024 +0200"
      },
      "message": "patch 9.1.0409: too many strlen() calls in the regexp engine\n\nProblem:  too many strlen() calls in the regexp engine\nSolution: refactor code to retrieve strlen differently, make use\n          of bsearch() for getting the character class\n          (John Marriott)\n\ncloses: #14648\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c97f4d61cde24030f2f7d2318e1b409a0ccc3e43",
      "tree": "f656142296f4b44236674cdb6258d96acab0a6ee",
      "parents": [
        "49f1e1979f9c3a4d7b28f0961bca0e41227a0557"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 10 16:18:15 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 10 16:22:17 2024 +0200"
      },
      "message": "patch 9.1.0297: Patch 9.1.0296 causes too many issues\n\nProblem:  Patch 9.1.0296 causes too many issues\n          (Tony Mechelynck, @chdiza, CI)\nSolution: Back out the change for now\n\nRevert \"patch 9.1.0296: regexp: engines do not handle case-folding well\"\n\nThis reverts commit 7a27c108e0509f3255ebdcb6558e896c223e4d23 it causes\nissues with syntax highlighting and breaks the FreeBSD and MacOS CI. It\nneeds more work.\n\nfixes: #14487\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7a27c108e0509f3255ebdcb6558e896c223e4d23",
      "tree": "9c900010ad085e5b29d18af5a4ca3658f672c710",
      "parents": [
        "d2b95b8446233e0021a8c0cd672f8fae748e3955"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 09 22:53:19 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 09 22:53:19 2024 +0200"
      },
      "message": "patch 9.1.0296: regexp: engines do not handle case-folding well\n\nProblem:  Regex engines do not handle case-folding well\nSolution: Correctly calculate byte length of characters to skip\n\nWhen the regexp engine compares two utf-8 codepoints case insensitively\nit may match an adjacent character, because it assumes it can step over\nas many bytes as the pattern contains.\n\nThis however is not necessarily true because of case-folding, a\nmulti-byte UTF-8 character can be considered equal to some single-byte\nvalue.\n\nLet\u0027s consider the pattern \u0027ſ\u0027 and the string \u0027s\u0027. When comparing and\nignoring case, the single character \u0027s\u0027 matches, and since it matches\nVim will try to step over the match (by the amount of bytes of the\npattern), assuming that since it matches, the length of both strings is\nthe same.\n\nHowever in that case, it should only step over the single byte\nvalue \u0027s\u0027 so by 1 byte and try to start matching after it again. So for the\nbacktracking engine we need to ensure:\n- we try to match the correct length for the pattern and the text\n- in case of a match, we step over it correctly\n\nThe same thing can happen for the NFA engine, when skipping to the next\ncharacter to test for a match. We are skipping over the regstart\npointer, however we do not consider the case that because of\ncase-folding we may need to adjust the number of bytes to skip over. So\nthis needs to be adjusted in find_match_text() as well.\n\nA related issue turned out, when prog-\u003ematch_text is actually empty. In\nthat case we should try to find the next match and skip this condition.\n\nfixes: #14294\ncloses: #14433\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "46fa3c7e271eb2abb05a0d9e6dbc9c36c2b2da02",
      "tree": "46c442a882fc4739bf4fe0ce288c80f1a3bfd63e",
      "parents": [
        "74a23318467aecbb8e21535c6e8a27a257a0a14a"
      ],
      "author": {
        "name": "Julio B",
        "email": "julio.bacel@gmail.com",
        "time": "Thu Mar 28 10:23:37 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Mar 28 10:23:37 2024 +0100"
      },
      "message": "patch 9.1.0217: regexp: verymagic cannot match before/after a mark\n\nProblem:  regexp: verymagic cannot match before/after a mark\nSolution: Correctly check for the very magic check (Julio B)\n\nFix regexp parser for \\v%\u003e\u0027m and \\v%\u003c\u0027m\nCurrently \\v%\u0027m works fine, but it is unable to match before or after\nthe position of mark m.\n\ncloses: #14309\n\nSigned-off-by: Julio B \u003cjulio.bacel@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d2cc51f9a1a5a30ef5d2e732f49d7f495cae24cf",
      "tree": "caaf1ea4beed67081e63e5b82299d7078a5098df",
      "parents": [
        "81642d9d6ff5cd6a90a012b1b98632ce51eeb1a8"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jan 04 22:54:08 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jan 04 22:54:08 2024 +0100"
      },
      "message": "patch 9.1.0011: regexp cannot match combining chars in collection\n\nProblem:  regexp cannot match combining chars in collection\nSolution: Check for combining characters in regex collections for the\n          NFA and BT Regex Engine\n\nAlso, while at it, make debug mode work again.\n\nfixes #10286\ncloses: #12871\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "be07caa071ea93c07b1b2204a17237133f38b2bd",
      "tree": "034bd9653476bcaaf1e9a22ac90c86a9f0465c39",
      "parents": [
        "6d626c41842e2c3ab698338bbe5fcfcf0557ecd8"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Aug 20 22:26:15 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Aug 20 22:28:28 2023 +0200"
      },
      "message": "patch 9.0.1777: patch 9.0.1771 causes problems\n\nProblem:  patch 9.0.1771 causes problems\nSolution: revert it\n\nRevert \"patch 9.0.1771: regex: combining chars in collections not handled\"\nThis reverts commit ca22fc36a4e8a315f199893ee8ff6253573f5fbe.\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ca22fc36a4e8a315f199893ee8ff6253573f5fbe",
      "tree": "04f91cc7a7e558105aa025b2c8a39017d45a4497",
      "parents": [
        "a6ab5e69d3f14da8036a3018e8e93c635803ee8b"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Aug 20 20:34:22 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Aug 20 20:38:56 2023 +0200"
      },
      "message": "patch 9.0.1771: regex: combining chars in collections not handled\n\nProblem:  regex: combining chars in collections not handled\nSolution: Check for following combining characters for NFA and BT engine\n\ncloses: #10459\ncloses: #10286\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "68ebcee0237d927dd5386073499162389d4d708a",
      "tree": "ce198c27bc9d743c31fed87bb5c1076b4445fcf8",
      "parents": [
        "3c240f608c38ef1af67e112e0e689751c003f946"
      ],
      "author": {
        "name": "RestorerZ",
        "email": "restorer@mail2k.ru",
        "time": "Wed May 31 17:12:14 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 31 17:12:14 2023 +0100"
      },
      "message": "patch 9.0.1594: some internal error messages are translated\n\nProblem:    Some internal error messages are translated.\nSolution:   Consistently do not translate internal error messages.\n            (closes #12459)\n"
    },
    {
      "commit": "ebfec1c531f32d424bb2aca6e7391ef3bfcbfe20",
      "tree": "d017ab5fcc15f2eef851de089c3b2aef39d7a387",
      "parents": [
        "3d79f0a4309995956bd8889940cca22f7a15881d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 22 21:14:53 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 22 21:14:53 2023 +0000"
      },
      "message": "patch 9.0.1234: the code style has to be checked manually\n\nProblem:    The code style has to be checked manually.\nSolution:   Add basic code style checks in a test.  Fix or avoid uncovered\n            problems.\n"
    },
    {
      "commit": "f97a295ccaa9803367f3714cdefce4e2283c771d",
      "tree": "a5e4d3b6f9b6b5b8a123857d13aa3b423494c01f",
      "parents": [
        "4aecaa168e90cf28da7a6facea6b11ae250a8a18"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Wed Jan 18 18:17:48 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 18 18:17:48 2023 +0000"
      },
      "message": "patch 9.0.1221: code is indented more than necessary\n\nProblem:    Code is indented more than necessary.\nSolution:   Use an early return where it makes sense. (Yegappan Lakshmanan,\n            closes #11833)\n"
    },
    {
      "commit": "4c5678ff0c376661d4a8183a5a074a1203413b9d",
      "tree": "2ddd73cae34d17f2eb4290fda1131bb63f4a0fab",
      "parents": [
        "a87749e3eae3f918b6678f45cf975f0cf06d3e97"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Nov 30 18:12:19 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Nov 30 18:12:19 2022 +0000"
      },
      "message": "patch 9.0.0977: it is not easy to see what client-server commands are doing\n\nProblem:    It is not easy to see what client-server commands are doing.\nSolution:   Add channel log messages if ch_log() is available.  Move the\n            channel logging and make it available with the +eval feature.\n"
    },
    {
      "commit": "01105b37a108022515d364201767f7f111ec4222",
      "tree": "352f98cdf0ccf56a8854b00df62a00573edb9780",
      "parents": [
        "c96311b5be307f5a1d1b20a0ec930d63964e7335"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 26 11:47:10 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 26 11:47:10 2022 +0000"
      },
      "message": "patch 9.0.0951: trying every character position for a match is inefficient\n\nProblem:    Trying every character position for a match is inefficient.\nSolution:   Use the start position of the match ignoring \"\\zs\".\n"
    },
    {
      "commit": "753aead960f163d0d3f8ce523ea523f2e0cec06d",
      "tree": "b8095e475cf64797ad6c18be85388ab142750283",
      "parents": [
        "b0d12e63e8c763ce940dc4c162111fedde2507ef"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Sep 08 12:17:06 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Sep 08 12:17:06 2022 +0100"
      },
      "message": "patch 9.0.0414: matchstr() still does not match column offset\n\nProblem:    matchstr() still does not match column offset when done after a\n            text search.\nSolution:   Only use the line number for a multi-line search.  Fix the test.\n            (closes #10938)\n"
    },
    {
      "commit": "75a115e8d632e96b4f45dc5145ba261876a83dcf",
      "tree": "31b49d9c295e0732eea955233ab1d0cbd7e9a649",
      "parents": [
        "9667b2c888351b04751bdb43cba0d4ffc8c13ab1"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Sep 07 18:21:24 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Sep 07 18:21:24 2022 +0100"
      },
      "message": "patch 9.0.0407: matchstr() does match column offset\n\nProblem:    matchstr() does match column offset. (Yasuhiro Matsumoto)\nSolution:   Accept line number zero. (closes #10938)\n"
    },
    {
      "commit": "13ed494bb5edc5a02d0ed0feabddb68920f88570",
      "tree": "7faa3b6d186079fceae55ad7d19d18384d896627",
      "parents": [
        "213e70e284b0975dd34525e94e59e26811097c72"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 19 13:59:25 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 19 13:59:25 2022 +0100"
      },
      "message": "patch 9.0.0228: crash when pattern looks below the last line\n\nProblem:    Crash when pattern looks below the last line.\nSolution:   Consider invalid lines to be empty. (closes #10938)\n"
    },
    {
      "commit": "7f9969c559b51446632ac7e8f76cde07e7d0078d",
      "tree": "77868549433487dbadb8833a1b6a63d522adaa72",
      "parents": [
        "b529cfbd04c02e31cfa88f2c8d88b5ff532d4f7d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jul 25 18:13:54 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jul 25 18:13:54 2022 +0100"
      },
      "message": "patch 9.0.0067: cannot show virtual text\n\nProblem:    Cannot show virtual text.\nSolution:   Initial changes for virtual text support, using text properties.\n"
    },
    {
      "commit": "509ce0383105d5b516ef2d489adb7c554d3c8f81",
      "tree": "94a50d253d6b88ec24322862827e75065b682216",
      "parents": [
        "d799daa660b8821943cbe1682f00da9e812dd48c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jun 20 11:23:01 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jun 20 11:23:01 2022 +0100"
      },
      "message": "patch 8.2.5137: cannot build without the +channel feature\n\nProblem:    Cannot build without the +channel feature. (Dominique Pellé)\nSolution:   Add #ifdef around ch_log() calls. (closes #10598)\n"
    },
    {
      "commit": "616592e0816d2d9f893fcd95e3e1e0fbc5893168",
      "tree": "f832a0c1dbe16fcbd944e4b735829279e75ea49d",
      "parents": [
        "5ea38d1e7fd597ffde13b292d43e12747f20e97f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jun 17 15:17:10 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jun 17 15:17:10 2022 +0100"
      },
      "message": "patch 8.2.5115: search timeout is overrun with some patterns\n\nProblem:    Search timeout is overrun with some patterns.\nSolution:   Check for timeout in more places.  Make the flag volatile and\n            atomic.  Use assert_inrange() to see what happened.\n"
    },
    {
      "commit": "6574577cacd393ab7591fc776ea060eebc939e55",
      "tree": "f583ca9957280e7086b8d14ef44127302829fd40",
      "parents": [
        "1d97db3d987c05af88c30ad20f537bcf3024f9c1"
      ],
      "author": {
        "name": "Paul Ollis",
        "email": "paul@cleversheep.org",
        "time": "Sun Jun 05 16:55:54 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jun 05 16:55:54 2022 +0100"
      },
      "message": "patch 8.2.5057: using gettimeofday() for timeout is very inefficient\n\nProblem:    Using gettimeofday() for timeout is very inefficient.\nSolution:   Set a platform dependent timer. (Paul Ollis, closes #10505)\n"
    },
    {
      "commit": "02e8d4e4ffcdd6ee919e19692d591da8e18a565d",
      "tree": "c8c1beb22eaee3ccfece6beb09c0620b20f5b80f",
      "parents": [
        "bf79a4e48d09a5ae08645592885d54230fed30b8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 27 15:35:28 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 27 15:35:28 2022 +0100"
      },
      "message": "patch 8.2.5028: syntax regexp matching can be slow\n\nProblem:    Syntax regexp matching can be slow.\nSolution:   Adjust the counters for checking the timeout to check about once\n            per msec. (closes #10487, closes #2712)\n"
    },
    {
      "commit": "360da40b47a84ee8586c3b5d062f8c64a2ac9cc6",
      "tree": "0be4a080f9ef8f262bf93da97dd512de6cfdea98",
      "parents": [
        "e2bd8600b873d2cd1f9d667c28cba8b1dba18839"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 18 15:04:02 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 18 15:04:02 2022 +0100"
      },
      "message": "patch 8.2.4978: no error if engine selection atom is not at the start\n\nProblem:    No error if engine selection atom is not at the start.\nSolution:   Give an error. (Christian Brabandt, closes #10439)\n"
    },
    {
      "commit": "72bb10df1fb3eb69bc91f5babfb8881ce098cba1",
      "tree": "e2f392f6e2c6567e6686027b70021ed6a862d723",
      "parents": [
        "0f68e6c07aaf62c034a242f183b93c1bb44e7f93"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Apr 05 14:00:32 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Apr 05 14:00:32 2022 +0100"
      },
      "message": "patch 8.2.4693: new regexp does not accept pattern \"\\%\u003e0v\"\n\nProblem:    new regexp does not accept pattern \"\\%\u003e0v\".\nSolution:   Do accept digit zero.\n"
    },
    {
      "commit": "91ff3d4f52a55a7c37a52aaad524cd9dd12efae4",
      "tree": "c07ec4757a25bbbd1357c7c85b8506eab9751006",
      "parents": [
        "e8a4c0d91f89544e4f94b7bd612b5fb780944c33"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 04 18:32:32 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 04 18:32:32 2022 +0100"
      },
      "message": "patch 8.2.4688: new regexp engine does not give an error for \"\\%v\"\n\nProblem:    New regexp engine does not give an error for \"\\%v\".\nSolution:   Check for a value argument. (issue #10079)\n"
    },
    {
      "commit": "b55986c52d4cd88a22d0b0b0e8a79547ba13e1d5",
      "tree": "dee7da61584ff2984379de135bad55711d22c09a",
      "parents": [
        "fd01280d01c2270a320d8c962d24140a8176a400"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 29 13:24:58 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 29 13:24:58 2022 +0100"
      },
      "message": "patch 8.2.4646: using buffer line after it has been freed\n\nProblem:    Using buffer line after it has been freed in old regexp engine.\nSolution:   After getting mark get the line again.\n"
    },
    {
      "commit": "6456fae9ba8e72c74b2c0c499eaf09974604ff30",
      "tree": "25484c863782a37837996f13bc0dc96d266892ec",
      "parents": [
        "1349bd712cf7d24dc65408c523dd7deb30224f80"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Feb 22 13:37:31 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Feb 22 13:37:31 2022 +0000"
      },
      "message": "patch 8.2.4440: crash with specific regexp pattern and string\n\nProblem:    Crash with specific regexp pattern and string.\nSolution:   Stop at the start of the string.\n"
    },
    {
      "commit": "424bcae1fb0f69e0aef5e0cf84fd771cf34a0fb7",
      "tree": "2841d6e3702a563627a400fa10a284b73a817436",
      "parents": [
        "eb6c2765959c91ddbb527f96f91ba5be199b8d41"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 31 14:59:41 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 31 14:59:41 2022 +0000"
      },
      "message": "patch 8.2.4273: the EBCDIC support is outdated\n\nProblem:    The EBCDIC support is outdated.\nSolution:   Remove the EBCDIC support.\n"
    },
    {
      "commit": "b2810f123cbf4b585f8bc5f0e594a6690d95729a",
      "tree": "a2b290edcfc5864afd940badf68b6bc0f8e6731c",
      "parents": [
        "782b43d89473dac00e3a8e02224a8330b88dbfef"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 08 21:38:52 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 08 21:38:52 2022 +0000"
      },
      "message": "patch 8.2.4046: some error messages not in the right place\n\nProblem:    Some error messages not in the right place.\nSolution:   Adjust the errors file.  Fix typo.\n"
    },
    {
      "commit": "677658ae49de31fe2e5b1fa6d93fdfab85a4362e",
      "tree": "f5f0bbdda081ce1dad3bcaf7f4e6cf3281774cac",
      "parents": [
        "8e7d9db32b53ca2b1cb7570d2042860bcd1e943f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 05 16:09:06 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 05 16:09:06 2022 +0000"
      },
      "message": "patch 8.2.4008: error messages are spread out\n\nProblem:    Error messages are spread out.\nSolution:   Move more error messages to errors.h.\n"
    },
    {
      "commit": "a6f7929e62c19a6a2418a016b4c59b83eb1887ac",
      "tree": "dff539628404695bd64e68602c8f7f62d9dd12f7",
      "parents": [
        "548911ee145cdd166f20e46aa720d1631e66f64e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jan 04 21:30:47 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jan 04 21:30:47 2022 +0000"
      },
      "message": "patch 8.2.4005: error messages are spread out\n\nProblem:    Error messages are spread out.\nSolution:   Move more error messages to errors.h.\n"
    },
    {
      "commit": "eaaac014a01ce37c1f86dbda054c01a5c6f034e7",
      "tree": "b775ac0b4332e8f73bc763ed1414f73639c187d6",
      "parents": [
        "8bfa0eb863357c1013024233ebb2e95a0a848002"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 02 17:00:40 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 02 17:00:40 2022 +0000"
      },
      "message": "patch 8.2.3983: error messages are spread out\n\nProblem:    Error messages are spread out.\nSolution:   Move more error messages to errors.h.\n"
    },
    {
      "commit": "74409f62790a93daf0965c71da01ff76aa0fa5a5",
      "tree": "ece55c806dc6fe451d24af66008ae1444d81d73d",
      "parents": [
        "56200eed62e59ad831f6564dcafe346e6f97ac20"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 01 15:58:22 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 01 15:58:22 2022 +0000"
      },
      "message": "patch 8.2.3970: error messages are spread out\n\nProblem:    Error messages are spread out.\nSolution:   Move more errors to errors.h.\n"
    },
    {
      "commit": "d0819d11ecdf3bca4b0800ef905091b5e175b6f4",
      "tree": "060a1ac11504c192baa6915193a9b85620c4ef44",
      "parents": [
        "436b5adc9770a2568209dd5ab1f98bd1afc91898"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 31 23:15:53 2021 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 31 23:15:53 2021 +0000"
      },
      "message": "patch 8.2.3962: build fails for missing error message\n\nProblem:    Build fails for missing error message.\nSolution:   Add changes in missed file.\n"
    },
    {
      "commit": "12f3c1b77fb39dc338304d5484cdbc99da27389a",
      "tree": "547976b1abc154007b9e8bfed81a69b7b457706e",
      "parents": [
        "e5710a02cb78c2a0a868ea55740835c78ddecbb4"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Dec 05 21:46:34 2021 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Dec 05 21:46:34 2021 +0000"
      },
      "message": "patch 8.2.3749: error messages are everywhere\n\nProblem:    Error messages are everywhere.\nSolution:   Move more error messages to errors.h and adjust the names.\n"
    },
    {
      "commit": "d8e44476d84b5f0cc8c4de080a47a3a9af547028",
      "tree": "c45296f474fb015dc94cedc81238377efc8e55b0",
      "parents": [
        "05bd9785fd0fd0102ab64554307bff0ec0ae34c1"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 21 22:20:33 2021 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 21 22:20:33 2021 +0200"
      },
      "message": "patch 8.2.3197: error messages are spread out\n\nProblem:    Error messages are spread out.\nSolution:   Move a few more error messages to errors.h.\n"
    },
    {
      "commit": "e29a27f6f8eef8f00d3c2d4cd9811d81cf3026b3",
      "tree": "eb8bd787e936db02a1617fb033aed2e224b3bbd3",
      "parents": [
        "9fa5dabedc4ed5af85773413e91c2fdbe4cb9f0a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 20 21:07:36 2021 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 20 21:07:36 2021 +0200"
      },
      "message": "patch 8.2.3190: error messages are spread out\n\nProblem:    Error messages are spread out.\nSolution:   Move error messages to errors.h and give them a clear name.\n"
    },
    {
      "commit": "04db26b36000a4677b95403ec94bd11f6cc73975",
      "tree": "409bf4069a07c8276f943b97e8bf93b61c60b01b",
      "parents": [
        "f6d877975ba93fc9b4bee2c5d2aff88dbf9bea59"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jul 05 20:15:23 2021 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jul 05 20:15:23 2021 +0200"
      },
      "message": "patch 8.2.3110: a pattern that matches the cursor position is complicated\n\nProblem:    A pattern that matches the cursor position is bit complicated.\nSolution:   Use a dot to indicate the cursor line and column. (Christian\n            Brabandt, closes #8497, closes #8179)\n"
    },
    {
      "commit": "872bee557e5f8ab0e4a523a6a845868a2801b17e",
      "tree": "d98b78f7384d6ba1a4861ea8b4911a8a9b2417a9",
      "parents": [
        "1e469c72ee2914fcffbcd49258036acdabd6f500"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon May 24 22:56:15 2021 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon May 24 22:56:15 2021 +0200"
      },
      "message": "patch 8.2.2885: searching for \\%\u0027\u003e does not match linewise end of line\n\nProblem:    searching for \\%\u0027\u003e does not match linewise end of line. (Tim Chase)\nSolution:   Match end of line if column is MAXCOL. (closes #8238)\n"
    },
    {
      "commit": "df36514a6455342e178af693553ef9df9fcf8c83",
      "tree": "4acc1d74a3bd59c2b226817d12b94daa9752b54d",
      "parents": [
        "97a6c6a1fb6043fd6520fbaaafc6970334186167"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon May 03 20:01:45 2021 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon May 03 20:01:45 2021 +0200"
      },
      "message": "patch 8.2.2829: some comments are not correct or clear\n\nProblem:    Some comments are not correct or clear.\nSolution:   Adjust the comments.  Add test for cursor position.\n"
    },
    {
      "commit": "0b94e297afd072c51bf2eed12c7ffe3978d93399",
      "tree": "dbdfbf16f6a676b9f5c7d9c9fdce99f001a1b98b",
      "parents": [
        "886e5e737d0b2eea755c415a86997ca3b7fe5349"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 05 13:59:53 2021 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 05 13:59:53 2021 +0200"
      },
      "message": "patch 8.2.2716: the equivalent class regexp is missing some characters\n\nProblem:    The equivalent class regexp is missing some characters.\nSolution:   Update the list of equivalent characters. (Dominique Pellé,\n            closes #8029)\n"
    },
    {
      "commit": "a3d10a508c404a32485adc86284725e0bdc5b602",
      "tree": "0b12449a963214d2826c741968e16aba20a565ec",
      "parents": [
        "6f17a3f0237302b82cc31fb889d9094b51856948"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Dec 21 18:24:00 2020 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Dec 21 18:24:00 2020 +0100"
      },
      "message": "patch 8.2.2181: valgrind warnings for using uninitialized value\n\nProblem:    Valgrind warnings for using uninitialized value.\nSolution:   Do not use \"start\" or \"end\" unless there is a match.\n"
    },
    {
      "commit": "a7a691cc142439e266f4ceb1f208bb952b57aa71",
      "tree": "ebe600566e203253e7f6f2502c3032c2608c32ec",
      "parents": [
        "730677a0dafe6f2e72888ef59f74f66f2d0a573e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Dec 09 16:36:04 2020 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Dec 09 16:36:04 2020 +0100"
      },
      "message": "patch 8.2.2121: internal error when using \\ze before \\zs in a pattern\n\nProblem:    Internal error when using \\ze before \\zs in a pattern.\nSolution:   Check the end is never before the start. (closes #7442)\n"
    },
    {
      "commit": "e83cca291112ea66f49079975e102ee36a47a24e",
      "tree": "313fb36ab531a6f2b5c981f920c09aa31212165c",
      "parents": [
        "44d6652d561d628d12e3ff7f6636ea7d1f805ced"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Sep 07 18:53:21 2020 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Sep 07 18:53:21 2020 +0200"
      },
      "message": "patch 8.2.1633: some error messages are internal but do not use iemsg()\n\nProblem:    Some error messages are internal but do not use iemsg().\nSolution:   Use iemsg(). (Dominique Pellé, closes #6894)\n"
    },
    {
      "commit": "71ccd03ee8a43b20000214a9c99dcc90f039edca",
      "tree": "b5e89de8afbba2a8981d68b578514df046cb4aad",
      "parents": [
        "722e505d1a55dfde5ab62241d10da91d2e10c3c1"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jun 12 22:59:11 2020 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jun 12 22:59:11 2020 +0200"
      },
      "message": "patch 8.2.0967: unnecessary type casts for vim_strnsave()\n\nProblem:    Unnecessary type casts for vim_strnsave().\nSolution:   Remove the type casts.\n"
    },
    {
      "commit": "a80faa8930ed5a554beeb2727762538873135e83",
      "tree": "e797605e0c781214543fcba103cffede7af611cd",
      "parents": [
        "82de464f763d6e6d89229be03ce7c6d02fd5fb59"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 12 19:37:17 2020 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 12 19:37:17 2020 +0200"
      },
      "message": "patch 8.2.0559: clearing a struct is verbose\n\nProblem:    Clearing a struct is verbose.\nSolution:   Define and use CLEAR_FIELD() and CLEAR_POINTER().\n"
    },
    {
      "commit": "f4140488c72cad4dbf5449dba099cfa7de7bbb22",
      "tree": "ef69c7720d31e0871cd01c41d447a5440e9d8e9c",
      "parents": [
        "ebdf3c964a901fc00c9009689f7cfda478342c51"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 15 23:06:45 2020 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 15 23:06:45 2020 +0100"
      },
      "message": "patch 8.2.0260: several lines of code are duplicated\n\nProblem:    Several lines of code are duplicated.\nSolution:   Move duplicated code to a function. (Yegappan Lakshmanan,\n            closes #5330)\n"
    },
    {
      "commit": "7c77b3496710f1be3232cfdc7f6812347fbd914a",
      "tree": "01d299dccb0ad0645eb1a01fa07d1c49a01136cf",
      "parents": [
        "7c2a2f869b0f5a3e36f5e7d83923a264426e434c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Dec 22 19:40:40 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Dec 22 19:40:40 2019 +0100"
      },
      "message": "patch 8.2.0033: crash when make_extmatch() runs out of memory\n\nProblem:    Crash when make_extmatch() runs out of memory.\nSolution:   Check for NULL. (Dominique Pelle, closs #5392)\n"
    },
    {
      "commit": "9490b9a61cf1f1f3fa9758663a33124ea9f71c87",
      "tree": "39d917a9ab96f20e4652e7703180c464afddbbeb",
      "parents": [
        "3d2a3cbce873af861031a01e02694dcfae0c4582"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Sep 08 17:20:12 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Sep 08 17:20:12 2019 +0200"
      },
      "message": "patch 8.1.2010: new file uses old style comments\n\nProblem:    New file uses old style comments.\nSolution:   Change to new style comments. (Yegappan Lakshmanan, closes #4910)\n"
    },
    {
      "commit": "6d7d7cf750bca5d641e464f6a3af5ee5b99a5ac8",
      "tree": "1b35d750cc6c6613afc5af3ed18c907c186634a2",
      "parents": [
        "f6ed61e1489e40eada55a4f1782e1ed82bcad7d9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Sep 07 23:16:33 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Sep 07 23:16:33 2019 +0200"
      },
      "message": "patch 8.1.2005: the regexp.c file is too big\n\nProblem:    The regexp.c file is too big.\nSolution:   Move the backtracking engine to a separate file. (Yegappan\n            Lakshmanan, closes #4905)\n"
    }
  ]
}
