)]}'
{
  "log": [
    {
      "commit": "68ae6ad12e4f89526638f167c380d0b28b3bdeac",
      "tree": "e18075751c1f0d08d94d7c6be14e1a18b560b285",
      "parents": [
        "c79ea239415963d4a38752d0f3efe50531c8e04f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 21 16:11:30 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 21 16:34:58 2020 -0700"
      },
      "message": "Changes for #inclusivefixit.\n\nTest: treehugger\nChange-Id: I7ff0496c5c2792a41781e74634247f55b0548213\n"
    },
    {
      "commit": "8c936b4e6c5ffc5d55b93e59587d95066abf9b0e",
      "tree": "3c4c54acb8b47cdbe4951e7380d4c1e1096c6ade",
      "parents": [
        "4ea659a7c6abdae1873e72627a06a8d2aa8c02fd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 15 11:18:43 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 15 11:18:43 2020 -0700"
      },
      "message": "Use more inclusive language.\n\nOne turns out not to be used at all, and the pylintrc even uses the more\nintention-revealing term in the machine readable part, just not the\ncomment!\n\nTest: treehugger\nChange-Id: I4db7f1cf4fa1aa8ee601857e4e4c400e2119887c\n"
    },
    {
      "commit": "c88331b062803cf2a5257e41b9e38c6a2ea25122",
      "tree": "b46535897888d14c00dea3a16672987feec52064",
      "parents": [
        "a6bf7f2ee355559ec95378c7290702290aafb73c"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Fri Dec 20 10:27:45 2019 -0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Mon Dec 23 07:22:48 2019 -0800"
      },
      "message": "versioner: Add versioner_fortify_inline annotation\n\nThis commit adds versioner_fortify_inline annotation.  This annotation\nindicates that the annotated function is an overloaded inline function\nfor _FORTIFY_SOURCE implementation.  They are usually enabled/disabled\nby the enable_if attribute, thus the versioner don\u0027t have to check\nwhether they have conflicting definitions.\n\nBug: 118991081\nTest: source development/vndk/tools/header-checker/android/envsetup.sh \u0026\u0026 \\\n      source build/envsetup.sh \u0026\u0026 \\\n      lunch aosp_arm64-userdebug \u0026\u0026 \\\n      m versioner \u0026\u0026 \\\n      ./bionic/tools/versioner/run_tests.py\nChange-Id: If5c739fc0c8a218907855939c1fe5338134da7f7\n"
    },
    {
      "commit": "5270017ab30fda270cdff4e096adfab539bf90fe",
      "tree": "ffd2a39d65baf6c8bc49ff489ea00e438ab26297",
      "parents": [
        "0ab20442e49316899050d3af72257d5f483761d0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 13:34:21 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 13:34:21 2019 -0700"
      },
      "message": "Remove __INTRODUCED_IN_FUTURE.\n\nThis hasn\u0027t been particularly useful, we haven\u0027t used it consistently,\nand it has caused trouble.\n\nTest: builds\nChange-Id: Ic5b5b5124af98aa8301e602fd75b0eb72a5fc7f6\n"
    },
    {
      "commit": "9c123230e22d8fe9f691a72cc74def92d302a021",
      "tree": "cfcccc4d3116a42b26ed85c134a1d82a40ef31c2",
      "parents": [
        "3fc86c158f841de1befee1390de09007d279efad"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Oct 23 10:47:17 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Oct 25 14:54:39 2018 +0800"
      },
      "message": "versioner: Build SymbolDatabase from version scripts\n\nThis commit adds a version script parser so that versioner can build\nSymbolDatabase from version scripts.\n\nBug: 113263746\nTest: ./bionic/tools/versioner/run_tests.py\nChange-Id: Iedcfe36b51a62693668e07b86aa13592096262db\n"
    },
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "c166113c2bb9a96ec1abdaabbaf47a88718143c7",
      "tree": "584ff1331938e0896ca0032ac4448888dc67a8a5",
      "parents": [
        "e57a398977c3523a16fbb4760e98119ccb6510be"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Dec 12 11:51:32 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Dec 12 12:01:22 2017 -0800"
      },
      "message": "versioner: remove parsing of platforms.\n\nLeave the machinery to use a symbol database around so that we can\nswitch over to parsing libc.map.txt in the future.\n\nTest: tools/versioner/run_tests.py\nChange-Id: Ifa8899b698764e4aeb6aa8bb2cdb2d44a67b863f\n"
    },
    {
      "commit": "ab25d0bd102f844338d7a4e0fb24e7f24d435e67",
      "tree": "8978a961f3c9ef311885198b9796b882d7914787",
      "parents": [
        "38685e188787e657f8b1f5962b963210ecca5ffa"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 10 10:50:33 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 30 12:47:24 2017 -0700"
      },
      "message": "versioner: compile headers in both C and C++ mode.\n\nBug: https://github.com/android-ndk/ndk/issues/440\nTest: python run_tests.py\nChange-Id: Ib572a8fdcc00f6b88a25003a085b16ce9698d692\n"
    },
    {
      "commit": "35aa21352ec69678288d7ea6c18438baafa43b21",
      "tree": "782baaa1160ae6e4d5a96b8b0bdc05b4f9ce76c3",
      "parents": [
        "0062b3e60ad7cc529715f47285a1e9065364ba89"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 17:05:49 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 17:51:25 2017 -0700"
      },
      "message": "versioner: kill some obsolete versions.\n\nMake the selection of a non-default API level non-fatal, so that we\nwon\u0027t have to continually fix all of the tests every time we remove an\nAPI version.\n\nTest: versioner\nTest: python run_tests.py\nChange-Id: I96429584e352f7e012c5129da3c02dc1b4b30061\n"
    },
    {
      "commit": "1db06faa3891bd056431a5aa8f27c5bc34ad7988",
      "tree": "34534e0d9ab0152ab0b095145df9d57e7c4d17e4",
      "parents": [
        "4dd33f92d82b9fb77152bfc68f312d2fa5710a28",
        "b97049c0390cb1a11b9cb0b14391972e69398ce5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 01 02:03:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 01 02:03:52 2017 +0000"
      },
      "message": "Merge \"libc: Split FORTIFY into its own headers\""
    },
    {
      "commit": "d2ab9ffcb6a29f38cb007875520035fc70376847",
      "tree": "eb6d6516effe78d4cd5002e703ee1f56bd4a7272",
      "parents": [
        "e76ff925df7d0b9aef84fe230c7497ff6a8fbba4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 28 12:53:36 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 28 12:57:16 2017 -0700"
      },
      "message": "versioner: compile with `clang -include foo.h -`.\n\nAt least one warning only triggers in files that are included, instead\nof being passed directly. Switch to compiling with -include, and fix\nthe resulting warnings.\n\nBug: https://github.com/android-ndk/ndk/issues/474\nTest: mma -j \u0026\u0026 versioner\nTest: python tools/versioner/run_tests.py\nChange-Id: I784698c18540c9cc30f372f279a1cec1d75721ea\n"
    },
    {
      "commit": "b97049c0390cb1a11b9cb0b14391972e69398ce5",
      "tree": "c331f88d0cb75e427564fdebd15738adf410f501",
      "parents": [
        "38bcf2b704eb5038668759d2dd37115aea1dc437"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jul 24 15:05:05 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jul 27 17:00:13 2017 -0700"
      },
      "message": "libc: Split FORTIFY into its own headers\n\nThis patch cleans up our standard headers by moving most of the FORTIFY\ncruft out in to its own sandbox. In order to include the *_chk and\n*_real declarations, you can either enable FORTIFY, or `#define\n__BIONIC_DECLARE_FORTIFY_HELPERS`.\n\nBoth sys/select.h and strings.h are explicitly ignored by this patch.\nBoth of these files have very small __BIONIC_FORTIFY blocks, and don\u0027t\ndefine any actual FORTIFY\u0027ed functions (just macros, and 3 *_chk\nfunctions).\n\nThis patch also makes the versioner ignore the FORTIFY implementation\nheaders, since we\u0027re guaranteed to pick the FORTIFY\u0027ed headers up when\nlooking at the regular headers. (...Not to mention that making the\nFORTIFY\u0027ed headers freestanding would be annoying to do and maintain for\n~no benefit).\n\nWe bake the knowledge of where FORTIFY headers live directly into the\nversioner. We could go with a more general approach (e.g. adding an -X\nIGNORED_FILE flag that tells the versioner to ignore\n$HEADER_PATH/$IGNORED_FILE), but we\u0027d then have to repeat that for every\ntest, every manual invocation of the versioner, etc. for no benefit\nthat\u0027s obvious to me.\n\nBug: 12231437\nTest: m checkbuild on bullhead internal master + CtsBionicTestCases. no\nnew errors.\n\nChange-Id: Iffc0cc609009b33d989cdaddde0a809282131a5b\n"
    },
    {
      "commit": "05fd20c797c0aab700183131023130e45a748a47",
      "tree": "8572db00e4fa83d6569aa9d2f4d3df61aab472d9",
      "parents": [
        "5725481f1e4cb2e2042b5469b5863023556cf2dd",
        "b50b8c888618c4da4bde8490206d1706a5882542"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 04 04:08:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 04:08:22 2017 +0000"
      },
      "message": "Merge changes Ia7200bf0,I86999bb7\n\n* changes:\n  versioner: fix leak.\n  versioner: add symlink for dependencies.\n"
    },
    {
      "commit": "d10d3eece155670d5922b27f99f92c487b6682a4",
      "tree": "9e75f7d8181c8b95a46050dde40551c94723bbd6",
      "parents": [
        "fd478a8cba97680974494bc72727fba6d8136805"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 28 19:32:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 01 16:31:51 2017 -0700"
      },
      "message": "versioner: disable container overflow checks\n\nTemporary workaround.\n\nBug: 37775238\nTest: ASAN_OPTIONS\u003d SANITIZE_HOST\u003daddress m\nChange-Id: If9e9df45d83f8412caafcece87337a5c9df3a1c8\n"
    },
    {
      "commit": "b50b8c888618c4da4bde8490206d1706a5882542",
      "tree": "cf47be17871fe84e11a2d65d9898a33d7cc4442d",
      "parents": [
        "0be1dabfc66e884c91bb93d4e96c10f3577385c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 27 17:22:52 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 27 17:25:32 2017 -0700"
      },
      "message": "versioner: fix leak.\n\nReplace an intentional leak of a buffer allocated by realpath with a use\nof android::base::Realpath.\n\nBug: http://b/37727515\nTest: tools/versioner/run_tests.py\nChange-Id: Ia7200bf0e1c485050e860e21ff15784941366bec\n"
    },
    {
      "commit": "ff6c8de4f51536855a05b71ff336257a36d7c215",
      "tree": "9cb372ce38225bfa50d65f34b789cf691e4938de",
      "parents": [
        "627ed9162538d847ea4e530fd443570d37f57d65"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Apr 20 09:08:11 2017 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Apr 20 14:37:56 2017 -0700"
      },
      "message": "Remove unused lambda captures\n\nClean up. This fixes build under -Wunused-lambda-capture.\n\nTest: build\nChange-Id: Ic12aa39e14ed55dbb28cf55303f9c4258179037d\n"
    },
    {
      "commit": "d744a9bcd5128b106ba2f4cf991d4e6a510751e1",
      "tree": "82f74d961467e566390f821dc68abf89ea739496",
      "parents": [
        "3fcf747f1daefcd7995a3c22f42e9f5c987e7142"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 11:24:48 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 12:41:35 2017 -0700"
      },
      "message": "versioner: fix indentation in usage.\n\nTest: versioner -h\nChange-Id: I96cba65e53c564c8f47714c74d300e8f3dee7e82\n"
    },
    {
      "commit": "0a284f5c05f36c7be570f1a2750eba79fa883291",
      "tree": "3aa5e5d761af135745c1b543af6ca889d8c62bb7",
      "parents": [
        "f7e793ef7fcfc8f20be3cadd2f5a233151d4b9c9"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Dec 15 13:56:00 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Dec 15 13:56:00 2016 -0800"
      },
      "message": "versioner: start using C++17.\n\nBug: None\nTest: python run_tests.py\nChange-Id: I10101d26b7816a83445f25b33b97ed47d42fd135\n"
    },
    {
      "commit": "9f9200c2ee7e5583282f4151ff9c18f1f1bcbcb9",
      "tree": "3792f29dd17de3f7ed7945cb34137e2741d5193a",
      "parents": [
        "2796894c98e8ef9639c7781cb343ce23cbd3781a",
        "acc3d80edf9912d0c30f951e498959b9ff74f0e2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 22 00:51:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 00:51:14 2016 +0000"
      },
      "message": "Merge \"versioner: extract strict warnings out of -v into its own flag.\""
    },
    {
      "commit": "2796894c98e8ef9639c7781cb343ce23cbd3781a",
      "tree": "147fa29d23e8b39668f1e213b799420714093c52",
      "parents": [
        "5fabe027571627bf72eec1e23bfbb3a69845480a",
        "338cf129630ca5839f1ab695b04f7afbe18bb92d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 22 00:50:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 00:50:59 2016 +0000"
      },
      "message": "Merge \"versioner: use a single work queue.\""
    },
    {
      "commit": "acc3d80edf9912d0c30f951e498959b9ff74f0e2",
      "tree": "0ac8f0bbf4cc479744da4caad3ed75134c12f689",
      "parents": [
        "338cf129630ca5839f1ab695b04f7afbe18bb92d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:22:44 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 17 18:12:21 2016 -0800"
      },
      "message": "versioner: extract strict warnings out of -v into its own flag.\n\nBug: None\nTest: versioner -v; versioner -s\nChange-Id: I8f6ac7064c6f05de0811677f7fcfce929a2568c1\n"
    },
    {
      "commit": "338cf129630ca5839f1ab695b04f7afbe18bb92d",
      "tree": "72f3aab6dea788568808228b9e22f33c2fb4bb76",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:01:41 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 17 18:11:57 2016 -0800"
      },
      "message": "versioner: use a single work queue.\n\nPreviously, each thread was assigned a fixed list of work, and the main\nthread would block until every thread was finished, leading to most\ncores sitting idle for the last few hundred milliseconds while a few\nparticularly long running threads would keep working. Use a single work\nqueue to evenly distribute load across the threads.\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I80e231ece3b95e2721a32f658905841b89a8dc3b\n"
    },
    {
      "commit": "3091f5a06e82186bbf8cfde3498fa9aef4d389ee",
      "tree": "17e571f7c6da4054aabc8d7372255e6cf1442134",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 16 17:01:57 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 16 17:01:57 2016 -0800"
      },
      "message": "versioner: ignore non-header files.\n\nDon\u0027t try to compile non-headers (vim swap files, etc.) that happen to\nbe in the header directory.\n\nBug: none\nTest: manually created a file in libc/include\nChange-Id: I2c1647ec7174dc617898dc2f07c9a80a08b69c72\n"
    },
    {
      "commit": "b3321c961452f69650e4a6bd2a7db317a80b3234",
      "tree": "9471f536d800a1ca4bb71a638edd11eb1a2496bd",
      "parents": [
        "cd9ce19e9ce34db6201bdb054c40c3b9e766d2d8",
        "78b8a1430debfb9361e425e52e8366409b9e5cd2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 15 00:54:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 15 00:54:09 2016 +0000"
      },
      "message": "Merge changes I72d37b7c,I7d254a10,I2e967acf\n\n* changes:\n  versioner: use a virtual filesystem for input files.\n  versioner: cache -cc1 flags generated by the clang Driver.\n  versioner: refactor to use CompilerInstance directly.\n"
    },
    {
      "commit": "78b8a1430debfb9361e425e52e8366409b9e5cd2",
      "tree": "63054645e21f43fc7626156843a511398a61194e",
      "parents": [
        "b5c496346f19cba410b3191b9c3297507bba854a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 01:00:41 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:12:10 2016 -0800"
      },
      "message": "versioner: use a virtual filesystem for input files.\n\nUse an InMemoryFileSystem to store and share input files across\ncompilations.\n\nThis improves the result of `time versioner` further, from:\n    versioner  109.12s user 17.43s system 2433% cpu 5.201 total\nto:\n    versioner  112.20s user 1.38s system 2416% cpu 4.700 total\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I72d37b7c30850b8399cc40338247700fe3e7b2f9\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": "1a176de2f15392c4789b071d5f05ed6950807a0e",
      "tree": "1afc5fb6af2a5136fea70d01247e2f83cd0f3546",
      "parents": [
        "a00e672361893fdaf7e87577e75290523c07d27d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 13:15:11 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 13:16:29 2016 -0700"
      },
      "message": "versioner: allow static inlines that don\u0027t conflict.\n\nBug: http://b/32664285\nTest: python run_test.py\nChange-Id: I9d050e545390eccd82661325c0ec58055f5f28a3\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": "ac3e5641428512c12ff2c463005ab29b026a928c",
      "tree": "2564871000f3897a815e765d7c34886969b41dab",
      "parents": [
        "81b4aadb4857f351915b6fc215a73baacc90d22a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:16:15 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:21:28 2016 -0700"
      },
      "message": "versioner: turn on -Wundef.\n\nPoking around with -Wundef exposed a pretty horrifying bug, so we\nshould probably keep it turned on.\n\nBug: http://b/31496165\nChange-Id: Iada279eec91ded0d59ff3841d5a3ce1a36e34c3a\n"
    },
    {
      "commit": "bb96628f487aaa55ce861d5d72c9c38d5943c9a6",
      "tree": "46aaaac0add4344a4177843c54fe534eb0d82374",
      "parents": [
        "76fcad2a6f6b6633c49f4f0b703ef490d2d127fd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 14 14:21:56 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 14 14:22:27 2016 -0700"
      },
      "message": "versioner: turn on -Wall -Wextra -Werror.\n\nChange-Id: Ica47d0fa671934a1ea193869265de8986b012a58\nTest: mma \u0026\u0026 versioner\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": "f8592a3ff3d452b7d784d34814e5d04c20348343",
      "tree": "7b7b981e5c74280552b875bdbd4494c3000b38d9",
      "parents": [
        "8feba83242e32693b1853f0d6f141b7736008d4a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jul 26 18:58:27 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: add support for preprocessing headers.\n\nBug: http://b/30170081\nChange-Id: I9b662ca9e0fa3a1f9c0211594e851f5f9bef7266\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": "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": "d8c77257ea0b0b3a4f92f8ae20b230b545456fa5",
      "tree": "5603d67f343ea8c3fc96dcc6fa42916a4692f99d",
      "parents": [
        "4af829acb7bedbc2d08dfde0d099c658a1aa7567"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 13:54:28 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:19 2016 -0700"
      },
      "message": "versioner: whitelist atexit, turn on symbol checking by default.\n\nChange-Id: I32e726c74ee618ace3a4329d46408a42732a8d9d\n"
    },
    {
      "commit": "958f3b31c49e1975117898a54d6e7c1fe2b386ec",
      "tree": "a226bca1c97221743727d9421fe672d368e404e4",
      "parents": [
        "173e7c07539af0910d170cd17385cba6762cfbc8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 13:44:00 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:19 2016 -0700"
      },
      "message": "versioner: fix false positive with functions only available as inlines.\n\nChange-Id: I09cc335b4006c6ceafcbd1bec9e50161f8262942\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": "d67dbf003e6b203a4ec41d01081190d3e40f00e2",
      "tree": "8a1a7e3532876d06f805376ea7dda0efb28571e5",
      "parents": [
        "9b5af7ad5e5b36d751f152382971b034161755e5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 15:21:14 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: ignore functions that are __INTRODUCED_IN_FUTURE.\n\nBug: http://b/28178111\nChange-Id: I8026181e08ed8f2d59b31a37adcf8b469fb6bdaf\n"
    },
    {
      "commit": "9b5af7ad5e5b36d751f152382971b034161755e5",
      "tree": "d352634230bcbebbc411783867e440e6e57356a3",
      "parents": [
        "62aaf8f8fe123e34ec0f66b0cd51ec24e304c9b5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 14:29:13 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: autodetect paths when no specified.\n\nSearch for the header/dependency/platform directories in a hard-coded\npath relative to $ANDROID_BUILD_TOP when they\u0027re not specified.\n\nChange-Id: I476385cfc0247e3b2009348ec37c1810a0e9a7f7\n"
    },
    {
      "commit": "62aaf8f8fe123e34ec0f66b0cd51ec24e304c9b5",
      "tree": "f2c71111d1910cf6a9c116beac2a43ddf160ce09",
      "parents": [
        "99a84c83169a4443d844836bf5d892ec55130448"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 14:27:21 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: improve usage messages.\n\nDon\u0027t spew all of usage when called improperly, and add a -h option\nthat exits cleanly.\n\nChange-Id: I1a4517edce75afe0f9a80bc8d6c81353d6c12e99\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"
    }
  ]
}
