)]}'
{
  "log": [
    {
      "commit": "e791552fbb222c9ae2b4293b34ce50be82e5b353",
      "tree": "ed5df8631acb6d03ec6ad6766c22f8fafa4379e4",
      "parents": [
        "7672be0b3e40aad3da1d64e0ed8de07030745596"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 08 14:57:46 2021 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 08 14:57:46 2021 -0700"
      },
      "message": "Add API level define for T.\n\nTest: treehugger\nBug: None\nChange-Id: I7a973bbd7e8d646f45f4d860d564f9f104aab134\n"
    },
    {
      "commit": "43978a0a342936dbd8bbc28292824524d9e2253a",
      "tree": "a96c750764b7fc3d8baa338b78a439188f649d43",
      "parents": [
        "e09fc24a94c1a196b8930f8f26c6f5f8c1a47d06"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 07 17:15:41 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 07 17:32:39 2021 -0800"
      },
      "message": "Fix things so that \u003cfeatures.h\u003e can be used from assembler again.\n\nBug: https://github.com/android/ndk/issues/1422\nTest: builds\nChange-Id: I1b94ffe688f3d420533074c94f7ffed606ca923f\n"
    },
    {
      "commit": "d8f46916b6d1b26bc351a631ca5a6fe099e4b029",
      "tree": "7a3a386ccb33a69ed00fd3cf29eaf3e07b36e9d2",
      "parents": [
        "f08e70a0d9a02cbec89be682d665c2c2896c968f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Aug 07 13:54:49 2020 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 11 13:50:04 2020 -0700"
      },
      "message": "Add api-level.h to dac, improve docs.\n\nWe don\u0027t list most of bionic on dac since it would be overwhelming for\nthe current layout, but this file in particular seems useful,\nespecially __ANDROID_API__. Unfortunately, c2devsite doesn\u0027t include\nmacro documentation. Until then, it\u0027s still useful to include the\nfunctions defined in this header.\n\nI\u0027ve also elaborated a bit in the __ANDROID_API__ documentation, since\nthe existing phrasing led to confusion over whether it was closer to\nminSdkVersion or compileSdkVersion. In practice these are identical\nfor the NDK, but if we switch to weakly-linked APIs via the\navailability attribute that would change.\n\nTest: built docs, looked at them\nBug: None\nChange-Id: I5cf78a6143b5c15790c369bdf888611e4c1189db\n"
    },
    {
      "commit": "14dcbf89ce6743ba037c8eddda1c6774a1137672",
      "tree": "42053fec96a1f7bcf3e4c176970dd3ea7f0eefeb",
      "parents": [
        "e05c449cd860b68e6339f71c98dd01748c22c01e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 26 16:18:13 2020 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 09 12:38:53 2020 -0700"
      },
      "message": "Add API constant for S.\n\nTest: treehugger\nBug: http://b/152037166\nChange-Id: I9039377e80574cd59e13726a12072fe3002df67d\n"
    },
    {
      "commit": "95c6cd753f028b1afc0c6a800a3dd6bd85a5a6a0",
      "tree": "3d785e53e88c0b5864a8129c7b13e31f5d0e9caf",
      "parents": [
        "508d270886e90fac23ce51f81864d009307f13ae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 13:26:14 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 13:26:14 2019 -0800"
      },
      "message": "Stop using the __ANDROID_API_x__ constants.\n\nHistorically we\u0027ve made a few mistakes where they haven\u0027t matched the\nright number. And most non-Googlers are much more familiar with the\nnumbers, so it seems to make sense to rely more on them. Especially in\nheader files, which we actually expect real people to have to read from\ntime to time.\n\nTest: treehugger\nChange-Id: I0d4a97454ee108de1d32f21df285315c5488d886\n"
    },
    {
      "commit": "80e9f65c040873c2aa016bfb0db5984e9db46f18",
      "tree": "4999055583e9f535e4f514d1534834d7c47d074c",
      "parents": [
        "95712059371aa522c80f1cab3cc3eb5431cc7f71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 14 12:19:29 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 15 13:30:12 2019 -0700"
      },
      "message": "Remove __ANDROID_NDK__ from bionic, and document our #defines.\n\n__ANDROID_NDK__ is moving into the NDK\u0027s \u003candroid/ndk-version.h\u003e\ninstead.\n\nTest: treehugger\nChange-Id: I192016165a929547009d15dbcc30e8f6dad1ac88\n"
    },
    {
      "commit": "9823c926b2d3938b4645d347f570ff516fb8dc98",
      "tree": "72d3eee47f4e4a02d561fa253c9f0ba25f205f51",
      "parents": [
        "29ec2881a0a87ccda75c77fd967934d863d53cc1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 07 20:51:00 2019 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 12:36:22 2019 -0700"
      },
      "message": "Restore __ANDROID_NDK__.\n\nAt heart a revert of \"Don\u0027t #define __ANDROID_NDK__ for the platform build!\",\nwhich was commit eb6143037423a241ba8035304936149b300f7a5d.\n\nThe original change was insufficiently motivated, and meant that the\nNDK -- not just the platform -- no longer defines __ANDROID_NDK__. Which\nthen broke at least building toybox with NDK r19.\n\nChange-Id: Ic616688e4d17d25714a9ef381269d7431deac9b0\n"
    },
    {
      "commit": "420671135237cdf40c98d2336fb8712b7f0a2861",
      "tree": "c4d85a256eb46c8aa1a00a1675ac31f60498e313",
      "parents": [
        "30bcaae2b6bcdeadd42066fe5b6f5a49bd5b9b07"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 18 14:27:24 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 24 09:12:29 2019 -0700"
      },
      "message": "threads.h: Add C11 thread support.\n\nFreeBSD, glibc, and musl have all implemented C11 threads at this\npoint. POSIX is looking at how to align with it. Probably time to jump\non the bandwagon ourselves...\n\nImplemented in the same style as \u003ctermios.h\u003e so we can provide this\nfunctionality even on older API levels. This does mean that this is\nstrictly more expensive than calling pthread functions directly.\n\nAlthough this isn\u0027t in POSIX yet, assume that it\u0027s going to be basically\nthe same as C11 and add the header test anyway. We should revisit this\nwhen POSIX actually adds \u003cthreads.h\u003e.\n\nTest: new tests\nChange-Id: I8602d67ce71ca7f8ed1529daa0a8ea1feb083dd6\n"
    },
    {
      "commit": "0f57d561fe6149f06a53355db846f7e81933c955",
      "tree": "0679a4121379514b370e3c73c1842170af2205a0",
      "parents": [
        "ae471db4a9e5d3411fcfd5d602f65099b5d989d6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 15 15:07:13 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 15 15:07:13 2018 -0800"
      },
      "message": "Fix a comment in \u003candroid/api-level.h\u003e.\n\nBug: N/A\nTest: N/A\nChange-Id: Id6ef27caf8fe095d2be7fbf18fed74cc1334f86b\n"
    },
    {
      "commit": "c0f46564528c7bec8d490e62633e962f2007b8f4",
      "tree": "4dabb94963f869576828c5d169e74956f527031a",
      "parents": [
        "83590680649dc04ce8a98cd85b6356e1d6066564"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 09 15:38:52 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 15 11:07:30 2018 -0800"
      },
      "message": "Make android_get_application_target_sdk_version available to the NDK.\n\nAlso move this and android_get_device_api_level into \u003candroid/api-level.h\u003e\nso that they\u0027re always available.\n\nThis involves cleaning up \u003csys/cdefs.h\u003e slightly.\n\nBug: N/A\nTest: builds\nChange-Id: I25435c55f3549cd0d827a7581bee75ea8228028b\n"
    },
    {
      "commit": "eb6143037423a241ba8035304936149b300f7a5d",
      "tree": "add55935abdf6bc16c16c6edc111b376a3e3c933",
      "parents": [
        "ecf0c7515d4416ab4bf708b303ab7beab79a6f2b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 17 14:27:36 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 17 14:27:36 2018 -0700"
      },
      "message": "Don\u0027t #define __ANDROID_NDK__ for the platform build!\n\nCaused an ODR violation trying to build current ToT of toybox.\n\nBug: N/A\nTest: can successfully build code with `#ifdef __ANDROID_NDK__`\nChange-Id: Ia80b8889b267779ee01f6257744e1794db0ebc65\n"
    },
    {
      "commit": "ce934e3d9be9700946ba51a39ba966faf3867a93",
      "tree": "0db870d9253699cf6084818dabbe8f0a46bec6fc",
      "parents": [
        "74934aaf10d629de477095f0b92c467849f89638"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 13:26:08 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 14:19:46 2018 -0700"
      },
      "message": "Add android_get_device_api_level.\n\nBug: http://b/113615412\nTest: ran tests\nChange-Id: I0a7ae336c96c9ed6543b6935cbc242d14d4a4a67\n"
    },
    {
      "commit": "cf97d7f121c8e7c8127dbbe00ea2958b159368da",
      "tree": "cbd6c42b02d94b545bc939882adc0ceb1c265480",
      "parents": [
        "8f2298e73f4d930b58a8466fd7264e9a88c96d99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:50:29 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:50:29 2018 -0700"
      },
      "message": "Folks are starting to need a placeholder name for Q.\n\nBetter to just have one place to update...\n\nBug: N/A\nTest: builds\nChange-Id: If7135d26f498b0841f9ae505bf6ca3ed05767345\n"
    },
    {
      "commit": "cc0fe6e8c0bb2dfb250522872be6facb4d4a0339",
      "tree": "73b9e54a979e9d4b1e2ce50ccc129e58b0484b31",
      "parents": [
        "4cd3550d50cb14efe3d86ab9732ce75def5b85bd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 08:54:12 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 08:54:12 2018 -0800"
      },
      "message": "The future is now (2018 edition).\n\nBug: N/A\nTest: builds\nChange-Id: Ic638e5b1f4e5901885fe7bc60b2a265817636b21\n"
    },
    {
      "commit": "a0c7ec8080a7718c5711d9de405e039258d433bf",
      "tree": "44acbb52602f72fc7b8ff0ab4243586e1fe74849",
      "parents": [
        "95f90784eaa0b377d3c6d9101c84e8817cbea494"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Aug 07 11:19:17 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 02 08:14:56 2017 -0700"
      },
      "message": "Add O MR1 define\n\nBug: 64394076\nTest: none\nChange-Id: Ice3991c626dd2cce93c9a571ba529fa5b0129492\n"
    },
    {
      "commit": "f66fa495a883ee2f6df955e06f7b364907c6fcd9",
      "tree": "3f6f1dedf0cf95185c79dceb3bc4b259417ca047",
      "parents": [
        "93068895091ee516c55a7873a4056145a7da3644"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 14:27:43 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 14:27:43 2017 -0700"
      },
      "message": "Add __ANDROID_NDK__ to identify using the NDK.\n\nI\u0027ve added some things like __ANDROID_MAJOR__ to an ndk-version.h, but\nthat is only in the NDK itself and so doesn\u0027t help the platform. Add\n__ANDROID_NDK__ to identify that you\u0027re building for the NDK and not\nthe platform.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/407\nChange-Id: I2d1f1c28e3764e4e658cf675b290b7a17253ee33\n"
    },
    {
      "commit": "5bc78c8bcd0c1e634c04029309ede3ec05f2d424",
      "tree": "ba41f009cdf5fb27c766b4efe05c4cbb566d2a85",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 11:35:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:55:42 2016 -0800"
      },
      "message": "Add and use constants for the Android API levels.\n\nTest: bionic tests still pass\nChange-Id: If1b619cfc9db1d3f5d91f14f2ace71058dca0c4a\n"
    },
    {
      "commit": "495ec92605cb608730cc920ba5afe454860abf2b",
      "tree": "f5daaa0ceaa1e28183acd03e60ed936b23378d03",
      "parents": [
        "42743f1e9ebf0771fea41361e9424f58f8de1cde"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:08:44 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:08:44 2016 -0700"
      },
      "message": "Add __ANDROID_API_FUTURE__.\n\nNeeded for checking conditions like `__ANDROID_API__ \u003c\n__ANDROID_API_FUTURE__` for providing inlines for things that have\nnot yet been included in any release.\n\nTest: make checkbuild tests\nBug: None\nChange-Id: Ibcddac5a538ede020a8cb65fca03194475121966\n"
    },
    {
      "commit": "203e13d97de840e01eded6a267fef9f245cf3a15",
      "tree": "83517885755d8c28f7f6934bff67f7ad36addf39",
      "parents": [
        "767e8147d7f38bd9a23100ec9fa07b6a14a8b680"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 14:56:18 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 17:01:54 2016 -0700"
      },
      "message": "Always include \u003csys/cdefs.h\u003e.\n\nI made a mistake caught by code review earlier, so let\u0027s try to be\nsafer by default.\n\nThis patch also moves all our \"forwarding\" headers to the guardless\njust-include-the-other-thing style that we usually use. (Where we\nhave a comment explaining where the header comes from, I\u0027ve kept\nthat.)\n\nChange-Id: I37342cf5e2563c6a269b2ba61a697069b1c7913b\n"
    },
    {
      "commit": "99739d4280e11f3a63d23059349a0cf98c41f5c4",
      "tree": "c23209fbc8c33e4362452c7dfdedf8b6cb8abdc8",
      "parents": [
        "26bc9c64d5b0cad921e3070a4f94fa04e1077d90"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 13 17:16:47 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 13 17:45:39 2016 -0700"
      },
      "message": "Don\u0027t redefine __ANDROID_API__.\n\nBug: http://b/28178111\nChange-Id: I00ded8f90694d9ed28f3b4c97778635f5a564592\n"
    },
    {
      "commit": "4aa2e6a32a1ab90dc5baa626f6efc0feb9082716",
      "tree": "c5b8bc72c189ea2f6548c7379cde40005b68519e",
      "parents": [
        "837abf04667c29db178fd28f500537429a18be30"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 12:37:44 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 12:57:51 2014 -0700"
      },
      "message": "Give bionic\u0027s __ANDROID_API__ a more reasonable value.\n\nThis matches what frameworks/base does with Build.VERSION and means that\nbionic\u0027s version number will always sort \u003e\u003d than any released version.\nThis should prevent confusion in code that builds both against bionic\nand the NDK.\n\n(Note that \u003csys/cdefs.h\u003e drags this in, so it\u0027s always in the namespace.)\n\nBug: 14613709\nChange-Id: I91fb745920e848a6b20f2f5797c0a7d6cde6c032\n"
    },
    {
      "commit": "23d24394e72715ddf580726655c8ba3fbcf11bfe",
      "tree": "66d28b315a0891c1ea5e99e870ca03e511d3186c",
      "parents": [
        "9962cef7c6ba20bcb4d4f5e6a4c923aa335d9107"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:05:11 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:05:11 2010 +0100"
      },
      "message": "libc: Add \u003candroid/api-level.h\u003e\n\nAdd a new header that defines __ANDROID_API__ as a constant integer\ncorresponding to the current native API level. This header is included\nby \u003csys/cdefs.h\u003e\n\nChange-Id: Ib4774e247b395991266245815a24292afc919848\nNOTE: This header is already provided by the NDK\u0027s platform headers.\n      for levels 3 to 9.\n"
    }
  ]
}
