)]}'
{
  "log": [
    {
      "commit": "9cb865e95bba333fa7b47c39c2729c125b911e36",
      "tree": "8198980af22ec50d7a84262c3b583da809900e01",
      "parents": [
        "adb703e1b98b71f2908ecc7b7d4180f586caafb8"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sun Mar 23 16:42:16 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Mar 23 16:42:16 2025 +0100"
      },
      "message": "patch 9.1.1232: Vim script is missing the tuple data type\n\nProblem:  Vim script is missing the tuple data type\nSolution: Add support for the tuple data type\n          (Yegappan Lakshmanan)\n\ncloses: #16776\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e9ae35f265f4eb71f1daba319f430ca3faeaf639",
      "tree": "cdd4b1e0b91ba10ada24d4bb3358341a5ab06eb9",
      "parents": [
        "3d75ec7401850e8a80ae7ab5ad1b84f47bc32095"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Feb 27 19:12:00 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Feb 27 19:12:00 2025 +0100"
      },
      "message": "patch 9.1.1154: Vim9: not able to use autoload class accross scripts\n\nProblem:  Vim9: not able to use autoload class accross scripts\nSolution: make it work, re-enable the test (Yegappan Lakshmanan)\n\nfixes: #15031\ncloses: #16748\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b32800f7c51c866dc0e87244eb4902540982309d",
      "tree": "f8dd4fa5897d5b91dd151e8616eb6bc803986584",
      "parents": [
        "3219da514c1f90b0883158d044512641407eacd6"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Sat Feb 01 15:25:34 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Feb 01 15:25:34 2025 +0100"
      },
      "message": "patch 9.1.1063: too many strlen() calls in userfunc.c\n\nProblem:  too many strlen() calls in userfunc.c\nSolution: refactor userfunc.c and remove calls to strlen(),\n          drop set_ufunc_name() and roll it into alloc_ufunc(),\n          check for out-of-memory condition in trans_function_name_ext()\n          (John Marriott)\n\ncloses: #16537\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6655bef33047b826e0ccb8c686f3f57e47161b1c",
      "tree": "27521537a5b9ee1e27529c924df7d26014e5f024",
      "parents": [
        "cf1f55548d1c8782c5bd11f82354d98fb30cde42"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Mon Jan 06 18:32:13 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Jan 06 18:32:13 2025 +0100"
      },
      "message": "patch 9.1.0991: v:stacktrace has wrong type in Vim9 script\n\nProblem:  v:stacktrace has wrong type in Vim9 script.\nSolution: Change the type to t_list_dict_any.  Fix grammar in docs.\n          (zeertzjq)\n\ncloses: #16390\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "663d18d6102f40d14e36096ec590445e61026ed6",
      "tree": "f8d8b9a63d812e6dc54b0fdcbfed404ebf774916",
      "parents": [
        "fd771613b3e59923b1a82a5ed9036c82899d133b"
      ],
      "author": {
        "name": "ichizok",
        "email": "gclient.gaap@gmail.com",
        "time": "Thu Jan 02 18:06:00 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jan 02 18:06:00 2025 +0100"
      },
      "message": "patch 9.1.0984: exception handling can be improved\n\nProblem:  exception handling can be improved\nSolution: add v:stacktrace and getstacktrace()\n\ncloses: #16360\n\nCo-authored-by: Naruhiko Nishino \u003cnaru123456789@gmail.com\u003e\nSigned-off-by: ichizok \u003cgclient.gaap@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a13f3a4f5de9c150f70298850e34747838904995",
      "tree": "a6ed380325af51e922e3a57d48b902fbd625716b",
      "parents": [
        "0b8176dff2dada4be1c8d3ca5e1dd1a7a536b4ca"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Nov 02 18:40:10 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Nov 02 18:43:42 2024 +0100"
      },
      "message": "patch 9.1.0831: \u0027findexpr\u0027 can\u0027t be used as lambad or Funcref\n\nProblem:  \u0027findexpr\u0027 can\u0027t be used for lambads\n          (Justin Keyes)\nSolution: Replace the findexpr option with the findfunc option\n          (Yegappan Lakshmanan)\n\nrelated: #15905\ncloses: #15976\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "20e045f78148c0ef0143c33ffe686fee72d29376",
      "tree": "6429282d46880d3a57b574ed8f3370c9ce62cade",
      "parents": [
        "baab7c08653a4e1b7227d6426d96cab030ccf9e8"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Mon Oct 28 22:05:26 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Oct 28 22:05:26 2024 +0100"
      },
      "message": "patch 9.1.0821: \u0027findexpr\u0027 completion doesn\u0027t set v:fname to cmdline argument\n\nProblem:  \u0027findexpr\u0027 completion doesn\u0027t set v:fname to cmdline argument.\nSolution: Set v:fname to the cmdline argument as-is (zeertzjq).\n\ncloses: #15934\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6b97d7ad197de0fb38648c91552c4374e39fdf98",
      "tree": "faac7d8197db2529ef034add3a4d89bd5c34e9be",
      "parents": [
        "39eff4cdc055a0f0db0d32fcf7a74fe30ea54f25"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Thu Aug 08 21:05:57 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Aug 08 21:05:57 2024 +0200"
      },
      "message": "patch 9.1.0665: Locked variable can be changed in a :for loop\n\nProblem:  Locked variable can be changed in a :for loop.\nSolution: Always do a full permission check on the first loop iteration\n          where ASSIGN_DECL is not set (zeertzjq).\n\nrelated: #12470\nfixes: #15450\ncloses: #15454\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "3f821d6de2586d921fb23e2facb4764ef9eb3294",
      "tree": "c576910f877e4e43093a534172c1a4e7bdf329c4",
      "parents": [
        "04e8943556fbe2e53ce611f753141442bc8c655a"
      ],
      "author": {
        "name": "Ernie Rael",
        "email": "errael@raelity.com",
        "time": "Wed Apr 24 20:07:50 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 24 20:07:50 2024 +0200"
      },
      "message": "patch 9.1.0369: Vim9: problem when importing autoloaded scripts\n\nProblem:  Vim9: problem when importing autoloaded scripts\nSolution: In `:def` handle storing to vim9 autoload export\n          (Ernie Rael)\n\nProblem occurs when `import autoload ./.../autoload/...`. The autoload\nin the specified path causes the use of an autoload_prefix which combines\nwith the `import autoload` to create trouble.\n\nIn `generate_store_var()` `case dest_script` use ISN_STOREEXPORT,\nwhen needed, instead of ISN_STORES. When executing ISN_STOREEXPORT,\ncheck for autoload_prefix.\n\nfixes: #14606\ncloses: #14615\n\nSigned-off-by: Ernie Rael \u003cerrael@raelity.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\n"
    },
    {
      "commit": "84f6dc7ed29d52b1034bfb27bdcd3154a01ee2b1",
      "tree": "4f67c1ed39bcb9db0a66ab9ea12d8ba90cc3a3c7",
      "parents": [
        "158673680f5ad87591d05dfa7f6a3c0b0eb7061c"
      ],
      "author": {
        "name": "Ernie Rael",
        "email": "errael@raelity.com",
        "time": "Sun Apr 21 14:45:48 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 21 14:45:48 2024 +0200"
      },
      "message": "patch 9.1.0360: Vim9: does not handle autoloaded variables well\n\nProblem:  Vim9: does not handle autoloaded variables well\nSolution: Better handle script-level exported variable references from\n          autoload files (Ernie Rael).\n\nfixes: #14591\ncloses: #14607\n\nSigned-off-by: Ernie Rael \u003cerrael@raelity.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "bce51d9005dd1c5bc002acbac2e12b649abcb013",
      "tree": "046a2767183c0fd9eff9249fd44ed676db906de3",
      "parents": [
        "a59e031aa0bdc5cc3d1f4ed719126bf1a1b858ce"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Apr 15 19:19:52 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 15 19:19:52 2024 +0200"
      },
      "message": "patch 9.1.0335: String interpolation fails for List type\n\nProblem:  String interpolation fails for List type\nSolution: use implicit string(list) for string interpolation and :put \u003d\n          (Yegappan Lakshmanan)\n\nrelated: #14529\ncloses: #14556\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1f5175d9af3d3f37e19f23e0e6f84caec47390f2",
      "tree": "2f1e6a3bdb9378b763d9990a6375fe1678cd8eac",
      "parents": [
        "e74cad3321ce1dcefc1fc64f617511275b6cd930"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sat Apr 13 17:52:26 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 13 17:52:26 2024 +0200"
      },
      "message": "patch 9.1.0313: Crash when using heredoc with comment in command block\n\nProblem:  Crash when using heredoc with comment in command block.\nSolution: Handle a newline more like the end of the line, fix coverity\n          warning (zeertzjq).\n\ncloses: #14535\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e74cad3321ce1dcefc1fc64f617511275b6cd930",
      "tree": "b29c4a7843c748750a448800846bbff1b1dfde19",
      "parents": [
        "a1dcd76ce791b5b8bd093765a99b71aa163300a5"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Fri Apr 12 18:48:35 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 12 18:53:08 2024 +0200"
      },
      "message": "patch 9.1.0312: heredocs are not supported for :commands\n\nProblem:  heredocs are not supported for :commands\n          (@balki)\nSolution: Add heredoc support\n          (Yegappan Lakshmanan)\n\nfixes: #14491\ncloses: #14528\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "3164cf8f12f14b725b918e3170bb0a9085af8298",
      "tree": "3bd541655187532df3adead11c8f2afb3a733b8f",
      "parents": [
        "8ede7a069419e0e01368c65a2d0c79d6332aa6cd"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Mar 28 10:36:42 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Mar 28 10:38:28 2024 +0100"
      },
      "message": "patch 9.1.0219: Vim9: No enum support\n\nProblem:  No enum support\nSolution: Implement enums for Vim9 script\n          (Yegappan Lakshmanan)\n\ncloses: #14224\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "35b867b685cedbcbba9d44695077ecc9a6995f4c",
      "tree": "826a2fc0299ccc02ff307d04ae98c54fdc650a6b",
      "parents": [
        "b2ec0da080fb24f12a8d6f54bd7318a078ca4e6c"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Mar 09 15:44:19 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Mar 09 15:44:19 2024 +0100"
      },
      "message": "patch 9.1.0160: Vim9: Add support for using a class type of itself in an object method\n\nProblem:  Add support for using a class type of itself in an object\n          method (thinca)\nSolution: Vim9: Add support for using a class type of itself in an\n          object method (Yegappan Lakshmanan)\n\nfixes: #12369\ncloses: #14165\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b47fbb40837512cdd2d8c25eaf9952154836b99d",
      "tree": "061117c7cffb729024887ab621cdaf1de55b4795",
      "parents": [
        "bd1232a1faf56b614a1e74c4ce51bc6e0650ae00"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Mon Feb 12 22:50:26 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Feb 12 22:50:26 2024 +0100"
      },
      "message": "patch 9.1.0102: settabvar() may change the last accessed tabpage\n\nProblem:  settabvar() may change the last accessed tabpage.\nSolution: Save and restore lastused_tabpage.\n          (zeertzjq)\n\ncloses: #14017\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1af35631f85d2fcdc83c5d457af8273697f5146a",
      "tree": "10d2dc574d3ff18984f9d00c6fe339260a6d4fc6",
      "parents": [
        "ebfd856cfdf6ea0b16c8d115000961c998ce97da"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Tue Feb 06 11:03:36 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Feb 06 11:03:36 2024 +0100"
      },
      "message": "patch 9.1.0080: unexpected error for modifying final list using +\u003d\n\nProblem:  unexpected error for modifying final list using +\u003d operator\n          (Ernie Rael)\nSolution: Allow List value modification of a final variable using +\u003d\n          operator\n          (Yegappan Lakshmanan)\n\nfixes: #13745\nfixes: #13959\ncloses: #13962\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ac4cffc6d9d307778d8a2945adab70244470bbb8",
      "tree": "391cdcd7b31b65dc5b66d7a9c76fcba454f63112",
      "parents": [
        "96958366ad6159efe708b694055320ed19357e61"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Jan 16 17:22:38 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Jan 16 17:22:38 2024 +0100"
      },
      "message": "patch 9.1.0034: Window scrolls unexpectedly when \u0027scrollbind\u0027 is set\n\nProblem:  Window may unexpectedly scroll when \u0027scrollbind\u0027 is set\n          and setting a buffer-local option using setbufvar()\n          (Boris Staletic)\nSolution: Save and restore the windows topline before opening the\n          popup window.\n\nfixes: #13863\ncloses: #13869\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "184f71cc6868a240dc872ed2852542bbc1d43e28",
      "tree": "314948c5cf288feb24305b329d58cbd750157560",
      "parents": [
        "4d8cb683b1543ec02563cdd2d068ce5f82f90539"
      ],
      "author": {
        "name": "Keith Thompson",
        "email": "Keith.S.Thompson@gmail.com",
        "time": "Thu Jan 04 21:19:04 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jan 04 21:19:04 2024 +0100"
      },
      "message": "patch 9.1.0006: is*() and to*() function may be unsafe\n\nProblem:  is*() and to*() function may be unsafe\nSolution: Add SAFE_* macros and start using those instead\n          (Keith Thompson)\n\nUse SAFE_() macros for is*() and to*() functions\n\nThe standard is*() and to*() functions declared in \u003cctype.h\u003e have\nundefined behavior for negative arguments other than EOF.  If plain char\nis signed, passing an unchecked value from argv for from user input\nto one of these functions has undefined behavior.\n\nSolution: Add SAFE_*() macros that cast the argument to unsigned char.\n\nMost implementations behave sanely for negative arguments, and most\ncharacter values in practice are non-negative, but it\u0027s still best\nto avoid undefined behavior.\n\nThe change from #13347 has been omitted, as this has already been\nseparately fixed in commit ac709e2fc0db6d31abb7da96f743c40956b60c3a\n(v9.0.2054)\n\nfixes: #13332\ncloses: #13347\n\nSigned-off-by: Keith Thompson \u003cKeith.S.Thompson@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e75fde6b043371a188660c3423e48b1b7fd7e14b",
      "tree": "39a7e955cf230c56215182d1cc59c355b61c3d4f",
      "parents": [
        "18ab6c3392ef83abf078042e233d085fe80b6c06"
      ],
      "author": {
        "name": "Ernie Rael",
        "email": "errael@raelity.com",
        "time": "Thu Dec 21 17:18:54 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Dec 21 17:18:54 2023 +0100"
      },
      "message": "patch 9.0.2184: Vim9: inconsistent :type/:class messages\n\nProblem:  Vim9: inconsistent :type/:class messages\nSolution: Update the Messages (Ernie Rael)\n\ncloses: #13706\n\nSigned-off-by: Ernie Rael \u003cerrael@raelity.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6fdb6280821a822768df5689a5d727e37d38306c",
      "tree": "df4499466c758d7c18f5390567f72b52f1da525c",
      "parents": [
        "63210c214afa6589b6132bd060908a8711f4567f"
      ],
      "author": {
        "name": "Zoltan Arpadffy",
        "email": "zoltan.arpadffy@gmail.com",
        "time": "Tue Dec 19 20:53:07 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Dec 19 20:53:07 2023 +0100"
      },
      "message": "patch 9.0.2180: POSIX function name in exarg causes issues\n\nProblem:  POSIX function name in exarg struct causes issues\n          on OpenVMS\nSolution: Rename getline member in exarg struct to ea_getline,\n          remove isinf() workaround for VMS\n\nThere are compilers that do not treat well POSIX functions - like\ngetline - usage in the structs.\n\nOlder VMS compilers could digest this... but the newer OpenVMS compilers\n( like VSI C x86-64 X7.4-843 (GEM 50XB9) ) cannot deal with these\nstructs. This could be limited to getline() that is defined via\ngetdelim() and might not affect all POSIX functions in general - but\navoiding POSIX function names usage in the structs is a \"safe side\"\npractice without compromising the functionality or the code readability.\n\nThe previous OpenVMS X86 port used a workaround limiting the compiler\ncapabilities using __CRTL_VER_OVERRIDE\u003d80400000\nIn order to make the OpenVMS port future proof, this pull request\nproposes a possible solution.\n\ncloses: #13704\n\nSigned-off-by: Zoltan Arpadffy \u003czoltan.arpadffy@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b5011089860b24f60db1a74f91c0adf8897c4401",
      "tree": "97699de3c06a46237ca441d8f084354b161254bb",
      "parents": [
        "ec497574fc06f97a5239fb08a7a76107a51383c2"
      ],
      "author": {
        "name": "Ernie Rael",
        "email": "errael@raelity.com",
        "time": "Mon Dec 18 08:34:41 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Dec 18 08:34:41 2023 +0100"
      },
      "message": "patch 9.0.2174: Vim9: segfault when assigning to type\n\nProblem:  Vim9: segfault when assigning to type\nSolution: do not clear typeval, add missing patch number\n\ncloses: #13714\ncloses: #13715\n\nSigned-off-by: Ernie Rael \u003cerrael@raelity.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9ed53752df1020a6881ac68d1bde2852c9a680aa",
      "tree": "a99975a155438cacfc942a073910e1e038ed8f5a",
      "parents": [
        "fa920da283f6651083b40d0aa28a9eacd5116593"
      ],
      "author": {
        "name": "Ernie Rael",
        "email": "errael@raelity.com",
        "time": "Mon Dec 11 17:40:46 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Dec 11 17:40:46 2023 +0100"
      },
      "message": "patch 9.0.2156: Vim9: can use typealias in assignment\n\nProblem:  Vim9: can use typealias in an assignment\nSolution: Generate errors when class/typealias involved in the rhs of an\n          assignment\n\ncloses: #13637\n\nSigned-off-by: Ernie Rael \u003cerrael@raelity.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nGenerate errors when class/typealias involved in assignment.\n"
    },
    {
      "commit": "feaccd239573a6265d39d3a917862ee40742eab4",
      "tree": "3ccb80ce860395236ba3d4a44b4257af99e4b21a",
      "parents": [
        "87ca5e86fa0ef305f3d39cc4261b622f21417f7f"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Oct 28 15:53:55 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Oct 28 15:53:55 2023 +0200"
      },
      "message": "patch 9.0.2078: several problems with type aliases\n\nProblem:  several problems with type aliases\nSolution: Check for more error conditions, add tests,\n          fix issues\n\nCheck for more error conditions and add additional tests\n\nfixes  #13434\nfixes  #13437\nfixes  #13438\ncloses #13441\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ec3cebbd2b6b7583d2f683f5e66345163ec122aa",
      "tree": "66f0c9b69e88fa4a0d35ae738f687b5679bc56e0",
      "parents": [
        "4bca4897a12dfb91b3b27e3083fd5f370bd857d1"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Fri Oct 27 19:35:26 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Oct 27 19:35:26 2023 +0200"
      },
      "message": "patch 9.0.2076: Vim9: No support for type aliases\n\nProblem:  Vim9: No support for type aliases\nSolution: Implement :type command\n\nA type definition is giving a name to a type specification.  This also known\ntype alias.\n\n\t:type ListOfStrings \u003d list\u003cstring\u003e\n\nThe type alias can be used wherever a built-in type can be used.  The type\nalias name must start with an upper case character.\n\ncloses: #13407\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\n"
    },
    {
      "commit": "b5a0719cb7abf51b0540df527cb9738a3ccf0d37",
      "tree": "5fa50a382935836aaede388f18fa751231d67d8d",
      "parents": [
        "b6d01f131c6ad44451b63ff437fa04169173f1c5"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Oct 05 20:14:43 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Oct 05 20:16:06 2023 +0200"
      },
      "message": "patch 9.0.1986: Vim9: accepting type-annotations\n\nProblem:  Vim9: accepting type-annotations\nSolution: Reject type annotations outside of declarations.\n\ncloses: #13267\ncloses: #13283\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\n"
    },
    {
      "commit": "64885645e76b301a6c34fe762c4e29c7a0f63881",
      "tree": "2fe2d6325cbbdc1812da80226784060485afd939",
      "parents": [
        "0583491277dea9d14e000051c26405b90d839072"
      ],
      "author": {
        "name": "Ernie Rael",
        "email": "errael@raelity.com",
        "time": "Wed Oct 04 20:16:22 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Oct 04 20:16:22 2023 +0200"
      },
      "message": "patch 9.0.1982: vim9: clean up from v9.0.1955\n\nProblem:  vim9: clean up from v9.0.1955\nSolution: Fix a few remaining issues, improve error message\n\n- Use `cl_exec`, the executing class, to check permissions in `get_lval()`.\n- Handle lockvar of script variable from class.\n- Add \u0027in class \"Xxx\"\u0027 to e_cannot_access_private_variable_str.\n\ncloses: #13222\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Ernie Rael \u003cerrael@raelity.com\u003e\n"
    },
    {
      "commit": "ee865f37acab6cac2cee6a171d60e1b365f852b0",
      "tree": "37522d42aa745a1b355a71efc979651e7500f9b2",
      "parents": [
        "112431f21762bdcb3ee4ce2d7d8f91da07f3bf71"
      ],
      "author": {
        "name": "Ernie Rael",
        "email": "errael@raelity.com",
        "time": "Fri Sep 29 19:53:55 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Sep 29 19:53:55 2023 +0200"
      },
      "message": "patch 9.0.1955: Vim9: lockvar issues with objects/classes\n\nProblem:  Vim9: lockvar issues with objects/classes\nSolution: fix `get_lhs()` object/class access and avoid `SEGV`,\n          make error messages more accurate.\n\n- `get_lval()` detects/returns object/class access\n- `compile_lock_unlock()` generate code for bare static and obj_arg access\n- `do_lock_var()` check lval for `ll_object`/`ll_class` and fail if so.\n\nDetails:\n- Add `ll_object`/`ll_class`/`ll_oi` to `lval_T`.\n- Add `lockunlock_T` to `isn_T` for `is_arg` to specify handling of `lval_root` in `get_lval()`.\n- In `get_lval()`, fill in `ll_object`/`ll_class`/`ll_oi` as needed; when no `[idx] or .key`, check lval_root on the way out.\n- In `do_lock_var()` check for `ll_object`/`ll_class`; also bullet proof ll_dict case\n  and give `Dictionay required` if problem. (not needed to avoid lockvar crash anymore)\n- In `compile_lock_unlock()` compile for the class variable and func arg cases.\n\ncloses: #13174\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Ernie Rael \u003cerrael@raelity.com\u003e\n"
    },
    {
      "commit": "edcba96c0088210927558b0e2583f3b689f457c4",
      "tree": "615328c8c06bfd48a79098e7045c3998856b2d7f",
      "parents": [
        "7398f367d5125eedfb4058c63a5d167fe8601e3d"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sun Sep 24 23:13:51 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Sep 24 23:13:51 2023 +0200"
      },
      "message": "patch 9.0.1933: Can change the type of a v: variable using if_lua\n\nProblem:  Can change the type of a v: variable using if_lua.\nSolution: Add additional handling of v: variables like :let.\n\ncloses: #13161\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\n"
    },
    {
      "commit": "c13b3d1350b60b94fe87f0761ea31c0e7fb6ebf3",
      "tree": "1f412e31f87c23aa12978d1d03d01e40495567d7",
      "parents": [
        "20cd8699acf6dc1071ee1bf0686bccba7df2c57c"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Sun Aug 20 21:18:38 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Aug 20 21:18:38 2023 +0200"
      },
      "message": "patch 9.0.1776: No support for stable Python 3 ABI\n\nProblem:  No support for stable Python 3 ABI\nSolution: Support Python 3 stable ABI\n\nCommits:\n1) Support Python 3 stable ABI to allow mixed version interoperatbility\n\nVim currently supports embedding Python for use with plugins, and the\n\"dynamic\" linking option allows the user to specify a locally installed\nversion of Python by setting `pythonthreedll`. However, one caveat is\nthat the Python 3 libs are not binary compatible across minor versions,\nand mixing versions can potentially be dangerous (e.g. let\u0027s say Vim was\nlinked against the Python 3.10 SDK, but the user sets `pythonthreedll`\nto a 3.11 lib). Usually, nothing bad happens, but in theory this could\nlead to crashes, memory corruption, and other unpredictable behaviors.\nIt\u0027s also difficult for the user to tell something is wrong because Vim\nhas no way of reporting what Python 3 version Vim was linked with.\n\nFor Vim installed via a package manager, this usually isn\u0027t an issue\nbecause all the dependencies would already be figured out. For prebuilt\nVim binaries like MacVim (my motivation for working on this), AppImage,\nand Win32 installer this could potentially be an issue as usually a\nsingle binary is distributed. This is more tricky when a new Python\nversion is released, as there\u0027s a chicken-and-egg issue with deciding\nwhat Python version to build against and hard to keep in sync when a new\nPython version just drops and we have a mix of users of different Python\nversions, and a user just blindly upgrading to a new Python could lead to\nbad interactions with Vim.\n\nPython 3 does have a solution for this problem: stable ABI / limited API\n(see https://docs.python.org/3/c-api/stable.html). The C SDK limits the\nAPI to a set of functions that are promised to be stable across\nversions. This pull request adds an ifdef config that allows us to turn\nit on when building Vim. Vim binaries built with this option should be\nsafe to freely link with any Python 3 libraies without having the\nconstraint of having to use the same minor version.\n\nNote: Python 2 has no such concept and this doesn\u0027t change how Python 2\nintegration works (not that there is going to be a new version of Python\n2 that would cause compatibility issues in the future anyway).\n\n---\n\nTechnical details:\n\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe stable ABI can be accessed when we compile with the Python 3 limited\nAPI (by defining `Py_LIMITED_API`). The Python 3 code (in `if_python3.c`\nand `if_py_both.h`) would now handle this and switch to limited API\nmode. Without it set, Vim will still use the full API as before so this\nis an opt-in change.\n\nThe main difference is that `PyType_Object` is now an opaque struct that\nwe can\u0027t directly create \"static types\" out of, and we have to create\ntype objects as \"heap types\" instead. This is because the struct is not\nstable and changes from version to version (e.g. 3.8 added a\n`tp_vectorcall` field to it). I had to change all the types to be\nallocated on the heap instead with just a pointer to them.\n\nOther functions are also simply missing in limited API, or they are\nintroduced too late (e.g. `PyUnicode_AsUTF8AndSize` in 3.10) to it that\nwe need some other ways to do the same thing, so I had to abstract a few\nthings into macros, and sometimes re-implement functions like\n`PyObject_NEW`.\n\nOne caveat is that in limited API, `OutputType` (used for replacing\n`sys.stdout`) no longer inherits from `PyStdPrinter_Type` which I don\u0027t\nthink has any real issue other than minor differences in how they\nconvert to a string and missing a couple functions like `mode()` and\n`fileno()`.\n\nAlso fixed an existing bug where `tp_basicsize` was set incorrectly for\n`BufferObject`, `TabListObject, `WinListObject`.\n\nTechnically, there could be a small performance drop, there is a little\nmore indirection with accessing type objects, and some APIs like\n`PyUnicode_AsUTF8AndSize` are missing, but in practice I didn\u0027t see any\ndifference, and any well-written Python plugin should try to avoid\nexcessing callbacks to the `vim` module in Python anyway.\n\nI only tested limited API mode down to Python 3.7, which seemes to\ncompile and work fine. I haven\u0027t tried earlier Python versions.\n\n2) Fix PyIter_Check on older Python vers / type##Ptr unused warning\n\nFor PyIter_Check, older versions exposed them as either macros (used in\nfull API), or a function (for use in limited API). A previous change\nexposed PyIter_Check to the dynamic build because Python just moved it\nto function-only in 3.10 anyway. Because of that, just make sure we\nalways grab the function in dynamic builds in earlier versions since\nthat\u0027s what Python eventually did anyway.\n\n3) Move Py_LIMITED_API define to configure script\n\nCan now use --with-python-stable-abi flag to customize what stable ABI\nversion to target. Can also use an env var to do so as well.\n\n4) Show +python/dyn-stable in :version, and allow has() feature query\n\nNot sure if the \"/dyn-stable\" suffix would break things, or whether we\nshould do it another way. Or just don\u0027t show it in version and rely on\nhas() feature checking.\n\n5) Documentation first draft. Still need to implement v:python3_version\n\n6) Fix PyIter_Check build breaks when compiling against Python 3.8\n\n7) Add CI coverage stable ABI on Linux/Windows / make configurable on Windows\n\nThis adds configurable options for Windows make files (both MinGW and\nMSVC). CI will also now exercise both traditional full API and stable\nABI for Linux and Windows in the matrix for coverage.\n\nAlso added a \"dynamic\" option to Linux matrix as a drive-by change to\nmake other scripting languages like Ruby / Perl testable under both\nstatic and dynamic builds.\n\n8) Fix inaccuracy in Windows docs\n\nPython\u0027s own docs are confusing but you don\u0027t actually want to use\n`python3.dll` for the dynamic linkage.\n\n9) Add generated autoconf file\n\n10) Add v:python3_version support\n\nThis variable indicates the version of Python3 that Vim was built\nagainst (PY_VERSION_HEX), and will be useful to check whether the Python\nlibrary you are loading in dynamically actually fits it. When built with\nstable ABI, it will be the limited ABI version instead\n(`Py_LIMITED_API`), which indicates the minimum version of Python 3 the\nuser should have, rather than the exact match. When stable ABI is used,\nwe won\u0027t be exposing PY_VERSION_HEX in this var because it just doesn\u0027t\nseem necessary to do so (the whole point of stable ABI is the promise\nthat it will work across versions), and I don\u0027t want to confuse the user\nwith too many variables.\n\nAlso, cleaned up some documentation, and added help tags.\n\n11) Fix Python 3.7 compat issues\n\nFix a couple issues when using limited API \u003c 3.8\n\n- Crash on exit: In Python 3.7, if a heap-allocated type is destroyed\n  before all instances are, it would cause a crash later. This happens\n  when we destroyed `OptionsType` before calling `Py_Finalize` when\n  using the limited API. To make it worse, later versions changed the\n  semantics and now each instance has a strong reference to its own type\n  and the recommendation has changed to have each instance de-ref its\n  own type and have its type in GC traversal. To avoid dealing with\n  these cross-version variations, we just don\u0027t free the heap type. They\n  are static types in non-limited-API anyway and are designed to last\n  through the entirety of the app, and we also don\u0027t restart the Python\n  runtime and therefore do not need it to have absolutely 0 leaks.\n\n  See:\n  - https://docs.python.org/3/whatsnew/3.8.html#changes-in-the-c-api\n  - https://docs.python.org/3/whatsnew/3.9.html#changes-in-the-c-api\n\n- PyIter_Check: This function is not provided in limited APIs older than\n  3.8. Previously I was trying to mock it out using manual\n  PyType_GetSlot() but it was brittle and also does not actually work\n  properly for static types (it will generate a Python error). Just\n  return false. It does mean using limited API \u003c 3.8 is not recommended\n  as you lose the functionality to handle iterators, but from playing\n  with plugins I couldn\u0027t find it to be an issue.\n\n- Fix loading of PyIter_Check so it will be done when limited API \u003c 3.8.\n  Otherwise loading a 3.7 Python lib will fail even if limited API was\n  specified to use it.\n\n12) Make sure to only load `PyUnicode_AsUTF8AndSize` in needed in limited API\n\nWe don\u0027t use this function unless limited API \u003e\u003d 3.10, but we were\nloading it regardless. Usually it\u0027s ok in Unix-like systems where Python\njust has a single lib that we load from, but in Windows where there is a\nseparate python3.dll this would not work as the symbol would not have\nbeen exposed in this more limited DLL file. This makes it much clearer\nunder what condition is this function needed.\n\ncloses: #12032\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\n"
    },
    {
      "commit": "c5d2744c045f9ad058cbc799f2434d90a6d83516",
      "tree": "76990a51b671ae6ab1973fe1f22d7109befc8b40",
      "parents": [
        "56bafd7a6a79203b86f7165a7bbac5730c170f64"
      ],
      "author": {
        "name": "LemonBoy",
        "email": "thatlemon@gmail.com",
        "time": "Sat Aug 19 13:02:35 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Aug 19 13:04:53 2023 +0200"
      },
      "message": "patch 9.0.1741: No type checking in interfaces\n\nProblem: No type checking in interfaces\nSolution: Implement member type check in vim9 interfaces\n\nMost of the code is a small refactoring to allow the use of a where_T\nfor signaling the type mismatch, the type checking itself is pretty\nsimple.\n\nImprove where_T error reports\n\nLet the caller explicitly define the kind of location it\u0027s referring to\nand free the WT_ARGUMENT enum from its catch-all role.\n\nImplement type checking for interface methods\n\nFollows closely the logic used for type-checking the members.\n\ncloses: #12844\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: LemonBoy \u003cthatlemon@gmail.com\u003e\n"
    },
    {
      "commit": "4c7cb372c17a84c8a35254d93eb37cb854cd39da",
      "tree": "ea5cfdba66516bd04a26c9b44df27160c7aa3fa0",
      "parents": [
        "8d687a7424b33b7ad7f6778b0c5d092a44f4bc3a"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Jun 14 16:39:54 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jun 14 16:39:54 2023 +0100"
      },
      "message": "patch 9.0.1631: passing wrong variable type to option gives multiple errors\n\nProblem:    Passing a wrong variable type to an option gives multiple errors.\nSolution:   Bail out early on failure. (closes #12504)\n"
    },
    {
      "commit": "16d2c02c80e6d4822010816e085cabf91bf91423",
      "tree": "37a68424ac179f9fa5afff734ed79d2dfc9940ba",
      "parents": [
        "d9a92dc70b20c76cef9ca186676583c92c14311c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jun 05 19:46:18 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jun 05 19:46:18 2023 +0100"
      },
      "message": "patch 9.0.1611: v:maxcol can be changed in a :for loop\n\nProblem:    v:maxcol can be changed in a :for loop.\nSolution:   Check for read-only loop variable. (closes #12470)\n"
    },
    {
      "commit": "097c5370ea8abab17ceb0f3bcd74f57b1655c7f7",
      "tree": "031d9928ff74a50cb4f7eb25270e13561a2d8d27",
      "parents": [
        "a8490a4952c320f234ae4528d4a1e812a27f3a0a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 24 21:02:24 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 24 21:02:24 2023 +0100"
      },
      "message": "patch 9.0.1576: users may not know what to do with an internal error\n\nProblem:    Users may not know what to do with an internal error.\nSolution:   Add a translated message with instructions.\n"
    },
    {
      "commit": "474891bc89e657100bd37c29129451a0e601879d",
      "tree": "595227a90e441361c1f6f2102669873b24ed08cd",
      "parents": [
        "5299c0933f942c61bfd48064c91365e518fa868c"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Apr 12 21:36:03 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Apr 12 21:36:03 2023 +0100"
      },
      "message": "patch 9.0.1447: condition is always true\n\nProblem:    Condition is always true.\nSolution:   Remove the useless condition. (closes #12253)\n"
    },
    {
      "commit": "14113fdf9cb3d588c0d1c3a210246b981cf5aad3",
      "tree": "a0f17ad3f6c5b31a0463e452122ba9e5aaa9705a",
      "parents": [
        "663ee88a8260d69d9310e22f2bfdec49af6a102e"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Tue Mar 07 17:13:51 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 07 17:13:51 2023 +0000"
      },
      "message": "patch 9.0.1390: FOR_ALL_ macros are defined in an unexpected file\n\nProblem:    FOR_ALL_ macros are defined in an unexpected file.\nSolution:   Move FOR_ALL_ macros to macros.h.  Add FOR_ALL_HASHTAB_ITEMS.\n            (Yegappan Lakshmanan, closes #12109)\n"
    },
    {
      "commit": "1b438a8228a415720efb5ca1c0503f5467292e8e",
      "tree": "c0594ccd7e5f15daebb599474a87d5cd394a2652",
      "parents": [
        "a7d36b732070944aab614944075ec0b409311482"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Feb 01 13:11:15 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 01 13:11:15 2023 +0000"
      },
      "message": "patch 9.0.1271: using sizeof() and subtract array size is tricky\n\nProblem:    Using sizeof() and subtract array size is tricky.\nSolution:   Use offsetof() instead. (closes #11926)\n"
    },
    {
      "commit": "ce93d162da8de2419c15b63286e2f72a8fe3bf2d",
      "tree": "c71709142faa5d59491146cd89733016bc93217a",
      "parents": [
        "b8bebd0cd78679162228ee08265c9a5b3a409e1c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 30 21:12:34 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 30 21:12:34 2023 +0000"
      },
      "message": "patch 9.0.1266: error for space before \": type\" is inconsistent\n\nProblem:    Error for space before \": type\" is inconsistent.\nSolution:   Give E1059 in more places. (closes #11868)\n"
    },
    {
      "commit": "c0c2c262650103c4a21b64c3246388a350688616",
      "tree": "c47119d4200782f8378d5c88595d711f08bd8d9f",
      "parents": [
        "3ce33b120c6479dfc8f22c7cc8945b9ef54285b0"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 21:08:53 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 21:08:53 2023 +0000"
      },
      "message": "patch 9.0.1188: return value of type() for class and object unclear\n\nProblem:    Return value of type() for class and object unclear.\nSolution:   Add v:t_object and v:t_class.\n"
    },
    {
      "commit": "4059400993ff380414dce9b577eff0f8c86b7725",
      "tree": "7fc2fad665a3c73e91580f56134e280445486670",
      "parents": [
        "a86655af84f1596f0f3ef22813724fe06f1e4809"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 20:04:51 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 20:04:51 2023 +0000"
      },
      "message": "patch 9.0.1186: imported class does not work when used twice in a line\n\nProblem:    Imported class does not work when used twice in a line.\nSolution:   Fix the type parsing.\n"
    },
    {
      "commit": "a86655af84f1596f0f3ef22813724fe06f1e4809",
      "tree": "bbf962d3a9b0597e34be6cecc9657241bb3346f3",
      "parents": [
        "a94bd9d9396183eb7781f8d6a5a0e6e97442e9ed"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 17:06:27 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 17:06:27 2023 +0000"
      },
      "message": "patch 9.0.1185: using class from imported script not tested\n\nProblem:    Using class from imported script not tested.\nSolution:   Add tests.  Implement what is missing.\n"
    },
    {
      "commit": "94674f2223aafeaa4690f25e12f3ebe07814c5ba",
      "tree": "ec39a32dd6513f68e6f524c4272424a334403def",
      "parents": [
        "5bcd29b84e4dd6435177f37a544ecbf8df02412c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jan 06 18:42:20 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jan 06 18:42:20 2023 +0000"
      },
      "message": "patch 9.0.1152: class \"implements\" argument not implemented\n\nProblem:    Class \"implements\" argument not implemented.\nSolution:   Implement \"implements\" argument.  Add basic checks for when a\n            class implements an interface.\n"
    },
    {
      "commit": "ea720aea851e645f4c8ec3b20afb27c7ca38184c",
      "tree": "3a938313dee390b08effa7ae0818126993cf71ff",
      "parents": [
        "e83c133eb900898c39e6935a5d569308ff882342"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Tue Jan 03 10:54:09 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jan 03 10:54:09 2023 +0000"
      },
      "message": "patch 9.0.1137: some conditions are always false\n\nProblem:    Some conditions are always false.\nSolution:   Remove the useless conditions. (closes #11776)\n"
    },
    {
      "commit": "a9fa8c58fbcc5cf8850f6963c509de272f4d4bbf",
      "tree": "891f3c44b937d7a4a7492b83826ca114c31f22ff",
      "parents": [
        "dc4daa3a3915fba11ac87d27977240d9a5e0d47d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 02 18:10:04 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 02 18:10:04 2023 +0000"
      },
      "message": "patch 9.0.1133: error message names do not match the items\n\nProblem:    Error message names do not match the items.\nSolution:   Add \"_str\" when the text contains \"%s\".\n"
    },
    {
      "commit": "dc4daa3a3915fba11ac87d27977240d9a5e0d47d",
      "tree": "7c28de30cdf3c6a351bd41795612be078f451c9f",
      "parents": [
        "a2942c74683be3f67c6044c2886dc6c237358b3d"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Jan 02 16:54:53 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 02 16:54:53 2023 +0000"
      },
      "message": "patch 9.0.1132: code is indented more than needed\n\nProblem:    Code is indented more than needed.\nSolution:   Use an early return to reduce indentation. (Yegappan Lakshmanan,\n            closes #11769)\n"
    },
    {
      "commit": "00b28d6c23d8e662cab27e461825777c0a2e387a",
      "tree": "ba11ed85b20cf03491e0f24b6d5bf348d2c19388",
      "parents": [
        "038e6d20e680ce8c850d07f6b035c4e1904c1201"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 08 15:32:33 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 08 15:32:33 2022 +0000"
      },
      "message": "patch 9.0.1031: Vim9 class is not implemented yet\n\nProblem:    Vim9 class is not implemented yet.\nSolution:   Add very basic class support.\n"
    },
    {
      "commit": "c96b7f5d2af241c5eb1589e9da3dc09e45355e65",
      "tree": "ef26f1475c713f971de88df0f7eec925c5822aca",
      "parents": [
        "9c8d12c8115640927823919001a03c79d4118063"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 02 15:58:38 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 02 15:58:38 2022 +0000"
      },
      "message": "patch 9.0.0990: callback name argument is changed by setqflist()\n\nProblem:    Callback name argument is changed by setqflist().\nSolution:   Use the expanded function name for the callback, do not store it\n            in the argument. (closes #11653)\n"
    },
    {
      "commit": "e76062c078debed0df818f70e4db14ad7a7cb53a",
      "tree": "e43b3b076fdea909c460219e896237a8924ccb6b",
      "parents": [
        "74a694dbe20bb7dea4e06f474cf62e20f9c92f1d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Nov 28 18:51:43 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Nov 28 18:51:43 2022 +0000"
      },
      "message": "patch 9.0.0965: using one window for executing autocommands is insufficient\n\nProblem:    Using one window for executing autocommands is insufficient.\nSolution:   Use up to five windows for executing autocommands.\n"
    },
    {
      "commit": "ef2c325f5e3c437b722bb96bf369ba2a5c541163",
      "tree": "dc85f0dc98dce1937b459d8d3882473f25db03c3",
      "parents": [
        "c1cf4c91072f91b6b8dd636627a4ddf6f4b21f16"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Nov 25 16:31:51 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Nov 25 16:31:51 2022 +0000"
      },
      "message": "patch 9.0.0949: crash when unletting a variable while listing variables\n\nProblem:    Crash when unletting a variable while listing variables.\nSolution:   Disallow changing a hashtable while going over the entries.\n            (closes #11435)\n"
    },
    {
      "commit": "1573e73f1c743d6792de8ee4b6f5b99545ebd3fb",
      "tree": "c5d0c482a623de7782588cb75d99176da553f86c",
      "parents": [
        "8303035d670a50e39a0c099f159ce450d6e1a14e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Nov 16 20:33:21 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Nov 16 20:33:21 2022 +0000"
      },
      "message": "patch 9.0.0890: no test for what patch 9.0.0827 fixes\n\nProblem:    No test for what patch 9.0.0827 fixes.\nSolution:   Add a test (still doesn\u0027t fail when fix is reverted).\n"
    },
    {
      "commit": "6c4d4a64449ea225b1a568f5517e309b2054b490",
      "tree": "feb56a6031ecd131f8dd25e7a318ef89f701cc51",
      "parents": [
        "66b8d2a89efb6bd482e3160c7494e646e31aea27"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 13 17:47:42 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 13 17:47:42 2022 +0100"
      },
      "message": "patch 9.0.0744: in script in autoload dir exported variable is not found\n\nProblem:    In script in autoload dir exported variable is not found. (Doug\n            Kearns)\nSolution:   Find the variable with the \"script#\" prefix. (closes #11361)\n"
    },
    {
      "commit": "d987642626f84fe2f0b32a1ca5ede31b436ce677",
      "tree": "60e9980364797a13d021a5ea50e2f2d5019d843f",
      "parents": [
        "af40f9af335e0c8b167eac31ceace45b6a2e0565"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Oct 12 12:58:54 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Oct 12 12:58:54 2022 +0100"
      },
      "message": "patch 9.0.0732: no check for white space before and after \"\u003d\u003c\u003c\"\n\nProblem:    No check for white space before and after \"\u003d\u003c\u003c\". (Doug Kearns)\nSolution:   Check for white space in Vim9 script. (closes #11351)\n"
    },
    {
      "commit": "a4e0b9785e409e9e660171cea76dfcc5fdafad9b",
      "tree": "3323913d9bdc9cd09029b1314a77c4a5e8191bbf",
      "parents": [
        "b850c39676db21c6f1aa3afed0e2e48d407dd60e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Oct 01 19:43:52 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Oct 01 19:43:52 2022 +0100"
      },
      "message": "patch 9.0.0634: evaluating \"expr\" options has more overhead than needed\n\nProblem:    Evaluating \"expr\" options has more overhead than needed.\nSolution:   Use call_simple_func() for \u0027foldtext\u0027, \u0027includeexpr\u0027, \u0027printexpr\u0027,\n            \"expr\" of \u0027spellsuggest\u0027, \u0027diffexpr\u0027, \u0027patchexpr\u0027, \u0027balloonexpr\u0027,\n            \u0027formatexpr\u0027, \u0027indentexpr\u0027 and \u0027charconvert\u0027.\n"
    },
    {
      "commit": "e8e369a796e110760d033e937b40c84e0c5e8b36",
      "tree": "aaf71aeb71f9bf17a914a8c56322394fe6f30484",
      "parents": [
        "ec5e1483ebda577e0b7f638c485203cd0e479c47"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Sep 21 18:59:14 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Sep 21 18:59:14 2022 +0100"
      },
      "message": "patch 9.0.0535: closure gets wrong value in for loop with two loop variables\n\nProblem:    Closure gets wrong value in for loop with two loop variables.\nSolution:   Correctly compute the number of loop variables to clear.\n"
    },
    {
      "commit": "766ae5b252eaa6ee2bff70f1913d1cbfb51101bd",
      "tree": "c8e34f8e495b00c7e36e9310ab5becb5f9924ecc",
      "parents": [
        "353b68a99189875a8460124d44fc33eae6def74e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Sep 14 00:30:51 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Sep 14 00:30:51 2022 +0100"
      },
      "message": "patch 9.0.0460: loop variable can\u0027t be found\n\nProblem:    Loop variable can\u0027t be found.\nSolution:   Adjust block_id of the loop variable each round.\n"
    },
    {
      "commit": "9510d22463055f56548ff461ccbc54caa1ba1a2f",
      "tree": "5c084eccddd0a17e08c4bba2d5fec6d4cc969144",
      "parents": [
        "cce82a55b8105560a2ef724999c856966337b48e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Sep 11 15:14:05 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Sep 11 15:14:05 2022 +0100"
      },
      "message": "patch 9.0.0444: trying to declare g:variable gives confusing error\n\nProblem:    Trying to declare g:variable gives confusing error.\nSolution:   Give a better error message. (closes #11108)\n"
    },
    {
      "commit": "ca16c60f337ed33d5dd66a6e90aaf95b619c5e47",
      "tree": "4c552c6a030970a050e9ab9aeea33fa222d717aa",
      "parents": [
        "58779858fb5a82a3233af5d4237a3cece88c10d4"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Sep 06 18:57:08 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Sep 06 18:57:08 2022 +0100"
      },
      "message": "patch 9.0.0398: members of funccall_T are inconsistently named\n\nProblem:    Members of funccall_T are inconsistently named.\nSolution:   Use the \"fc_\" prefix for all members.\n"
    },
    {
      "commit": "c99e182e1fb54e39540d25d0ccd8dcdde25bb96c",
      "tree": "d0cec00ea2cd55d8fb68d353712b70d8be952e5f",
      "parents": [
        "b18b49699776485150b71626069a40d12d2c5590"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Sep 03 10:52:24 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Sep 03 10:52:24 2022 +0100"
      },
      "message": "patch 9.0.0364: clang static analyzer gives warnings\n\nProblem:    Clang static analyzer gives warnings.\nSolution:   Avoid the warnings. (Yegappan Lakshmanan, closes #11043)\n"
    },
    {
      "commit": "6c667bdc9489963102bd6c46b1b73e4d43c034ce",
      "tree": "5c652a4a471e06324618c43ffc3b2d0dccfee257",
      "parents": [
        "a906e8e1abf0a4c9a058ec5ee8a4c321a008cd41"
      ],
      "author": {
        "name": "thinca",
        "email": "thinca@gmail.com",
        "time": "Fri Sep 02 11:25:37 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Sep 02 11:25:37 2022 +0100"
      },
      "message": "patch 9.0.0355: check for uppercase char in autoload name is wrong\n\nProblem:    Check for uppercase char in autoload name is wrong, it checks the\n            name of the script.\nSolution:   Remove the check. (closes #11031)\n"
    },
    {
      "commit": "753885b6c5b9021184daa94d32fd8bf025f1b488",
      "tree": "d0d9e106e111e6d1bf3f200ca83a4b0a3fad7ae0",
      "parents": [
        "f5240b96f721b08d703340ff0b2e67b79fb8b821"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 24 16:30:36 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 24 16:30:36 2022 +0100"
      },
      "message": "patch 9.0.0253: a symlink to an autoload script results in two entries\n\nProblem:    A symlink to an autoload script results in two entries in the list\n            of scripts, items expected in one are actually in the other.\nSolution:   Have one script item refer to the actually sourced one.\n            (closes #10960)\n"
    },
    {
      "commit": "a4d158b3c839e96ed98ff87c7b7124ff4518c4ff",
      "tree": "42d3a6b65d4ae53a6e078c8f24a5ee9960e3ad24",
      "parents": [
        "28c9f895716cfa8f1220bc41b72a534c0e10cabe"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 14 14:17:45 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 14 14:17:45 2022 +0100"
      },
      "message": "patch 9.0.0206: redraw flags are not named specifically\n\nProblem:    Redraw flags are not named specifically.\nSolution:   Prefix \"UPD_\" to the flags, for UPDate_screen().\n"
    },
    {
      "commit": "61021aa318ca4c4a6b0182ee93388b2e9b5eefba",
      "tree": "6c00416860622eb8bb9805c743c54069204cc967",
      "parents": [
        "34d1773bd4a1880616c5d7ef3a26f7bd69527589"
      ],
      "author": {
        "name": "Shougo Matsushita",
        "email": "Shougo.Matsu@gmail.com",
        "time": "Wed Jul 27 14:40:00 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 27 14:40:00 2022 +0100"
      },
      "message": "patch 9.0.0092: plugins cannot change v:completed_item\n\nProblem:    Plugins cannot change v:completed_item.\nSolution:   Make v:completed_item writeable. (Shougo Matsushita,\n            closes #10801)\n"
    },
    {
      "commit": "28f84e17b068daca2635692d279930dcb7a150d0",
      "tree": "1913ed36abd15b672ebcff947234b0b75f565084",
      "parents": [
        "7db3a8e3298bf7c7c3f74cc9c1add04f29e78d2d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 27 12:30:13 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 27 12:30:13 2022 +0100"
      },
      "message": "patch 9.0.0090: no error when assigning bool to a string option\n\nProblem:    No error when assigning bool to a string option with setwinvar().\nSolution:   Give an error (closes #10766)\n"
    },
    {
      "commit": "cd6ad6439da2ee2d1a8a6934c9d69e9c2664ba55",
      "tree": "2ba97df8d1ee3651a14d3bbe5c18084c47978433",
      "parents": [
        "509695c1c3f5c94bf4b1de5dd0fc11202804f638"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Mon Jul 25 12:28:09 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jul 25 12:28:09 2022 +0100"
      },
      "message": "patch 9.0.0066: switching window uneccarily when getting buffer options\n\nProblem:    Switching window uneccarily when getting buffer options.\nSolution:   Do not switch window when getting buffer options. (closes #10767)\n"
    },
    {
      "commit": "ee47eaceaa148e07b566ff420f9a3c2edde2fa34",
      "tree": "990dc0d8074d51970ecc83ad94a59e884687a313",
      "parents": [
        "c207fd2535717030d78f9b92839e5f2ac004cc78"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Wed Jun 29 12:55:36 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jun 29 12:55:36 2022 +0100"
      },
      "message": "patch 9.0.0003: functions are global while they could be local\n\nProblem:    Functions are global while they could be local.\nSolution:   Add \"static\".  Add a few tests. (Yegappan Lakshmanan,\n            closes #10612)\n"
    },
    {
      "commit": "8be36eecdc6728021f9c384c2305f114e671ec32",
      "tree": "7a382e8669ad5c0854868671068cfcf73a8440e8",
      "parents": [
        "2a585c85013be22f59f184d49612074fd9b115d7"
      ],
      "author": {
        "name": "mityu",
        "email": "mityu.mail@gmail.com",
        "time": "Wed May 25 17:29:46 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 25 17:29:46 2022 +0100"
      },
      "message": "patch 8.2.5017: gcc 12.1 warns for uninitialized variable\n\nProblem:    Gcc 12.1 warns for uninitialized variable.\nSolution:   Initialize the variable. (closes #10476)\n"
    },
    {
      "commit": "70c41241c2701f26a99085e433925a206ca265a3",
      "tree": "1afeaeb49dfc47199313bf397955519a5f598572",
      "parents": [
        "df6e0e46c55c9c6d788f94482a8858c0f31391f4"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 10 18:11:43 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 10 18:11:43 2022 +0100"
      },
      "message": "patch 8.2.4934: string interpolation fails when not evaluating\n\nProblem:    String interpolation fails when not evaluating.\nSolution:   Skip the expression when not evaluating. (closes #10398)\n"
    },
    {
      "commit": "0abc2871c105882ed1c1effb9a7757fad8a395bd",
      "tree": "0377e3f47b0fda6713cc0e8b6426616457e07912",
      "parents": [
        "57ff52677bf5ba1651281ffe40505df8feba4a36"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 10 13:24:30 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 10 13:24:30 2022 +0100"
      },
      "message": "patch 8.2.4930: interpolated string expression requires escaping\n\nProblem:    Interpolated string expression requires escaping.\nSolution:   Do not require escaping in the expression.\n"
    },
    {
      "commit": "2eaef106e4a7fc9dc74a7e672b5f550ec1f9786e",
      "tree": "543832333e5ef90b9e51477457a7e65572274227",
      "parents": [
        "e7d6dbc5721342e3d6b04cf285e4510b5569e707"
      ],
      "author": {
        "name": "LemonBoy",
        "email": "thatlemon@gmail.com",
        "time": "Fri May 06 13:14:50 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 06 13:14:50 2022 +0100"
      },
      "message": "patch 8.2.4883: string interpolation only works in heredoc\n\nProblem:    String interpolation only works in heredoc.\nSolution:   Support interpolated strings.  Use syntax for heredoc consistent\n            with strings, similar to C#. (closes #10327)\n"
    },
    {
      "commit": "47d4e317f85e4aeb3799d962f173bd0f1e7bc71c",
      "tree": "964f17db29def8f8d6bc732404f2be785c0c3943",
      "parents": [
        "cd5dbad184e8235beb13dcd8a22302da09db9766"
      ],
      "author": {
        "name": "LemonBoy",
        "email": "thatlemon@gmail.com",
        "time": "Wed May 04 18:12:55 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 04 18:12:55 2022 +0100"
      },
      "message": "patch 8.2.4866: duplicate code in \"get\" functions\n\nProblem:    Duplicate code in \"get\" functions.\nSolution:   Use get_var_from() for getwinvar(), gettabvar(), gettabwinvar()\n            and getbufvar(). (closes #10335)\n"
    },
    {
      "commit": "05c7f5d3d03440da6f69604f8c06c4e3d90d2a26",
      "tree": "2d91131156c98374b6a9b092307331f6fcceac11",
      "parents": [
        "0a748d91846a4c3422975acc0af78c806623c191"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Apr 28 16:51:41 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Apr 28 16:51:41 2022 +0100"
      },
      "message": "patch 8.2.4840: heredoc expression evaluated even when skipping\n\nProblem:    Heredoc expression evaluated even when skipping.\nSolution:   Don\u0027t evaluate when \"skip\" is set. (closes #10306)\n"
    },
    {
      "commit": "1fc6ea9bf3548b578676331f5eac1f7e0611c268",
      "tree": "cbbabd2cece75b8657356b2b1716372daeee94ce",
      "parents": [
        "66e13aedc7986c83644d537a8fdd3cb006507678"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Apr 21 23:30:15 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Apr 21 23:30:15 2022 +0100"
      },
      "message": "patch 8.2.4804: expression in heredoc doesn\u0027t work for compiled function\n\nProblem:    Expression in heredoc doesn\u0027t work for compiled function.\nSolution:   Implement compiling the heredoc expressions. (Yegappan Lakshmanan,\n            closes #10232)\n"
    },
    {
      "commit": "42ccb8d74700506936567b0eb6d11def5e25e1dd",
      "tree": "e3f0eeda77a045ee35a3306cfb99e9abbe59c416",
      "parents": [
        "75ab590f8504a8912ca0b8c58f6b897bb7a34f07"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 18 15:45:23 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 18 15:45:23 2022 +0100"
      },
      "message": "patch 8.2.4783: Coverity warns for leaking memory\n\nProblem:    Coverity warns for leaking memory.\nSolution:   Use another strategy freeing \"theline\".\n"
    },
    {
      "commit": "efbfa867a146fcd93fdec2435597aa4ae7f1325c",
      "tree": "0b8b54107db3708bfe5b5c0e572371d476f3c4ff",
      "parents": [
        "68aaff4697bab4a278436e6f7ae042262223e51c"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sun Apr 17 12:47:40 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 17 12:47:40 2022 +0100"
      },
      "message": "patch 8.2.4770: cannot easily mix expression and heredoc\n\nProblem:    Cannot easily mix expression and heredoc.\nSolution:   Support  in heredoc. (Yegappan Lakshmanan, closes #10138)\n"
    },
    {
      "commit": "7714231bb5b15f7c85453f3945c108478de1d08a",
      "tree": "41748cd1bbbff5097437e576c617f19f11468dcf",
      "parents": [
        "31e5c60a682840959cae6273ccadd9aae48c928d"
      ],
      "author": {
        "name": "LemonBoy",
        "email": "thatlemon@gmail.com",
        "time": "Fri Apr 15 20:50:46 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Apr 15 20:50:46 2022 +0100"
      },
      "message": "patch 8.2.4754: using cached values after unsetting some environment variables\n\nProblem:    Still using cached values after unsetting some known environment\n            variables.\nSolution:   Take care of the side effects. (closes #10194)\n"
    },
    {
      "commit": "31e5c60a682840959cae6273ccadd9aae48c928d",
      "tree": "a72168baa32f1899937f3937a41b0832eac66b8f",
      "parents": [
        "5dc294a7b63ed0e508dd360bc4d98173f1a1aeec"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Apr 15 13:53:33 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Apr 15 13:53:33 2022 +0100"
      },
      "message": "patch 8.2.4753: error from setting an option is silently ignored\n\nProblem:    Error from setting an option is silently ignored.\nSolution:   Handle option value errors better.  Fix uses of N_().\n"
    },
    {
      "commit": "aa7d0c233532fb9d8c2876ea8e978a82b12c377f",
      "tree": "e1a7043513071fae2a4cb0a749f50804a4330fdb",
      "parents": [
        "0d1f55c044610f627b1617e4cfbf6e094ff60921"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Apr 05 21:40:38 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Apr 05 21:40:38 2022 +0100"
      },
      "message": "patch 8.2.4698: Vim9: script variable has no flag that it was set\n\nProblem:    Vim9: script variable has no flag that it was set.\nSolution:   Add a flag that it was set, to avoid giving it a value when used.\n            (closes #10088)\n"
    },
    {
      "commit": "7a411a306f90339d8686e42ac16e1ae4fc7533c5",
      "tree": "def2607a7145867c305c4d55baf955bc21649bde",
      "parents": [
        "15f74fab653a784548d5d966644926b47ba2cfa7"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 04 14:58:06 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Apr 04 14:58:06 2022 +0100"
      },
      "message": "patch 8.2.4682: Vim9: can use :unlockvar for const variable\n\nProblem:    Vim9: can use :unlockvar for const variable. (Ernie Rael)\nSolution:   Check whether the variable is a const.\n"
    },
    {
      "commit": "22ebd172e48ba060c8a7bae3dbf6480b7596d937",
      "tree": "ff1a418ba71300eaf1ddd85e37e682b16ade4958",
      "parents": [
        "ffe6e646dc6aede3bce062e40256ce0edc64bc08"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Apr 01 15:26:58 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Apr 01 15:26:58 2022 +0100"
      },
      "message": "patch 8.2.4662: no error for using out of range list index\n\nProblem:    No error for using out of range list index.\nSolution:   Check list index at script level like in compiled function.\n            (closes #10051)\n"
    },
    {
      "commit": "859cc21c6b60af07b549456b7d050a03b3e48bc9",
      "tree": "f2b27da6d782dc353fa52f8055b900b78997c6c7",
      "parents": [
        "471b3aed3e9c43d4dd53444ceb74f9a4f8a3874a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Mar 28 15:22:35 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Mar 28 15:22:35 2022 +0100"
      },
      "message": "patch 8.2.4642: Vim9: in :def function script var cannot be null\n\nProblem:    Vim9: in :def function script var cannot be null.\nSolution:   Only initialize a script variable when not set to a null value.\n            (closes #10034)\n"
    },
    {
      "commit": "501f978288008c2e4e8761858af2e27b14223afd",
      "tree": "fb49095995371932e1331eaf274e52b3465d9515",
      "parents": [
        "ec15b1cfdc5faadb529dedda58adf7fc98c839ed"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 27 16:51:04 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 27 16:51:04 2022 +0100"
      },
      "message": "patch 8.2.4635: tests using null list or dict fail\n\nProblem:    Tests using null list or dict fail.\nSolution:   Only use the new rules for Vim9 script.\n"
    },
    {
      "commit": "ec15b1cfdc5faadb529dedda58adf7fc98c839ed",
      "tree": "cdcf7ffa3e2ed7de3fc890f6415a0be84ad1e490",
      "parents": [
        "c75bca3ee955ff36ece99a42041733ddea5f45a7"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 27 16:29:53 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 27 16:29:53 2022 +0100"
      },
      "message": "patch 8.2.4634: Vim9: cannot initialize a variable to null_list\n\nProblem:    Vim9: cannot initialize a variable to null_list.\nSolution:   Give negative count to NEWLIST. (closes #10027)\n            Also fix inconsistencies in comparing with null values.\n"
    },
    {
      "commit": "6b8c7ba062ca4b50e8f983e0485be7afa4eef691",
      "tree": "3785ea7cbfd478401baa1542acd8211876a1248b",
      "parents": [
        "a4df834a92535cf124afd1c3b711b4a7109e3534"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 20 17:46:06 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 20 17:46:06 2022 +0000"
      },
      "message": "patch 8.2.4600: Vim9: not enough test coverage for executing :def function\n\nProblem:    Vim9: not enough test coverage for executing :def function.\nSolution:   Add a few more tests.  Fix inconsistencies.\n"
    },
    {
      "commit": "8acb9cc6209768ca7ec75c9f7af8c389312ea8d6",
      "tree": "8a5f92b1b10f53f7a3f0e95ffbdcb519ce9ecb09",
      "parents": [
        "08238045e769fce2d5bf1e17167e26eafc3d72b8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 08 13:18:55 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 08 13:18:55 2022 +0000"
      },
      "message": "patch 8.2.4526: Vim9: cannot set variables to a null value\n\nProblem:    Vim9: cannot set variables to a null value.\nSolution:   Add null_list, null_job, etc.\n"
    },
    {
      "commit": "204852ae2adfdde10c656ca7f14e5b4207a69172",
      "tree": "67b62ce1a926faaeff341efa797baa3da5fd2326",
      "parents": [
        "e1d1211799bc37c063666e97437cf4e9af4782b0"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 05 12:56:44 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 05 12:56:44 2022 +0000"
      },
      "message": "patch 8.2.4510: Vim9: shortening commands leads to confusing script\n\nProblem:    Vim9: shortening commands leads to confusing script.\nSolution:   In Vim9 script require at least \":cont\" for \":continue\", \"const\"\n            instead of \"cons\", \"break\" instead of \"brea\", \"catch\" instead of\n            \"cat\", \"else\" instead of \"el\" \"elseif\" instead of \"elsei\" \"endfor\"\n            instead of \"endfo\" \"endif\" instead of \"en\" \"endtry\" instead of\n            \"endt\", \"finally\" instead of \"fina\", \"throw\" instead of \"th\",\n            \"while\" instead of \"wh\".\n"
    },
    {
      "commit": "e1d1211799bc37c063666e97437cf4e9af4782b0",
      "tree": "1a43103320c16459551d6ab64c4d02afd1947452",
      "parents": [
        "330a388e18ad6b64c3574c712db675258b0e9878"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 05 11:37:48 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 05 11:37:48 2022 +0000"
      },
      "message": "patch 8.2.4509: Vim9: can declare a variable with \":va\"\n\nProblem:    Vim9: can declare a variable with \":va\".\nSolution:   Disallow using \":va\", require using \":var\".\n"
    },
    {
      "commit": "330a388e18ad6b64c3574c712db675258b0e9878",
      "tree": "99c61b05a3986cb741ff507dddf3ca7e94bd7171",
      "parents": [
        "f78ee2b49f0b060c642764a620b4c55ab13af82e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 05 11:05:57 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 05 11:05:57 2022 +0000"
      },
      "message": "patch 8.2.4508: Vim9: cannot assign to a global variable on the command line\n\nProblem:    Vim9: cannot assign to a global variable on the command line.\nSolution:   Allow using :vim9cmd for assignment on the command line.\n"
    },
    {
      "commit": "0e1574c4069ded47c170fcd7a47a0df66693a5f4",
      "tree": "f266c5d17984eca34d287a3f04bc6584a425bafe",
      "parents": [
        "28bf649a5732ffe5a47951b5e437b765cebc5b38"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Mar 03 17:05:35 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Mar 03 17:05:35 2022 +0000"
      },
      "message": "patch 8.2.4500: Vim9: can declare a global variable on the command line\n\nProblem:    Vim9: can declare a global variable on the command line.\nSolution:   Disallow declaring a variable on the command line. (closes #9881)\n"
    },
    {
      "commit": "8ccbbeb620dcc73154de29c51100fe815cefe109",
      "tree": "2da5c4d7ade1cbfafe3d14d73050ad387b1b379c",
      "parents": [
        "7f687aaca9f2fd7c04f8a07effed92dd0164f6a2"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Mar 02 19:49:38 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Mar 02 19:49:38 2022 +0000"
      },
      "message": "patch 8.2.4492: no error if an option is given a value with \":let \u0026opt \u003d val\"\n\nProblem:    No error if an option is given an invalid value with\n            \":let \u0026opt \u003d val\".\nSolution:   Give the error. (closes #9864)\n"
    },
    {
      "commit": "7a2222487507eb13cccdb9a66397092775d62b8c",
      "tree": "c5878917461a22b48ec7a38cb6356352b8e57895",
      "parents": [
        "f01af9c4e6f1438cd1112cfff42f3837028c7846"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 01 19:23:24 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 01 19:23:24 2022 +0000"
      },
      "message": "patch 8.2.4487: Vim9: cannot compare with v:null\n\nProblem:    Vim9: cannot compare with v:null.\nSolution:   Allow comparing anything with v:null. (closes #9866)\n"
    },
    {
      "commit": "993faa34059c7fa304e2d4357c57463765cba6d3",
      "tree": "f2718e708497b0b00ad99a8ee0d30bc8f321f1c8",
      "parents": [
        "101979358f9addfac1414579c4191682e9e42468"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 21 15:59:11 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 21 15:59:11 2022 +0000"
      },
      "message": "patch 8.2.4431: unnecessary condition when assigning to a variable\n\nProblem:    Unnecessary condition when assigning to a variable.\nSolution:   Remove the condition.\n"
    },
    {
      "commit": "0f6e28f686dbb59ab3b562408ab9b2234797b9b1",
      "tree": "38ebe0450e05aa92515b1025337ab2a402b54ca8",
      "parents": [
        "944697ae19683441981539cd4d2469df89d6ec82"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 20 20:49:35 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 20 20:49:35 2022 +0000"
      },
      "message": "patch 8.2.4428: crash when switching tabpage while in the cmdline window\n\nProblem:    Crash when switching tabpage while in the cmdline window.\nSolution:   Disallow switching tabpage when in the cmdline window.\n"
    },
    {
      "commit": "8b716f5f2204f938769de283d43bcb2f77d403e7",
      "tree": "b6e02ebcc3d6b23646b037e9b145b1aa147be8b1",
      "parents": [
        "9fdde7992ab4c21517f447ca3d651b9ff4a770e8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Feb 15 21:17:56 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Feb 15 21:17:56 2022 +0000"
      },
      "message": "patch 8.2.4395: some code lines not covered by tests\n\nProblem:    Some code lines not covered by tests.\nSolution:   Add a few more test cases.  Fix getting more than one error for\n            invalid assignment.\n"
    },
    {
      "commit": "4b1d9639726ebe1630991488a1314db628b6b854",
      "tree": "1c917ecce981d10d7a8abcd1a92530df399d786d",
      "parents": [
        "0631bb4ed7674b88ba395daf59ed222f77bc4913"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 13 21:51:08 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 13 21:51:08 2022 +0000"
      },
      "message": "patch 8.2.4375: ctx_imports is not used\n\nProblem:    ctx_imports is not used.\nSolution:   Delete ctx_imports.  Add missing dependency.\n"
    },
    {
      "commit": "75e27d78f5370e7d2e0898326d9b080937e7b090",
      "tree": "410ddc3fcf6d8ebd84883143ef78d8923e75233b",
      "parents": [
        "cf6ad8ea8cff318877758b48d3786ab08251ab89"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 13 13:56:29 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 13 13:56:29 2022 +0000"
      },
      "message": "patch 8.2.4371: Vim9: can create a script variable from a legacy function\n\nProblem:    Vim9: can create a script variable from a legacy function.\nSolution:   Disallow creating a script variable from a function.\n"
    },
    {
      "commit": "54969f4ef5825205ecde09ea80f4087fc3b68e5d",
      "tree": "a33efdb636d52d421266829a530a15e8f3cedb16",
      "parents": [
        "63ff72aab91679725077eab5c5405267792268bd"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 07 13:56:44 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 07 13:56:44 2022 +0000"
      },
      "message": "patch 8.2.4318: various comment and indent mistakes, returning wrong zero\n\nProblem:    Various comment and indent mistakes, returning wrong zero.\nSolution:   Fix the mistakes.  Return NULL instead of FAIL.\n"
    },
    {
      "commit": "381692b6f1c2ec9b73a139500286ddc9347a1c01",
      "tree": "96145ec58ad29dd86bbc80e557377333c07d059b",
      "parents": [
        "a1c519518050383e7d319514a3ff6c42a9154c48"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 02 20:01:27 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 02 20:01:27 2022 +0000"
      },
      "message": "patch 8.2.4286: Vim9: strict type checking after copy() and deepcopy()\n\nProblem:    Vim9: strict type checking after copy() and deepcopy().\nSolution:   Allow type to change after making a copy. (closes #9644)\n"
    },
    {
      "commit": "848faddb870f3ba4d84fcacd1cccb5cdbbfd9c41",
      "tree": "2215ac87eeddd465bb8339ca6654a4edde1efd52",
      "parents": [
        "06011e1a55f32e47fe0af4bd449be6f0e3ff0814"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 30 15:28:30 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 30 15:28:30 2022 +0000"
      },
      "message": "patch 8.2.4260: Vim9: can still use a global function without g:\n\nProblem:    Vim9: can still use a global function without g: at the script\n            level.\nSolution:   Also check for g: at the script level. (issue #9637)\n"
    },
    {
      "commit": "70c43d84be98ab54d3723155dcc4232dc5a5f081",
      "tree": "31f3a580fe1bbfecc50e822e718696836d9cb95c",
      "parents": [
        "1080c48ec8d672d7e9fbefb5a1255c9df09a2884"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 26 21:01:15 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 26 21:01:15 2022 +0000"
      },
      "message": "patch 8.2.4225: Vim9: depth argument of :lockvar not parsed in :def function\n\nProblem:    Vim9: depth argument of :lockvar not parsed in :def function.\nSolution:   Parse the optional depth argument. (closes #9629)\n            Fix that locking doesn\u0027t work for a non-materialize list.\n"
    },
    {
      "commit": "3e93a2b075e99a2b3ced85227a6373be233712ff",
      "tree": "e34bf26f7503259ea27c2ec7c4a612e41c2b3307",
      "parents": [
        "dff97e65eb1bb24c44c2b7430a480888d8afb3f4"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 24 21:28:01 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 24 21:28:01 2022 +0000"
      },
      "message": "patch 8.2.4209: partial in \u0027opfunc\u0027 cannot use an imported function\n\nProblem:    partial in \u0027opfunc\u0027 cannot use an imported function.\nSolution:   Also expand the function name in a partial. (closes #9614)\n"
    }
  ],
  "next": "2a7aa834583dea157eccf3e69827d2ff1d9fe9c7"
}
