)]}'
{
  "log": [
    {
      "commit": "c667da5185ce5dce914d2006d62da2be0cedb384",
      "tree": "cd06b08e9fb7d701653850cd33524d3f1f5acaaf",
      "parents": [
        "71136db1bfbc67c2e55f8070cdf0a241c643e45b"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 30 20:52:27 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 30 20:52:27 2019 +0100"
      },
      "message": "patch 8.1.2368: using old C style comments\n\nProblem:    Using old C style comments.\nSolution:   Use // comments where appropriate.\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": "6ee9658774942f7448af700fc04df0335796a3db",
      "tree": "87f99c37e22f07e73e244da78686c7e59a8457f1",
      "parents": [
        "00aa069db8132851a91cfc5ca7f58ef945c75c73"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Apr 27 22:06:37 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Apr 27 22:06:37 2019 +0200"
      },
      "message": "patch 8.1.1219: not checking for NULL return from alloc()\n\nProblem:    Not checking for NULL return from alloc().\nSolution:   Add checks. (Martin Kunev, closes #4303, closes #4174)\n"
    },
    {
      "commit": "abab0b0fdd6535969447b03a4fffc1947918cf6c",
      "tree": "2d43537a5dce8433ef2b2a37684c9e069392c592",
      "parents": [
        "bd9bf266fccbf7b7f09e476e09b61f0133e914db"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 30 18:47:01 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 30 18:47:01 2019 +0100"
      },
      "message": "patch 8.1.1086: too many curly braces\n\nProblem:    Too many curly braces.\nSolution:   Remove curly braces where they are not needed. (Hirohito Higashi,\n            closes #3982)\n"
    },
    {
      "commit": "30276f2beb248557c6b33cd5418bca8b7084b0a5",
      "tree": "56f7b88712a5ffffdd10681983e70501e2e1ba58",
      "parents": [
        "264b74fa545edfb92c0d7d08a02c26331cc5b168"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 24 17:59:39 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jan 24 17:59:39 2019 +0100"
      },
      "message": "patch 8.1.0811: too many #ifdefs\n\nProblem:    Too many #ifdefs.\nSolution:   Graduate FEAT_MBYTE, the final chapter.\n"
    },
    {
      "commit": "6dff58f15cede9139b2fcfc64c9064326ea3d3b0",
      "tree": "f2326055f5fe8bb5948374155f11bd220c1d9dc7",
      "parents": [
        "f45d747ebf920940b041f5c75c2bfdffb6b670ae"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Sep 30 21:43:26 2018 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Sep 30 21:43:26 2018 +0200"
      },
      "message": "patch 8.1.0443: unnecessary static function prototypes\n\nProblem:    Unnecessary static function prototypes.\nSolution:   Remove unnecessary prototypes.\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": "7454a06e2642d2b37afad1c5e71cec68081ca4ff",
      "tree": "8b38e652321d9591a2f57e44b9bdc1f590837f7b",
      "parents": [
        "305598b71261265994e2846b4ff4a4d8efade280"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 30 15:14:10 2016 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 30 15:14:10 2016 +0100"
      },
      "message": "patch 7.4.1205\nProblem:    Using old style function declarations.\nSolution:   Change to new style function declarations. (script by Hirohito\n            Higashi)\n"
    },
    {
      "commit": "f28dbcea371b3a35727d91afc90fb90e0527d78a",
      "tree": "df3ced3771c8d6900fc2e65ffa37e89566f215ba",
      "parents": [
        "f12d983deab06b0408781d7a6c2f8970d765b723"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jan 29 22:03:47 2016 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Jan 29 22:03:47 2016 +0100"
      },
      "message": "patch 7.4.1196\nProblem:    Still using __ARGS.\nSolution:   Remove __ARGS in several files. (script by Hirohito Higashi)\n"
    },
    {
      "commit": "8f4ac01544b44bdd906d241e4f203de7496e5ac8",
      "tree": "52ee7ff7368d7953f2baa3d7d015c539b11a345e",
      "parents": [
        "0106b4b89127b043eddf711c750364b487deb794"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 10 13:38:34 2014 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 10 13:38:34 2014 +0200"
      },
      "message": "updated for version 7.4.399\nProblem:    Encryption implementation is messy.  Blowfish encryption has a\n            weakness.\nSolution:   Refactor the encryption, store the state in an allocated struct\n            instead of using a save/restore mechanism.  Introduce the\n            \"blowfish2\" method, which does not have the weakness and encrypts\n            the whole undo file. (largely by David Leadbeater)\n"
    }
  ]
}
