)]}'
{
  "log": [
    {
      "commit": "e2c453d38f6512ac4cff7cd26aa7780b4e2534d7",
      "tree": "8458a35d59ac43121bfd2d24d5e9f7f54969d0dc",
      "parents": [
        "d933c82ff4e2c910bd533ed9a50377699c3f5ec9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 21 14:37:09 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 21 14:37:09 2019 +0200"
      },
      "message": "patch 8.1.1901: the +insert_expand feature is not always available\n\nProblem:    The +insert_expand feature is not always available.\nSolution:   Graduate the +insert_expand feature.\n"
    },
    {
      "commit": "0a52df50a0e8fce6f5e0eb5f5373dcd0fa24d83a",
      "tree": "9860863c20df3f5354bf67a1d7efe054e23e8a99",
      "parents": [
        "66b51420e0c8d49bcf6786b792c938d6099e3393"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 18 22:26:31 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 18 22:26:31 2019 +0200"
      },
      "message": "patch 8.1.1887: the +cmdline_compl feature is not in the tiny version\n\nProblem:    The +cmdline_compl feature is not in the tiny version.\nSolution:   Graduate the +cmdline_compl feature.\n"
    },
    {
      "commit": "9cfe8f6e68de4bfb5942d84f4465de914a747b3f",
      "tree": "8931b5937762d4e85541ebb2bad68cc0bcc25816",
      "parents": [
        "ffc0716af8e448ef8a2a3249edfd0260546933df"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 17 21:04:16 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 17 21:04:16 2019 +0200"
      },
      "message": "patch 8.1.1878: negative float before method not parsed correctly\n\nProblem:    Negative float before method not parsed correctly.\nSolution:   Apply \"!\" and \"-\" in front of expression before using -\u003e.\n"
    },
    {
      "commit": "9174639a82799011cfa0013cbc4c4709b3833bf0",
      "tree": "fb637c1fd8bde68eb56ca3eabb06a5a1aab69e95",
      "parents": [
        "9c272a9e52c914d6630f2cc887da89f63e7e983a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 16 22:22:31 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 16 22:22:31 2019 +0200"
      },
      "message": "patch 8.1.1863: confusing error when using a builtin function as method\n\nProblem:    Confusing error when using a builtin function as method while it\n            does not support that.\nSolution:   Add a specific error message.\n"
    },
    {
      "commit": "47ed553fd5bebfc36eb8aa81686eeaa5a84eccac",
      "tree": "73dbe93fe15754af8a4384ef66d7f595c9bbb8a6",
      "parents": [
        "8c5a278fc508da6dfe50e69b6ee734451aa4eafb"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Aug 08 20:49:14 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Aug 08 20:49:14 2019 +0200"
      },
      "message": "patch 8.1.1827: allocating more memory than needed for extended structs\n\nProblem:    Allocating more memory than needed for extended structs.\nSolution:   Use offsetof() instead of sizeof(). (Dominique Pelle,\n            closes #4786)\n"
    },
    {
      "commit": "761fdf01c6e307c448cec2684f8b315ba6d1f454",
      "tree": "50681151a6b3ef1d9615fb3b881fc75ef257d20e",
      "parents": [
        "1b6d9c4215a56f3dda4df6e05d655c853551ffbd"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 05 23:10:16 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 05 23:10:16 2019 +0200"
      },
      "message": "patch 8.1.1820: using expr-\u003eFuncRef() does not work\n\nProblem:    Using expr-\u003eFuncRef() does not work.\nSolution:   Make FuncRef work as a method.\n"
    },
    {
      "commit": "fcfe1a9b8950b8b211ab3b24d84b17c6847ea43f",
      "tree": "daeeffb4dd96cdd7744597d9623d222404edd8e2",
      "parents": [
        "7a4ea1df2f85e00286c49db1145e3a38b35557f4"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 04 23:04:39 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 04 23:04:39 2019 +0200"
      },
      "message": "patch 8.1.1816: cannot use a user defined function as a method\n\nProblem:    Cannot use a user defined function as a method.\nSolution:   Pass the base as the first argument to the user defined function\n            after \"-\u003e\". (partly by FUJIWARA Takuya)\n"
    },
    {
      "commit": "ac92e25a33c37ec5becbfffeccda136c73b761ac",
      "tree": "64f77cc6dd9427536fd113451b1878490b5298db",
      "parents": [
        "b2129068a55261bea1e293a6a1ce8491a03e7de6"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 03 21:58:38 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 03 21:58:38 2019 +0200"
      },
      "message": "patch 8.1.1803: all builtin functions are global\n\nProblem:    All builtin functions are global.\nSolution:   Add the method call operator -\u003e.  Implemented for a limited number\n            of functions.\n"
    },
    {
      "commit": "c6538bcc1cdd1fb83732f22fdc69bd9bb66f968a",
      "tree": "80b89c210388f6e038ccbdc346f72a31bffd8430",
      "parents": [
        "749fa0af85232be1d44b77a09161f71cdbace62c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 03 18:17:11 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 03 18:17:11 2019 +0200"
      },
      "message": "patch 8.1.1800: function call functions have too many arguments\n\nProblem:    Function call functions have too many arguments.\nSolution:   Pass values in a funcexe_T struct.\n"
    },
    {
      "commit": "ecaa75b4cea329a3902b8565e028b32279b8322b",
      "tree": "3d5754f26f8967b0305359912a70dc6f5308cc1f",
      "parents": [
        "5f32ece459d1f310b1b48b72e07dcd77d3261a76"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 21 23:04:21 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 21 23:04:21 2019 +0200"
      },
      "message": "patch 8.1.1729: heredoc with trim not properly handled in function\n\nProblem:    Heredoc with trim not properly handled in function.\nSolution:   Allow for missing indent. (FUJIWARA Takuya, closes #4713)\n"
    },
    {
      "commit": "660a10ad41c14363326f83451c3c425201923119",
      "tree": "98da3e8bf0b6653517fe6142ba9159109aa3d75f",
      "parents": [
        "1850b14c0d338eb27fb32d0d6e0bfb6944c75c5a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 14 15:48:38 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 14 15:48:38 2019 +0200"
      },
      "message": "patch 8.1.1689: profiling code is spread out\n\nProblem:    Profiling code is spread out.\nSolution:   Move more profiling code to profiler.c. (Yegappan Lakshmanan,\n            closes #4668)\n"
    },
    {
      "commit": "fa55cfc69d2b14761e2a8bd85bc1e0d82df770aa",
      "tree": "3420b78d3aa0d58695f9a660592b655ac2f22fb1",
      "parents": [
        "d5abb4c87727eecb71b0e8ffdda60fc9598272f3"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jul 13 22:59:32 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jul 13 22:59:32 2019 +0200"
      },
      "message": "patch 8.1.1684: profiling functionality is spread out\n\nProblem:    Profiling functionality is spread out.\nSolution:   Put profiling functionality in profiling.c. (Yegappan Lakshmanan,\n            closes #4666)\n"
    },
    {
      "commit": "bc2cfe4672d370330b8698d4d025697a9a6ec569",
      "tree": "143b6302de2fda10d0d0841c88bbfa7852731638",
      "parents": [
        "0d702028feb859e6bde9a0c943d398d86294beb7"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jul 04 14:57:12 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jul 04 14:57:12 2019 +0200"
      },
      "message": "patch 8.1.1625: script line numbers are not exactly right\n\nProblem:    Script line numbers are not exactly right.\nSolution:   Handle heredoc and continuation lines better. (Ozaki Kiichi,\n            closes #4611, closes #4511)\n"
    },
    {
      "commit": "e96a2498f9a2d3e93ac07431f6d4afd77f30afdf",
      "tree": "9395a92f2de9f49abe63c7fc9f5fe26b1396fb47",
      "parents": [
        "2b044ffb5ada77e6fa89779d6532ea9fae3fe029"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jun 25 04:12:16 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jun 25 04:12:16 2019 +0200"
      },
      "message": "patch 8.1.1588: in :let-heredoc line continuation is recognized\n\nProblem:    In :let-heredoc line continuation is recognized.\nSolution:   Do not consume line continuation. (Ozaki Kiichi, closes #4580)\n"
    },
    {
      "commit": "7be3ab25891fec711d8a2d9d242711a9155852b6",
      "tree": "3dab3f000e881253f5ca0961ea13b8abc2a0d39d",
      "parents": [
        "0fcf26ba4ffaaa6a2fb8d879dc24b5f7e1bb6a13"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jun 23 01:46:15 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jun 23 01:46:15 2019 +0200"
      },
      "message": "patch 8.1.1583: set_ref_in_list() only sets ref in items\n\nProblem:    Set_ref_in_list() only sets ref in items.\nSolution:   Rename to set_ref_in_list_items() to avoid confusion.\n"
    },
    {
      "commit": "75a1a9415b9c207de5a29b25c0d1949c6c9c5c61",
      "tree": "470a0887aed4e52e342edbca555e0bec1b85af99",
      "parents": [
        "a3fce62c911c204ae144b55018f6dc9295088850"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 20 03:45:36 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 20 03:45:36 2019 +0200"
      },
      "message": "patch 8.1.1575: callbacks may be garbage collected\n\nProblem:    Callbacks may be garbage collected.\nSolution:   Set reference in callbacks. (Ozaki Kiichi, closes #4564)\n"
    },
    {
      "commit": "6e5000d493b4f385f901eb97f3ce0c8088373403",
      "tree": "b891636c8899ba15790bf631a2ac486efe3bda6d",
      "parents": [
        "ad24a71e2248e839c875c0bc0e6ad3dbeea16998"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jun 17 21:18:41 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jun 17 21:18:41 2019 +0200"
      },
      "message": "patch 8.1.1563: crash when using closures\n\nProblem:    Crash when using closures.\nSolution:   Set reference in varlist of funccal when running the garbage\n            collector. (Ozaki Kiichi, closes #4554, closes #4547)\n"
    },
    {
      "commit": "c07f67ad0e9c48a07d49f2d67eb63e183a22386a",
      "tree": "a82a0eee25fe9c4f4c61cc749c85e2b771cbeb62",
      "parents": [
        "75ee544f99ca66be8105570c6309d95435ad30d1"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 06 19:03:17 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 06 19:03:17 2019 +0200"
      },
      "message": "patch 8.1.1485: double free when garbage_collect() is used in autocommand\n\nProblem:    Double free when garbage_collect() is used in autocommand.\nSolution:   Have garbage collection also set the copyID in funccal_stack.\n"
    },
    {
      "commit": "3a97bb3f0f8bd118ae23f1c97e55d84ff42eef20",
      "tree": "b7013f43afaaba6ba20b356a7a80fe55add24f1a",
      "parents": [
        "7dd64a3e57d296fdee3b3ffe6d938f634b59848c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 01 13:28:35 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 01 13:28:35 2019 +0200"
      },
      "message": "patch 8.1.1437: code to handle callbacks is duplicated\n\nProblem:    Code to handle callbacks is duplicated.\nSolution:   Add callback_T and functions to deal with it.\n"
    },
    {
      "commit": "c799fe206e61f2e2c1231bc46cbe4bb354f3da69",
      "tree": "68b3d2a8bb82519e29fc95f317d2ee02b07f95fa",
      "parents": [
        "b58a4b938c4bc7e0499700859bd7abba9acc5b11"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 28 23:08:19 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 28 23:08:19 2019 +0200"
      },
      "message": "patch 8.1.1414: alloc() returning \"char_u *\" causes a lot of type casts\n\nProblem:    Alloc() returning \"char_u *\" causes a lot of type casts.\nSolution:   Have it return \"void *\". (Mike Williams)  Define ALLOC_ONE() to\n            check the simple allocations.\n"
    },
    {
      "commit": "18a4ba29aeccb9841d5bfdd2eaaffdfae2f15ced",
      "tree": "408ad339f6b34876d2fa481ac61568c7739b1160",
      "parents": [
        "71de720c2c117137185a6fc233b35aab37f0d4bc"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 19:39:03 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 19:39:03 2019 +0200"
      },
      "message": "patch 8.1.1386: unessesary type casts for lalloc()\n\nProblem:    Unessesary type casts for lalloc().\nSolution:   Remove type casts.  Change lalloc(size, TRUE) to alloc(size).\n"
    },
    {
      "commit": "964b3746b9c81e65887e2ac9a335f181db2bb592",
      "tree": "9afaaac41a1c4f71b359fd6706b88df00e22e7a1",
      "parents": [
        "d33a764123a8aedb20cd84aeff3b94810ee67c4c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 18:54:09 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 18:54:09 2019 +0200"
      },
      "message": "patch 8.1.1384: using \"int\" for alloc() often results in compiler warnings\n\nProblem:    Using \"int\" for alloc() often results in compiler warnings.\nSolution:   Use \"size_t\" and remove type casts.  Remove alloc_check(), Vim\n            only works with 32 bit ints anyway.\n"
    },
    {
      "commit": "8471e57026714c5a0faf89288ceef5231fb88d4f",
      "tree": "b130d4fb4a56167e3ed26447fa79aec6a08103a5",
      "parents": [
        "16e9b85113e0b354ece1cb4f5fcc7866850f3685"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun May 19 21:37:18 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun May 19 21:37:18 2019 +0200"
      },
      "message": "patch 8.1.1356: some text in heredoc assignment ends the text\n\nProblem:    Some text in heredoc assignment ends the text. (Ozaki Kiichi)\nSolution:   Recognize \"let v \u003d\u003c\u003c\" and skip until the end.\n"
    },
    {
      "commit": "6ed8819822994512c160006bd1204aa11ae3c494",
      "tree": "171487d99e5cf0a6c7e5333159d98c821064e93e",
      "parents": [
        "ec28d1516eb8bb5dcaa42de145953a6d49aebb6f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 18:37:44 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 18:37:44 2019 +0200"
      },
      "message": "patch 8.1.1319: computing function length name in many places\n\nProblem:    Computing function length name in many places.\nSolution:   compute name length in call_func().\n"
    },
    {
      "commit": "42ae78cfff171fbd7412306083fe200245d7a7a6",
      "tree": "20ae99506bc9dfa20816f2c3137e0dd2a9ff09a6",
      "parents": [
        "6b528fa062a5ac6bb5d8bd3abc26f32c65691d00"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu May 09 21:08:58 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu May 09 21:08:58 2019 +0200"
      },
      "message": "patch 8.1.1310: named function arguments are never optional\n\nProblem:    Named function arguments are never optional.\nSolution:   Support optional function arguments with a default value. (Andy\n            Massimino, closes #3952)\n"
    },
    {
      "commit": "eae1b91fea74842000fc055afc74fe2e7934c6ee",
      "tree": "71fe047a88c21932a4c919c47b5d19847ee65471",
      "parents": [
        "691ddeefb545d8488e5a495af61caba2e57b3de9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu May 09 15:12:55 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu May 09 15:12:55 2019 +0200"
      },
      "message": "patch 8.1.1306: Borland support is outdated and doesn\u0027t work\n\nProblem:    Borland support is outdated and doesn\u0027t work.\nSolution:   Remove Borland support, there are other (free) compilers\n            available. (Thomas Dziedzic, Ken Takata, closes #4364)\n"
    },
    {
      "commit": "ad3ec76bb8030b9a1d3f0a49c374d0de2383b977",
      "tree": "6cc66e85aa0b54ce4ee2e9fcd47987963f022c57",
      "parents": [
        "037c54f261818439755d56e318da068f97997fb5"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 21 00:00:13 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 21 00:00:13 2019 +0200"
      },
      "message": "patch 8.1.1194: typos and small problems in source files\n\nProblem:    Typos and small problems in source files.\nSolution:   Small fixes.\n"
    },
    {
      "commit": "209b8e3e3bf7a4a3d102134124120f6c7f57d560",
      "tree": "33987c009f69516962abe91c03672c0a42309c50",
      "parents": [
        "4aa47b28f453b40d3b93ef209a3447c62b6f855b"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Mar 14 13:43:24 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Mar 14 13:43:24 2019 +0100"
      },
      "message": "patch 8.1.1007: using closure may consume a lot of memory\n\nProblem:    Using closure may consume a lot of memory.\nSolution:   unreference items that are no longer needed. Add a test. (Ozaki\n            Kiichi, closes #3961)\n"
    },
    {
      "commit": "445e71c5ee06015064cf0642cac8190cfe8fbc59",
      "tree": "c5964dc9d9a42a312859144e86422b5ba9ecb6d8",
      "parents": [
        "b999ba2778b6c02fdd100e498a9ba5b2e7036f7d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Feb 14 13:43:36 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Feb 14 13:43:36 2019 +0100"
      },
      "message": "patch 8.1.0917: double free when running out of memory\n\nProblem:    Double free when running out of memory.\nSolution:   Remove one free. (Ken Takata, closes #3955)\n"
    },
    {
      "commit": "05c00c038bc16e862e17f9e5c8d5a72af6cf7788",
      "tree": "4c7015c7adc01116b60c8a6b19f71d7335f38b93",
      "parents": [
        "5a6698169d10833abad88c98e5a332ddde5d110d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 11 22:00:11 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 11 22:00:11 2019 +0100"
      },
      "message": "patch 8.1.0897: can modify a:000 when using a reference\n\nProblem:    Can modify a:000 when using a reference.\nSolution:   Make check for locked variable stricter. (Ozaki Kiichi,\n            closes #3930)\n"
    },
    {
      "commit": "31b816042fca879b11965ddd75287732563ba698",
      "tree": "44495d2a1b5b7167e29b87be6bb96ad6e71549e4",
      "parents": [
        "9474716d39764ac5642e55b5548580cf53bd9bed"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 10 22:14:27 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 10 22:14:27 2019 +0100"
      },
      "message": "patch 8.1.0888: the a: dict is not immutable as documented\n\nProblem:    The a: dict is not immutable as documented.\nSolution:   Make the a:dict immutable, add a test. (Ozaki Kiichi, Yasuhiro\n            Matsumoto, closes #3929)\n"
    },
    {
      "commit": "889da2f2438c8168f9a25dc776360b81109bad44",
      "tree": "af2570de1da88ea3d01c90af69c894e8ffa07dd9",
      "parents": [
        "65951258d65b71581aeb117dbb7defa8a87ce38f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 02 14:02:30 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 02 14:02:30 2019 +0100"
      },
      "message": "patch 8.1.0868: crash if triggering garbage collector after a function call\n\nProblem:    Crash if triggering garbage collector after a function call.\n            (Michael Henry)\nSolution:   Don\u0027t call the garbage collector right away, do it later.\n            (closes #3894)\n"
    },
    {
      "commit": "29ddebef4038d2d2b3bc9d8d3b0109f4046d6fbf",
      "tree": "66144403e05268df8594b01d0298db4f570ed60f",
      "parents": [
        "3e460fd8b72db905fbf9f01b00371384ffc415b8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 26 17:28:26 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 26 17:28:26 2019 +0100"
      },
      "message": "patch 8.1.0826: too many #ifdefs\n\nProblem:    Too many #ifdefs.\nSolution:   Graduate FEAT_VIRTUALEDIT.  Adds about 10Kbyte to the code.\n"
    },
    {
      "commit": "4456ab527a6a5faae9287f3bd2e52cc18966cfb0",
      "tree": "4b780e00f74b4b12aa61a18beb093908a3264543",
      "parents": [
        "cfc15237ab88ecb78b12030f6e04b87618b56124"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 23 23:00:30 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 23 23:00:30 2019 +0100"
      },
      "message": "patch 8.1.0800: may use a lot of memory when a function refers itself\n\nProblem:    May use a lot of memory when a function creates a cyclic\n            reference.\nSolution:   After saving a funccal many times, invoke the garbage collector.\n            (closes #3835)\n"
    },
    {
      "commit": "113e10721f42fc2500b63fe95193f8665658a90c",
      "tree": "4395acb733cc8d7a798df8f4a91c5c1afa084841",
      "parents": [
        "1f20daa1d784e2d8ae13db5b9c8abbb648dd2a03"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 20 15:30:40 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 20 15:30:40 2019 +0100"
      },
      "message": "patch 8.1.0785: depending on the configuration some functions are unused\n\nProblem:    Depending on the configuration some functions are unused.\nSolution:   Add more #ifdefs, remove unused functions. (Dominique Pelle,\n            closes #3822)\n"
    },
    {
      "commit": "32526b3c1846025f0e655f41efd4e5428da16b6c",
      "tree": "e9f3ea5e0daaada049e905b5f1b38b4a45511f3d",
      "parents": [
        "d383c92ec1d14ffd5c3802f0ffd763e91d547fa8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 19 17:43:09 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 19 17:43:09 2019 +0100"
      },
      "message": "patch 8.1.0779: argument for message functions is inconsistent\n\nProblem:    Argument for message functions is inconsistent.\nSolution:   Make first argument to msg() \"char *\".\n"
    },
    {
      "commit": "f9e3e09fdc93be9f0d47afbc6c7df1188c2a5a0d",
      "tree": "a6b07005c19279a4f5d01be14f14861c2657fa95",
      "parents": [
        "05500ece6282407f9f7227aaf564e24147326863"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 13 23:38:42 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jan 13 23:38:42 2019 +0100"
      },
      "message": "patch 8.1.0743: giving error messages is not flexible\n\nProblem:    Giving error messages is not flexible.\nSolution:   Add semsg().  Change argument from \"char_u *\" to \"char *\", also\n            for msg() and get rid of most MSG macros. (Ozaki Kiichi, closes\n            #3302)  Also make emsg() accept a \"char *\" argument.  Get rid of\n            an enormous number of type casts.\n"
    },
    {
      "commit": "98aefe7c3250bb5d4153b994f878594d1745424e",
      "tree": "262ae31c2dbf4ac0353f5564a2419a79267fa3ae",
      "parents": [
        "5c5697f29829fc3b21fc5452fe8f239f6a4cb8e1"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 13 22:20:09 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 13 22:20:09 2018 +0100"
      },
      "message": "patch 8.1.0579: cannot attach properties to text\n\nProblem:    Cannot attach properties to text.\nSolution:   First part of adding text properties.\n"
    },
    {
      "commit": "ded5f1bed7ff2d138b3ee0f9610d17290b62692d",
      "tree": "54727bd70279df4fadc4b8f4701577ac33282ef5",
      "parents": [
        "1bbb61948342b5cf6e363629f145c65eb455c388"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 10 17:33:29 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 10 17:33:29 2018 +0100"
      },
      "message": "patch 8.1.0515: reloading a script gives errors for existing functions\n\nProblem:    Reloading a script gives errors for existing functions.\nSolution:   Allow redefining a function once when reloading a script.\n"
    },
    {
      "commit": "9e353b5265bd7fa103caf4e5a9b3c99f344f548e",
      "tree": "f160112f470bdd7d72e902ae6d185ce442e27cc3",
      "parents": [
        "ba3ff539303c7bb6e46a6802dce3c7b2e55284e0"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Nov 04 23:39:38 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Nov 04 23:39:38 2018 +0100"
      },
      "message": "patch 8.1.0511: ml_get error when calling a function with a range\n\nProblem:    ml_get error when calling a function with a range.\nSolution:   Don\u0027t position the cursor after the last line.\n"
    },
    {
      "commit": "f86db78fed78541cefdb706e4779ce5ae9ca7820",
      "tree": "89b16ab5d0a2847b75bbe3c4ae782a0a03d6626f",
      "parents": [
        "babfcf54ae9bf9570eddf4958a553635cd589e21"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 25 13:31:37 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 25 13:31:37 2018 +0200"
      },
      "message": "patch 8.1.0495: :filter only supports some commands\n\nProblem:    :filter only supports some commands.\nSolution:   Add :filter support for more commands. (Marcin Szamotulski,\n            closes #2856)\n"
    },
    {
      "commit": "27e80c885bcb5c5cf6a6462d71d6c81b06ba2451",
      "tree": "5f23ab7eeb2ddc833a739d7c0ac62c0dd3a2e863",
      "parents": [
        "a16bc5450359294f9d8585da9f74e5082108b7fb"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Oct 14 21:41:01 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Oct 14 21:41:01 2018 +0200"
      },
      "message": "patch 8.1.0475: memory not freed on exit when quit in autocmd\n\nProblem:    Memory not freed on exit when quit in autocmd.\nSolution:   Remember funccal stack when executing autocmd.\n"
    },
    {
      "commit": "4c7b08f6409349cf5324a26f7523c438590550ef",
      "tree": "d742059c88721a93968729981fc512d8435bbaa3",
      "parents": [
        "e797abf3c75358ebc0b31d6e076972daf889e06e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Sep 10 22:03:40 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Sep 10 22:03:40 2018 +0200"
      },
      "message": "patch 8.1.0365: function profile doesn\u0027t specify where it was defined\n\nProblem:    Function profile doesn\u0027t specify where it was defined.\nSolution:   Show the script name and line number.\n"
    },
    {
      "commit": "f29c1c6aa3f365c025890fab5fb9efbe88eb1761",
      "tree": "3cd43ee75a7e0fbdce4902426512ae804b1c7ff0",
      "parents": [
        "6b0b83f768cf536b34ce4d3f2de6bf62324229aa"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Sep 10 21:05:02 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Sep 10 21:05:02 2018 +0200"
      },
      "message": "patch 8.1.0362: cannot get the script line number when executing a function\n\nProblem:    Cannot get the script line number when executing a function.\nSolution:   Store the line number besides the script ID. (Ozaki Kiichi,\n            closes #3362)  Also display the line number with \":verbose set\".\n"
    },
    {
      "commit": "79c2ad50b8069bbb3281bcabe412bd6641756724",
      "tree": "61b383cdc2fb979a3a59c6cf95effb8643ae64bf",
      "parents": [
        "92d147be959e689f8f58fd5d138a31835e160289"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 29 17:40:43 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 29 17:40:43 2018 +0200"
      },
      "message": "patch 8.1.0229: crash when dumping profiling data\n\nProblem:    Crash when dumping profiling data.\nSolution:   Reset flag indicating that initialization was done.\n"
    },
    {
      "commit": "93343725b5fa1cf580a24302455980faacae8ee2",
      "tree": "0467626f476965cd0f6042fec8745f3910e42d9b",
      "parents": [
        "18085fae7482906f8e94ecc7386ecf6a02dc407d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 10 19:39:18 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 10 19:39:18 2018 +0200"
      },
      "message": "patch 8.1.0177: defining function in sandbox is inconsistent\n\nProblem:    Defining function in sandbox is inconsistent, cannot use :function\n            but can define a lambda.\nSolution:   Allow defining a function in the sandbox, but also use the sandbox\n            when executing it. (closes #3182)\n"
    },
    {
      "commit": "c89d4b35300b98cf68b14c89c8e1add51bd857e3",
      "tree": "467d753ac74270da629887f484f797509696d302",
      "parents": [
        "e0be167a805fd547c25ec1ec97fd4c7f13046236"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 08 17:19:02 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 08 17:19:02 2018 +0200"
      },
      "message": "patch 8.1.0167: lock flag in new dictitem is reset in many places\n\nProblem:    Lock flag in new dictitem is reset in many places.\nSolution:   Always reset the lock flag.\n"
    },
    {
      "commit": "ad6480961080f80a455b2394f27b02935a2ded52",
      "tree": "d857cca5de9f29740f9604310272e88f2ea0ef1b",
      "parents": [
        "668324ef4fd59980dc57b2eefe57eddc57c7b920"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 30 18:28:03 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 30 18:28:03 2018 +0200"
      },
      "message": "patch 8.1.0130: \":profdel func\" does not work if func was called already\n\nProblem:    \":profdel func\" does not work if func was called already.\n            (Dominique Pelle)\nSolution:   Reset uf_profiling and add a flag to indicate initialization was\n            done.\n"
    },
    {
      "commit": "b4518563c73460150344a57879bf5b22cb8b1c77",
      "tree": "bd32958994688a8d0116ce8961dee863c4d282c1",
      "parents": [
        "bdb657924d73c98b0ab28411749571e893b699a9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 22 18:31:35 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 22 18:31:35 2018 +0200"
      },
      "message": "patch 8.1.0019: error when defining a Lambda with index of a function result\n\nProblem:    Error when defining a Lambda with index of a function result.\nSolution:   When not evaluating an expression and skipping a function call,\n            set the return value to VAR_UNKNOWN.\n"
    },
    {
      "commit": "f2bd8ef2b4507d02c6043affff8f7e85e3414d5f",
      "tree": "f14cb8e7ff09975920f3a813d7de4851a2972661",
      "parents": [
        "3f54fd319f6641b4bed478bcc90cdb39ede68e31"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 04 18:08:14 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 04 18:08:14 2018 +0100"
      },
      "message": "patch 8.0.1564: too many #ifdefs\n\nProblem:    Too many #ifdefs.\nSolution:   Graduate the +autocmd feature. Takes away 450 #ifdefs and\n            increases code size of tiny Vim by only 40 Kbyte.\n"
    },
    {
      "commit": "c6f9f739d32084923c3031cbf6f581f8c8bf7fd2",
      "tree": "4f20ee6cbf98f72b164337f14251020ecc07d410",
      "parents": [
        "c33ecb291518044f661c5fc10b704fc718321794"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 11 19:06:26 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Feb 11 19:06:26 2018 +0100"
      },
      "message": "patch 8.0.1505: debugger can\u0027t break on a condition\n\nProblem:    Debugger can\u0027t break on a condition. (Charles Campbell)\nSolution:   Add \":breakadd expr\". (Christian Brabandt, closes #859)\n"
    },
    {
      "commit": "d23a823669d93fb2a570a039173eefe4856ac806",
      "tree": "617130258eae70e3bd7ef7b6da9c494ffee7b572",
      "parents": [
        "42443c7d7fecc3a2a72154bb6139b028438617c2"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 10 18:45:26 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 10 18:45:26 2018 +0100"
      },
      "message": "patch 8.0.1496: clearing a pointer takes two lines\n\nProblem:    Clearing a pointer takes two lines.\nSolution:   Add VIM_CLEAR() and replace vim_clear(). (Hirohito Higashi,\n            closes #2629)\n"
    },
    {
      "commit": "fabaf753e26df5a89a854673d14c15a1fa6b321a",
      "tree": "511e8530aaaa84f9fc2bb08459f156deb2b528e7",
      "parents": [
        "45a0000d5c4a5ea934d5a16a2ab5bbcf307623ac"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Dec 23 17:26:11 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Dec 23 17:26:11 2017 +0100"
      },
      "message": "patch 8.0.1423: error in return not caught by try/catch\n\nProblem:    Error in return not caught by try/catch.\nSolution:   Call update_force_abort(). (Yasuhiro Matsomoto, closes #2483)\n"
    },
    {
      "commit": "3388d334572f9d65a603d09d75e363805d96c5d9",
      "tree": "181aa5869c33377419fccbcc140801cfeeeffc23",
      "parents": [
        "6e65d594aa33be11f6074f26e9ff81b52504c62b"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 07 22:23:04 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 07 22:23:04 2017 +0100"
      },
      "message": "patch 8.0.1378: autoload script sources itself when defining function\n\nProblem:    Autoload script sources itself when defining function.\nSolution:   Pass TFN_NO_AUTOLOAD to trans_function_name(). (Yasuhiro\n            Matsumoto, closes #2423)\n"
    },
    {
      "commit": "6e65d594aa33be11f6074f26e9ff81b52504c62b",
      "tree": "a3c542e974c6c576792e6b3c7541907926e1b445",
      "parents": [
        "23c1b2b018c8121ca5fcc247e37966428bf8ca66"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 07 22:11:27 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 07 22:11:27 2017 +0100"
      },
      "message": "patch 8.0.1377: cannot call a dict function in autoloaded dict\n\nProblem:    Cannot call a dict function in autoloaded dict.\nSolution:   Call get_lval() passing the read-only flag.\n"
    },
    {
      "commit": "53564f7c1a2998d92568e07fff1f2a4c1cecb646",
      "tree": "161f99431749a8300e546b67d7c750f934522a4c",
      "parents": [
        "5fe691240bff11e9618252486147f0156e875666"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 24 14:48:11 2017 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 24 14:48:11 2017 +0200"
      },
      "message": "patch 8.0.0667: memory access error when command follows :endfunc\n\nProblem:    Memory access error when command follows :endfunction. (Nikolai\n            Pavlov)\nSolution:   Make memory handling in :function straightforward. (closes #1793)\n"
    },
    {
      "commit": "f8be461d0284110b321be748fea206d4169b98bb",
      "tree": "a066ff1a758151312ec2d7af5bcff2edc869be3a",
      "parents": [
        "4670490673ed98502a09b74fbabe785b47e3d289"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jun 23 20:52:40 2017 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jun 23 20:52:40 2017 +0200"
      },
      "message": "patch 8.0.0663: unexpected error message only when \u0027verbose\u0027 is set\n\nProblem:    Giving an error message only when \u0027verbose\u0027 set is unexpected.\nSolution:   Give a warning message instead.\n"
    },
    {
      "commit": "d6abcd154cdc6a8dd4b7c6ccad37617ea8a1b4aa",
      "tree": "746839083abe888f4424f18c38ac634eec06981b",
      "parents": [
        "663bb2331626944cea156374858131fcd323b9e9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 22 19:15:24 2017 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 22 19:15:24 2017 +0200"
      },
      "message": "patch 8.0.0655: not easy to make sure a function does not exist\n\nProblem:    Not easy to make sure a function does not exist.\nSolution:   Add ! as an optional argument to :delfunc.\n"
    },
    {
      "commit": "663bb2331626944cea156374858131fcd323b9e9",
      "tree": "a6cc8157e602bbfc3903dec711f82db3bc8dcb56",
      "parents": [
        "c768a208ca8e0e0fec900c18d5d9a593357ad793"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 22 19:12:10 2017 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 22 19:12:10 2017 +0200"
      },
      "message": "patch 8.0.0654: no warning for text after :endfunction\n\nProblem:    Text found after :endfunction is silently ignored.\nSolution:   Give a warning if \u0027verbose\u0027 is set.  When | or \\n are used,\n            execute the text as a command.\n"
    },
    {
      "commit": "d4863aa99e0527e9505c79cbeafc68a6832200bf",
      "tree": "2ea60d3eb3f29982b5188d86c7df63665d278d72",
      "parents": [
        "52604f2454e5369f861d3ce34764f74a0999c773"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Apr 07 19:50:12 2017 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Apr 07 19:50:12 2017 +0200"
      },
      "message": "patch 8.0.0548: saving the redo buffer only works one time\n\nProblem:    Saving the redo buffer only works one time, resulting in the \".\"\n            command not working well for a function call inside another\n            function call. (Ingo Karkat)\nSolution:   Save the redo buffer at every user function call. (closes #1619)\n"
    },
    {
      "commit": "6914c64ee58ce68f31fb8a8793293a9b3f2f6240",
      "tree": "f9cedc4d5a8843dcedfd2395dee2f3f040f77f3e",
      "parents": [
        "33ccb24cf7891911561adccf9f2af8859e581198"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Apr 01 21:21:30 2017 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Apr 01 21:21:30 2017 +0200"
      },
      "message": "patch 8.0.0535: memory leak when exiting from within a user function\n\nProblem:    Memory leak when exiting from within a user function.\nSolution:   Clear the function call stack on exit.\n"
    },
    {
      "commit": "8820b48654b62472821d9b155fe03ab7ac13a05c",
      "tree": "7783a4068aee8368661722d5171d33a4d410d6bb",
      "parents": [
        "40ebc0afda8d8e478d2090133ed6a3cd3d8da3ec"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Mar 16 17:23:31 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Mar 16 17:23:31 2017 +0100"
      },
      "message": "patch 8.0.0466: still macros that should be all-caps\n\nProblem:    There are still a few macros that should be all-caps.\nSolution:   Make a few more macros all-caps.\n"
    },
    {
      "commit": "1c46544412382db8b3203d6c78e550df885540bd",
      "tree": "d4dc51020d3ebdbee4548b0d5628221f921af2f3",
      "parents": [
        "91acfffc1e6c0d8c2abfb186a0e79a5bf19c3f3f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 12 20:10:05 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 12 20:10:05 2017 +0100"
      },
      "message": "patch 8.0.0452: some macros are in lower case\n\nProblem:    Some macros are in lower case.\nSolution:   Make a few more macros upper case.\n"
    },
    {
      "commit": "03ff9bcbc968f7d306e4a4e334e226fdde62ca82",
      "tree": "984162dfb8d3ef4e8535a62a974067979d743836",
      "parents": [
        "fd8983b09c64d9bfa8a4bdc16d72c55fbb22b4dc"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Feb 02 22:59:27 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Feb 02 22:59:27 2017 +0100"
      },
      "message": "patch 8.0.0297: double free on exit when using a closure\n\nProblem:    Double free on exit when using a closure. (James McCoy)\nSolution:   Split free_al_functions in two parts. (closes #1428)\n"
    },
    {
      "commit": "c7d9eacefa319e5ac3b3b2334fda5acb126b8716",
      "tree": "1ba3f11d8a803e7d20c804050f43d2427ff88606",
      "parents": [
        "c10f0e7cb0f35eea489b038e56c87b818eee975b"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 01 20:26:51 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 01 20:26:51 2017 +0100"
      },
      "message": "patch 8.0.0287: debug mode: cannot access function arguments\n\nProblem:    Cannot access the arguments of the current function in debug mode.\n            (Luc Hermitte)\nSolution:   use get_funccal(). (Lemonboy, closes #1432, closes #1352)\n"
    },
    {
      "commit": "f42dd3c3901ea0ba38e67a616aea9953cae81b8d",
      "tree": "3626ca40161dbfaa5e72a4dbeaa46b24480ddc8c",
      "parents": [
        "0c0590d9827cb07a33c1552cb3558b94bddcb4dc"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 28 16:06:38 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 28 16:06:38 2017 +0100"
      },
      "message": "patch 8.0.0251: not easy to select Python 2 or 3\n\nProblem:    It is not so easy to write a script that works with both Python 2\n            and Python 3, even when the Python code works with both.\nSolution:   Add \u0027pyxversion\u0027, :pyx, etc. (Marc Weber, Ken Takata)\n"
    },
    {
      "commit": "70bcd7336f9f19304f32c52a86ed5b4b3de852c2",
      "tree": "c86ac70eb20a379b25b68ddab914393c25e04fa6",
      "parents": [
        "972c3b8f1b50e2f887a397c324af99eb354aad0b"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 22:20:54 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 12 22:20:54 2017 +0100"
      },
      "message": "patch 8.0.0176: cannot use :change inside a function definition\n\nProblem:    Using :change in between :function and :endfunction fails.\nSolution:   Recognize :change inside a function. (ichizok, closes #1374)\n"
    },
    {
      "commit": "95f096030ed1a8afea028f2ea295d6f6a70f466f",
      "tree": "9b1dcdbbe678ad1a3152f5cfd70a136efce6bc92",
      "parents": [
        "459ca563128f2edb7e3bb190090bbb755a56dd55"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Nov 10 20:01:45 2016 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Nov 10 20:01:45 2016 +0100"
      },
      "message": "patch 8.0.0074\nProblem:    Cannot make Vim fail on an internal error.\nSolution:   Add IEMSG() and IEMSG2(). (Domenique Pelle)  Avoid reporting an\n            internal error without mentioning where.\n"
    },
    {
      "commit": "edf3f97ae2af024708ebb4ac614227327033ca47",
      "tree": "82fed9ebfc85a69d3cff613f9dab11c8750fad8b",
      "parents": [
        "965ed14973fd3f1b2aace7bae4d4722b71ca04f9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 29 22:49:24 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 29 22:49:24 2016 +0200"
      },
      "message": "patch 7.4.2293\nProblem:    Modelines in source code are inconsistant.\nSolution:   Use the same line in most files.  Add \u0027noet\u0027.  (Naruhiko Nishino)\n"
    },
    {
      "commit": "ba2099034f92a2814494f37bddb0c57d034401b4",
      "tree": "523a827eec2dea1e57deae617b196a78a46fbc55",
      "parents": [
        "358308dd99abdd56c6540339e505585d8db7bdfe"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 24 22:06:38 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 24 22:06:38 2016 +0200"
      },
      "message": "patch 7.4.2249\nProblem:    Missing colon in error message.\nSolution:   Add the colon. (Dominique Pelle)\n"
    },
    {
      "commit": "c257487035f83aabe1c7e07f0552309e98f1bcb1",
      "tree": "a2ab08ae7d067a1c5eba06a677f8480c5a166f6b",
      "parents": [
        "91c5262b19fd2e558fe87b78c7767c7c5a270be8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Aug 11 22:51:05 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Aug 11 22:51:05 2016 +0200"
      },
      "message": "patch 7.4.2197\nProblem:    All functions are freed on exit, which may hide leaks.\nSolution:   Only free named functions, not reference counted ones.\n"
    },
    {
      "commit": "bc7ce675b2d1c9fb58c067eff3edd59abc30aba4",
      "tree": "df3fc4f3d1467680240f95d5cf51d65eae88cb86",
      "parents": [
        "8dd3a43d75550e9b5736066124c97697564f769e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 22:49:22 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 22:49:22 2016 +0200"
      },
      "message": "patch 7.4.2143\nProblem:    A funccal is garbage collected while it can still be used.\nSolution:   Set copyID in all referenced functions.  Do not list lambda\n            functions with \":function\".\n"
    },
    {
      "commit": "8dd3a43d75550e9b5736066124c97697564f769e",
      "tree": "5768a06605c7ffaacfbb8aa385060cc7be223fec",
      "parents": [
        "ba96e9af388804364425185b47eed14988302865"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 20:46:25 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 20:46:25 2016 +0200"
      },
      "message": "patch 7.4.2142\nProblem:    Leaking memory when redefining a function.\nSolution:   Don\u0027t increment the function reference count when it\u0027s found by\n            name. Don\u0027t remove the wrong function from the hashtab.  More\n            reference counting fixes.\n"
    },
    {
      "commit": "ba96e9af388804364425185b47eed14988302865",
      "tree": "abe4a6a6510450ffa99dfdf47e23f94fa80bb5e9",
      "parents": [
        "acadbeabe1dafb314ae5fdba0432f313e55bb3a2"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 17:10:20 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 17:10:20 2016 +0200"
      },
      "message": "patch 7.4.2141\nProblem:    Coverity reports bogus NULL check.\nSolution:   When checking for a variable in the funccal scope don\u0027t pass the\n            varname.\n"
    },
    {
      "commit": "0588d4f9d2741f35a271400a37fddbdd72d84219",
      "tree": "b74126a783b0d3f644d065640fa66751a6ed3e2a",
      "parents": [
        "2d3d60a7d4b410668dfc427120205ccf88789db4"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 16:29:47 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 16:29:47 2016 +0200"
      },
      "message": "patch 7.4.2139\nProblem:    :delfunction causes illegal memory access.\nSolution:   Correct logic when deciding to free a function.\n"
    },
    {
      "commit": "437bafe4c8a83ed71ee006eda7f54b65a90f0d4c",
      "tree": "dac9426b1bafe44f050bbb13c027de31117c089d",
      "parents": [
        "580164481924ed8611eb79f0247a0eb1ca0b3b9a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 15:40:54 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Aug 01 15:40:54 2016 +0200"
      },
      "message": "patch 7.4.2137\nProblem:    Using function() with a name will find another function when it is\n            redefined.\nSolution:   Add funcref().  Refer to lambda using a partial.  Fix several\n            reference counting issues.\n"
    },
    {
      "commit": "580164481924ed8611eb79f0247a0eb1ca0b3b9a",
      "tree": "e50e7203296df3899b91e2e1ceec01d115f4798e",
      "parents": [
        "89eaa4185efacab253b23a182c1c8a7bbf1096c9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 31 18:30:22 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 31 18:30:22 2016 +0200"
      },
      "message": "patch 7.4.2136\nProblem:    Closure function fails.\nSolution:   Don\u0027t reset uf_scoped when it points to another funccal.\n"
    },
    {
      "commit": "b54c3ff3174dbb5dfbfcabdf95200b047beaa644",
      "tree": "a230032c07f9373c65ca64e4b9c237e70b4d6a54",
      "parents": [
        "fc1f2015e833e69b89b994faf4b2c4fc1e09220f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 31 14:11:58 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 31 14:11:58 2016 +0200"
      },
      "message": "patch 7.4.2134\nProblem:    No error for using function() badly.\nSolution:   Check for passing wrong function name. (Ken Takata)\n"
    },
    {
      "commit": "10ce39a0d52272a3dfff2feb8c631529f29e6740",
      "tree": "4e87632c06cd48950bf777c27be36cb309a8fcb4",
      "parents": [
        "1e96d9bf98f9ab84d5af7f98d6a961d91b17364f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jul 29 22:37:06 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jul 29 22:37:06 2016 +0200"
      },
      "message": "patch 7.4.2120\nProblem:    User defined functions can\u0027t be a closure.\nSolution:   Add the \"closure\" argument. Allow using :unlet on a bound\n            variable. (Yasuhiro Matsumoto, Ken Takata)\n"
    },
    {
      "commit": "1e96d9bf98f9ab84d5af7f98d6a961d91b17364f",
      "tree": "dd81c13eb8896eb9b5c3a5f311eefdd39829c907",
      "parents": [
        "83a2a80d6f699ad9a236431170038698e355c025"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jul 29 22:15:09 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jul 29 22:15:09 2016 +0200"
      },
      "message": "patch 7.4.2119\nProblem:    Closures are not supported.\nSolution:   Capture variables in lambdas from the outer scope. (Yasuhiro\n            Matsumoto, Ken Takata)\n"
    },
    {
      "commit": "97baee80f0906ee2f651ee1215ec033e84f866ad",
      "tree": "7560f0e18fd45c54b9b2a7cc189c2e58d096e4b2",
      "parents": [
        "e99e84497b89e5f91df519790802770920ecf4fe"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 26 20:46:08 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 26 20:46:08 2016 +0200"
      },
      "message": "patch 7.4.2104\nProblem:    Code duplication when unreferencing a function.\nSolution:   De-duplicate.\n"
    },
    {
      "commit": "b49edc11a1872fa99befa9a4a8ea6c8537868038",
      "tree": "a2ab0cd4f0d8616267de35c6c0a1e1d80ec1b5d1",
      "parents": [
        "61c04493b00f85d0b97436260a9ef9ab82143b78"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jul 23 15:47:34 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jul 23 15:47:34 2016 +0200"
      },
      "message": "patch 7.4.2096\nProblem:    Lambda functions show up with completion.\nSolution:   Don\u0027t show lambda functions. (Ken Takata)\n"
    },
    {
      "commit": "df48fb456fb6bf63d94cad9b302ff01d8ee8d311",
      "tree": "e40ac7facad1b205bf5990a535c8c1686fbeb05b",
      "parents": [
        "36edf0685c8b55ee3ce709058d83ada8027fec1e"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jul 22 21:50:18 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jul 22 21:50:18 2016 +0200"
      },
      "message": "patch 7.4.2090\nProblem:    Using submatch() in a lambda passed to substitute() is verbose.\nSolution:   Use a static list and pass it as an optional argument to the\n            function.  Fix memory leak.\n"
    },
    {
      "commit": "19df5cc04de93519145901d9cbc78c44d0c47c5d",
      "tree": "5290dd9e2e1c09cd992112f2812a91abffbf7b50",
      "parents": [
        "397eadbe25370394e0dc3cb18766533a15b8d1c0"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 20 22:11:06 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 20 22:11:06 2016 +0200"
      },
      "message": "patch 7.4.2083\nProblem:    Coverity complains about not restoring a value.\nSolution:   Restore the value, although it\u0027s not really needed.  Change return\n            to jump to cleanup, might leak memory.\n"
    },
    {
      "commit": "4f0383bc3fe5af0229fb66b53fe94329af783eff",
      "tree": "de88ceab4dd9b3fc4829ae138049cce12d833b82",
      "parents": [
        "c917da4b3e8801a255dbefea8e4ed19c1c716dd8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 19 22:43:11 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 19 22:43:11 2016 +0200"
      },
      "message": "patch 7.4.2076\nProblem:    Syntax error when dict has \u0027\u003e\u0027 key.\nSolution:   Check for endchar. (Ken Takata)\n"
    },
    {
      "commit": "0a0f641b9841189ba4180758109d04d0a26e50e3",
      "tree": "2c6a3332d35225369c9d6131a93906058c2e3da1",
      "parents": [
        "68015bbd846181d49842d6ef60246c4195d20b89"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 19 21:30:13 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jul 19 21:30:13 2016 +0200"
      },
      "message": "patch 7.4.2074\nProblem:    One more place using a dummy variable.\nSolution:   Use offsetof(). (Ken Takata)\n"
    },
    {
      "commit": "a9b579f3d7463720a316e11e77a7a9fbb9267986",
      "tree": "44c8c9db5628fdb95f6fa89ce7b3e89cddedb839",
      "parents": [
        "da861d631d7e22654faee2789286c685ad548911"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 17 18:29:19 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 17 18:29:19 2016 +0200"
      },
      "message": "patch 7.4.2058\nProblem:    eval.c is too big.\nSolution:   Move user functions to userfunc.c\n"
    }
  ]
}
