)]}'
{
  "log": [
    {
      "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": "e6fdf79980c0f2856700d4f46de700293f477429",
      "tree": "3234f99e0464e97f36e6b5b4086f95b469806552",
      "parents": [
        "c57463c9c6ee893285f553e0ac3b2fe5935f16b8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Dec 26 22:57:42 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Dec 26 22:57:42 2018 +0100"
      },
      "message": "patch 8.1.0642: swapinfo() leaks memory\n\nProblem:    swapinfo() leaks memory.\nSolution:   Avoid allocating the strings twice.\n"
    },
    {
      "commit": "d155d7a8519987361169459b8d464ae1caef5e9c",
      "tree": "26d437fd67b33ca1b57aca568d4da40151bc9a81",
      "parents": [
        "162b71479bd4dcdb3a2ef9198a1444f6f99e6843"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 21 16:04:21 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 21 16:04:21 2018 +0100"
      },
      "message": "patch 8.1.0615: get_tv function names are not consistent\n\nProblem:    Get_tv function names are not consistent.\nSolution:   Rename to tv_get.\n"
    },
    {
      "commit": "8f66717a1f835b8194139d158c1e2df8b30c3ef3",
      "tree": "a85c2d9df9a47870d35c88ae849510407c670b81",
      "parents": [
        "fb95e212a2696e5b1c8b5e6b2984af59fa7ead6f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 14 15:38:31 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 14 15:38:31 2018 +0100"
      },
      "message": "patch 8.1.0583: using illogical name for get_dict_number()/get_dict_string()\n\nProblem:    Using illogical name for get_dict_number()/get_dict_string().\nSolution:   Rename to start with dict_.\n"
    },
    {
      "commit": "f49cc60aa802862c595ff619dccc11271633a94b",
      "tree": "e8f01a0c236f2910f117c858f7236b8919e33b93",
      "parents": [
        "8617b401599451187fa0c0561a84944978536a90"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Nov 11 15:21:05 2018 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Nov 11 15:21:05 2018 +0100"
      },
      "message": "patch 8.1.0519: cannot save and restore the tag stack\n\nProblem:    Cannot save and restore the tag stack.\nSolution:   Add gettagstack() and settagstack(). (Yegappan Lakshmanan,\n            closes #3604)\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": "e0be167a805fd547c25ec1ec97fd4c7f13046236",
      "tree": "423fb96f7b30329ef0b7ccf3d4b2a02620e7929c",
      "parents": [
        "4cde86c2ef885e82fff3d925dee9fb5671c025cf"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 08 16:50:37 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 08 16:50:37 2018 +0200"
      },
      "message": "patch 8.1.0166: using dict_add_nr_str() is clumsy\n\nProblem:    Using dict_add_nr_str() is clumsy.\nSolution:   Split into two functions. (Ozaki Kiichi, closes #3154)\n"
    },
    {
      "commit": "7e1652c63c96585b9e2235c195a3c322b1f11595",
      "tree": "ed90a314ef58909b1c9dfbd45422f1a3557de278",
      "parents": [
        "6621605eb97cf5fbc481282fd4d349a76e168f16"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Dec 16 18:27:02 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Dec 16 18:27:02 2017 +0100"
      },
      "message": "patch 8.0.1394: cannot intercept a yank command\n\nProblem:    Cannot intercept a yank command.\nSolution:   Add the TextYankPost autocommand event. (Philippe Vaucher et al.,\n            closes #2333)\n"
    },
    {
      "commit": "45cf6e910c6d162775ca9d470fac4b6db844001f",
      "tree": "b0bec5c61e2b92d5deba1e71fb4f20216d1596fe",
      "parents": [
        "29ae377ea7039874337bc79ace9ab2b37b9056e5"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 30 20:25:19 2017 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 30 20:25:19 2017 +0200"
      },
      "message": "patch 8.0.0593: duplication of code for adding a list or dict return value\n\nProblem:    Duplication of code for adding a list or dict return value.\nSolution:   Add rettv_dict_set() and rettv_list_set(). (Yegappan Lakshmanan)\n"
    },
    {
      "commit": "42f45b850df93b806ef44f3025aecedfffb9ae01",
      "tree": "1f3af227f1dd63429598d15463b6c5130c6f0495",
      "parents": [
        "88d298aed8682eac872ebfe40df3112a6acd83e8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 14 22:17:14 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 14 22:17:14 2017 +0100"
      },
      "message": "patch 8.0.0458: potential crash if adding list or dict to dict fails\n\nProblem:    Potential crash if adding list or dict to dict fails.\nSolution:   Make sure the reference count is correct. (Nikolai Pavlov, closes\n            #1555)\n"
    },
    {
      "commit": "95c526e1f6d76acafee4b21f5701d6d6ac8c4b5f",
      "tree": "bd5c3b788fbd7995938325c97c3ff4c2d72b9b94",
      "parents": [
        "d3f78dc9ebd729475a7f24a50a91112e300d5ac9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 25 14:59:34 2017 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 25 14:59:34 2017 +0100"
      },
      "message": "patch 8.0.0365: might free a dict item that wasn\u0027t allocated\n\nProblem:    Might free a dict item that wasn\u0027t allocated.\nSolution:   Call dictitem_free(). (Nikolai Pavlov)  Use this for\n            b:changedtick.\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": "b5ae48e9ffd3b8eb6ca4057de11f1bddcde8ce6f",
      "tree": "4102b935644caa2544138f3abb1d038523568d94",
      "parents": [
        "ebcccad573a7722e16cf2dd435cc62b61f61d9cc"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 12 22:23:25 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 12 22:23:25 2016 +0200"
      },
      "message": "patch 7.4.2204\nProblem:    It is not easy to get information about buffers, windows and\n            tabpages.\nSolution:   Add getbufinfo(), getwininfo() and gettabinfo(). (Yegappan\n            Lakshmanan)\n"
    },
    {
      "commit": "7dc5e2e486fe0287601968e535902a41a39f65bb",
      "tree": "7dae219602d36900e7c309d44a17f4e800bf90aa",
      "parents": [
        "5971dab1126d6279c6e523f4fedc2f1e6fb9b4c9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 05 22:22:06 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Aug 05 22:22:06 2016 +0200"
      },
      "message": "patch 7.4.2160\nProblem:    setmatches() mixes up values. (Nikolai Pavlov)\nSolution:   Save the string instead of reusing a shared buffer.\n"
    },
    {
      "commit": "da861d631d7e22654faee2789286c685ad548911",
      "tree": "82be0a097878647d6d683040c37d29f500f65aa0",
      "parents": [
        "1abc52c1599fede69b4e76ffde0e879d6fb5080a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 17 15:46:27 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 17 15:46:27 2016 +0200"
      },
      "message": "patch 7.4.2057\nProblem:    eval.c is too big.\nSolution:   Move List functions to list.c\n"
    },
    {
      "commit": "cd52459c387785796713826c63174cdeed295dd4",
      "tree": "f2c964f83534a80d539b44826baea085a41fa595",
      "parents": [
        "42ebd066422d73cdb7bda6a1dc828a3dd022dec8"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 17 14:57:05 2016 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Jul 17 14:57:05 2016 +0200"
      },
      "message": "patch 7.4.2055\nProblem:    eval.c is too big.\nSolution:   Move Dictionary functions to dict.c.\n"
    }
  ]
}
