)]}'
{
  "log": [
    {
      "commit": "0aa3ed517034619b2c96c1018650f60f43914222",
      "tree": "356a258dd208eae47f33baeae7a7f6039b9a4938",
      "parents": [
        "cdfd12891177ec6dfaa0dc1a9434640e951c7d28",
        "b5c496346f19cba410b3191b9c3297507bba854a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 15 01:02:54 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:02:54 2016 +0000"
      },
      "message": "versioner: cache -cc1 flags generated by the clang Driver.\nam: b5c496346f\n\nChange-Id: Ied6670cbee3bbcf91c13f39be2e0eae68a692aee\n"
    },
    {
      "commit": "cdfd12891177ec6dfaa0dc1a9434640e951c7d28",
      "tree": "5f909f27b2ab4b771b0c129bc58a48e248dc7573",
      "parents": [
        "e250aff83f787459d570b7c6b4e37e65ede40d3d",
        "16016df79f846d6d21266c3b1dce1e7c24dc4be1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 15 01:02:51 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:02:51 2016 +0000"
      },
      "message": "versioner: refactor to use CompilerInstance directly.\nam: 16016df79f\n\nChange-Id: I142f75a381307b71c0893b04e943d65e0dbea844\n"
    },
    {
      "commit": "b5c496346f19cba410b3191b9c3297507bba854a",
      "tree": "f5e01af0d1c789c719a83fd4c89ec8f3f0b0aafe",
      "parents": [
        "16016df79f846d6d21266c3b1dce1e7c24dc4be1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 08 22:21:31 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:10:15 2016 -0800"
      },
      "message": "versioner: cache -cc1 flags generated by the clang Driver.\n\nProfiling showed that majority of time spent by versioner was being\nspent in the x86 and x86_64 driver statting random files in /usr/lib,\nlooking for a toolchain. Hardcode a list of per-target flags which\ncorrespond to a subset of the ones generated by clang, and use those\ninstead of calling out to Driver.\n\nThis changes the result of `time versioner` from:\n    versioner  156.57s user 1180.08s system 4109% cpu 32.525 total\nto:\n    versioner  109.12s user 17.43s system 2433% cpu 5.201 total\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I7d254a105bf1a283cbba0546321b04e308e703d1\n"
    },
    {
      "commit": "16016df79f846d6d21266c3b1dce1e7c24dc4be1",
      "tree": "848d465210b468dbcdb9b94a2519b40a256bf323",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Nov 07 18:27:16 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 13:50:07 2016 -0800"
      },
      "message": "versioner: refactor to use CompilerInstance directly.\n\nThis will make it easier to switch over to a virtual filesystem,\nwhich should drastically improve performance.\n\nThis also fixes an issue with warning/error reporting.\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I2e967acf75db29c95f3a03f4f94cccd22c367ad5\n"
    },
    {
      "commit": "a00e672361893fdaf7e87577e75290523c07d27d",
      "tree": "2856695e790b730c4185a74e3437f6d7e39f4885",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 12:04:38 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 13:16:16 2016 -0700"
      },
      "message": "versioner: fix output.\n\nBug: http://b/32664285\nTest: python run_test.py\nChange-Id: Ic487036a17cc6778493e316146e54ead8ce3e65b\n"
    },
    {
      "commit": "dfb74c5f597542c7587a4144eb31b143d82a2281",
      "tree": "6518b6dbd451d3359c9daec78867a66481dc77fd",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 12:53:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 12:57:55 2016 -0700"
      },
      "message": "Minor copyright header unification.\n\nRegenerating the NOTICE file the other day left me scratching my head at\nvarious \"how do they differ?\" cases, resolved by this patch.\n\nTest: N/A\nChange-Id: I4230bfa1d7ec842a4b9fb8c73dd3b39443d74054\n"
    },
    {
      "commit": "fff29fe17a4187ea83add76695040bc888e9d3bd",
      "tree": "d53910633fa98038db957b1cf767aa8fb0b26ca2",
      "parents": [
        "bfad958982a6b1c8c957c0eb951826d0c369eedd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 07 18:29:08 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 07 18:34:39 2016 -0700"
      },
      "message": "versioner: add support for __VERSIONER_NO_GUARD.\n\nAdd an attribute that tells the preprocessor not to guard a\ndeclaration, primarily for use with symbols that get reexported by\nlibc++ of the form `namespace std { using ::wctrans; }`.\n\nBug: http://b/28178111\nChange-Id: I08c8751214797e37e8f26e7f7416a19e81c2bb4c\n"
    },
    {
      "commit": "a77b3a9464641ba813018b9cab0555d9d800d65e",
      "tree": "d3f90e5a9d9d4e3983b698c6b3b00ece3aefd064",
      "parents": [
        "3b2d331e77143ce63ad7f404ab6669c03178eff4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 16:39:27 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 16:43:13 2016 -0700"
      },
      "message": "versioner: handle _FILE_OFFSET_BITS\u003d64.\n\nCompile headers with both -D_FILE_OFFSET_BITS\u003d32 and -D_FILE_OFFSET_BITS\u003d64.\n\nBug: http://b/30170081\nChange-Id: I92651e075cc69bdc1a2581f99892c9a7fdcdb35b\nTest: python run_tests.py\n"
    },
    {
      "commit": "566735df35488b332bedb2e384221c08c3ec686c",
      "tree": "44b6e4b8aa9143212fb9afe157a19057f2b7b24a",
      "parents": [
        "16057886d7aa2e30536908ae72451ebf42661080"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 15:07:32 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: purge iostreams.\n\nChange-Id: I1b16a4b5c4a8a1333f05636c8c67890d8ce1a090\n"
    },
    {
      "commit": "16057886d7aa2e30536908ae72451ebf42661080",
      "tree": "3db021441d0350caf3288f5fa3f627b991f0ecc1",
      "parents": [
        "bfb6bae9fb5ef42e4f9ae2847f30f41938c04900"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 14:54:09 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: assorted fixes.\n\nZero initialize the contents of ArchMap, keep track of the symbol name\nin Declaration, remove unnecessary copies in loops.\n\nChange-Id: I47b07755846f252b83ffc4c89547a34b2f7ab868\n"
    },
    {
      "commit": "bfb6bae9fb5ef42e4f9ae2847f30f41938c04900",
      "tree": "e75bc213342719cd3f803db5d27f4f21d9601fe0",
      "parents": [
        "681f6b59d26c7c9470bc681b0ca0b43c3d0835db"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 15 17:25:21 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: replace availability attributes with annotate.\n\nMajor refactor to use __attribute__((annotate)) to be able to keep\ntrack of the semantic differences between __INTRODUCED_IN(x) and\n__INTRODUCED_IN_X86(x), for use in the upcoming preprocessor.\n\nBug: http://b/30170081\nChange-Id: I6496a8c40ba7f4553de9a2be0bbddcf37c813937\n"
    },
    {
      "commit": "173e7c07539af0910d170cd17385cba6762cfbc8",
      "tree": "ce1b645e69d8b9f510c10ea2805b9bcc67b04c23",
      "parents": [
        "658dbd920d8e8d17723e014d886e43615107a59a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 13:38:00 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:19 2016 -0700"
      },
      "message": "versioner: improve error output slightly.\n\nPrint [introduced \u003d 9, deprecated \u003d 10, obsoleted \u003d 11] instead of\n[9,10,11].\n\nChange-Id: Ifb8a66abbcec92aa13086d220af7ee6fa17b0897\n"
    },
    {
      "commit": "bf8a285e64055ffd7e0c8b91519b75ff9ad94184",
      "tree": "ed209dd25479e657ab2ca0b311aab46d62da75aa",
      "parents": [
        "46b44160e9e4c466be0faf1bb8d6ec70ecc83273"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 27 11:59:09 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 13:40:36 2016 -0700"
      },
      "message": "versioner: introduce.\n\nAdd a clang-based tool to inspect header availability attributes and\nverify them against the NDK platform definitions.\n\nBug: http://b/28178111\nChange-Id: I1bb1925a620e98cc9606cb5a3360b1224c700bd0\n"
    }
  ]
}
