)]}'
{
  "log": [
    {
      "commit": "5e2285d3ccdbb64a49ad2e5e521f50c897a3954d",
      "tree": "cd56c251f1710652fad3b84121248a12071b42e0",
      "parents": [
        "c9a840ac76c7cdbe6028ac91cdb8eb6698f0a854"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 22 12:19:05 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 22 16:05:03 2017 -0800"
      },
      "message": "Allocate thread local buffers in __init_tls.\n\nThread local buffers were using pthread_setspecific for storage with\nlazy initialization. pthread_setspecific shares TLS slots between the\nlinker and libc.so, so thread local buffers being initialized in a\ndifferent order between libc.so and the linker meant that bad things\nwould happen (manifesting as snprintf not working because the\nlocale was mangled)\n\nBug: http://b/20464031\nTest: /data/nativetest64/bionic-unit-tests/bionic-unit-tests\n      everything passes\nTest: /data/nativetest/bionic-unit-tests/bionic-unit-tests\n      thread_local tests are failing both before and after (KUSER_HELPERS?)\nTest: /data/nativetest64/bionic-unit-tests-static/bionic-unit-tests-static\n      no additional failures\nChange-Id: I9f445a77c6e86979f3fa49c4a5feecf6ec2b0c3f\n"
    },
    {
      "commit": "53de874c3cd5b8aa243546bb1c206f5a709db1fd",
      "tree": "982316adf0c878fb85bf7c4579a04c4f631424dc",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "message": "The default locale \"\" should be a UTF-8 locale.\n\n\"ls -q\" (or \"adb shell -tt ls\") was mangling non-ASCII because mbrtowc\nwas returning multibyte characters as their individual bytes. This was\nbecause toybox asks for \"\" rather than \"C.UTF-8\", and for some reason\nwe were interpreting that as \"C\" rather than \"C.UTF-8\".\n\nTest: bionic tests, ls\nChange-Id: Ic60e3b90cd5fe689e5489fad0d5d91062b9594ed\n"
    },
    {
      "commit": "3103f6d39e4ae309a9374ee38f414400c889c558",
      "tree": "e67c7868d7bcc5b0f76fc060f8ac7724b6865677",
      "parents": [
        "904460f749b5a90ca25228a6a3fa0c9ef413a961"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:42:19 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 22 00:44:37 2016 -0700"
      },
      "message": "Add strtof_l and strtod_l.\n\nlibc++ needs these now. Add shims to match the others.\n\nTest: make checkbuild tests\nBug: http://b/31639993\nChange-Id: Ifec6c32099145d8d3d1a5639a4809e5e9f553c33\n"
    },
    {
      "commit": "0a610d00fee344f804d3338c880d73d2de5db143",
      "tree": "9f7c63a66f0fdf057b5b78d4c250ab80152e0659",
      "parents": [
        "4bc6eea83e127a50d4763f067486ec79ed4e61a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "message": "Upgrade to tzcode-2016f.\n\nNo significant changes other than a default implementation of strftime_l.\n\nChange-Id: I6edd2c03e5e7559f012c0c87d43f7109d641d3ca\n"
    },
    {
      "commit": "62e3a078aa7b156139b1a2cec77e1a84eb10c5a4",
      "tree": "b37425943e0cd7284b319d6cad98bd71dcfdc8bb",
      "parents": [
        "9ee905f12fa0aeb4ae0df708e15d2ffcfaf58000"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8\n"
    },
    {
      "commit": "f7e3b3e48ab3ffbf7bbce5102ce1739c200093cb",
      "tree": "19fe08cbb0324d67ce277d8f6594f8c126d3b3c6",
      "parents": [
        "c3307dc43b2526c4031837738b139d22831c5d09"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 20:08:21 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 20:39:10 2015 -0800"
      },
      "message": "Use pthread_once for g_uselocale_key creation.\n\nBug: 19625804\nChange-Id: I57ec4c965067dc0c157c795c1f7217a3ca403286\n"
    },
    {
      "commit": "4a2891d8c8f09a64ea9e1479518b0cc969bd5969",
      "tree": "435435ccd995c37c0e5b27948da8addc464b558d",
      "parents": [
        "dec9501af2ee4d7cec3a163310d42e8ea1b8c58f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 16:53:23 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 16:53:23 2015 -0800"
      },
      "message": "Better control of pthread keys used in bionic.\n\nChange-Id: I1e1bc77c0e7879baead6c3417282ce549a1153b5\n"
    },
    {
      "commit": "75ef63d6cf83787233d1c45489c4ec03b0a67d16",
      "tree": "af1358c723e21ebfbd48a4dfd2abc3f262cb309d",
      "parents": [
        "f6640348876cd1d4d43cc95cf63306fedb83d8b9"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 21 00:18:07 2014 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 21 10:26:09 2014 -0800"
      },
      "message": "Move some pthread functions to signal.h.\n\nPOSIX specifies that pthread_kill(3) and pthread_sigmask(3) are\nsupposed to live in signal.h rather than pthread.h.\n\nSince signal.h now needs pthread_t and pthread_attr_t, I\u0027ve moved\nthose defintions into include/machine/pthread_types.h to keep the\nnamespace clean. I also sorted some includes. The combination of these\ntwo things seems to have exploded into a cascade of missing includes,\nso this patch also cleans up all those.\n\nChange-Id: Icfa92a39432fe83f542a797e5a113289d7e4ad0c\n"
    },
    {
      "commit": "b20c24456e43df430ec5626a68e5dc0dc6929344",
      "tree": "c9b85b4d913f8f2738bdc8772b9b9a21d6ab51dc",
      "parents": [
        "08a70184b42ef2963794a56233b0253e0b367253"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 15:04:08 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 15:52:22 2014 -0800"
      },
      "message": "Implement all the POSIX _l functions.\n\nStrictly speaking, this only implements the _l variants of the functions\nwe actually have. We\u0027re still missing nl_langinfo_l, for example, but we\ndon\u0027t have nl_langinfo either.\n\nChange-Id: Ie711c7b04e7b9100932a13f5a5d5b28847eb4c12\n"
    },
    {
      "commit": "7e0d0f8572152c47a993e7bc8407690556754bd4",
      "tree": "4098f53c0801f8076c1080604ab98a363efdbd41",
      "parents": [
        "695781b6f0419f82939176a6ec1a240300d9f036"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 04 18:03:44 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 04 18:03:44 2014 -0800"
      },
      "message": "Fix newlocale with a NULL locale name.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d78567\nChange-Id: I272dabc12ab186b44a525c7e8ac1846e62334e85\n"
    },
    {
      "commit": "224ff048efc782bd60047a3ae53eb66941f73125",
      "tree": "7c148e8f2e8095a98fa9cc24e710edc3ccf5d008",
      "parents": [
        "9a74e4c15c17b9126ad348d865002880fc36bd12"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 14 13:56:51 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 14 13:56:51 2014 -0700"
      },
      "message": "Change name of MB_CUR_MAX implementation function.\n\nGlibc calls theirs __ctype_get_mb_cur_max. Make ours match to cut down\non differences between bionic and glibc.\n\nBug: 11156955\nChange-Id: Ib7231f01aa9676dff30aea0af25d597bfe07bc73\n"
    },
    {
      "commit": "1aec7c1a35b2d03038b194967d5ebdc8e2c24b80",
      "tree": "977211860df02be4f4c0843cf231ec6c3da88ee6",
      "parents": [
        "0f7ed163cf6c1fe6d71a1d7e5fb6d0989213be85"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 30 10:53:48 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 30 17:09:46 2014 -0700"
      },
      "message": "Proper MB_CUR_MAX.\n\nPreviously this was hard coded to 4. This is only the case for UTF-8\nlocales.\n\nAs a side effect, this properly reports C.UTF-8 as the default locale\ninstead of C.\n\nChange-Id: I7c73cc8fe6ffac61d211cd5f75287e36de06f4fc\n"
    },
    {
      "commit": "1abb8bd21d64c2bd21258469b688483f821974d5",
      "tree": "53bbf37102d4f12e095eab1816506e7b84153479",
      "parents": [
        "123172ae370fe51e2d1fc26fe0aafa095af52919"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jul 25 11:24:03 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jul 25 11:24:03 2014 -0700"
      },
      "message": "en_US.UTF-8 is also supported.\n\nChange-Id: Ic35fad3596dc5e24ee8ae35543a274a471f27bb2\n"
    },
    {
      "commit": "1728b2396591853345507a063ed6075dfd251706",
      "tree": "7083cd234073afa5179b94b3d978550c890af90c",
      "parents": [
        "bac795586bbc5dcbe886d8d781710f60c4c19d9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "message": "Switch to g_ for globals.\n\nThat\u0027s what the Google style guide recommends, and we\u0027re starting\nto get a mix.\n\nChange-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc\n"
    },
    {
      "commit": "5a0aa3dee247a313f04252cf45608097695d5953",
      "tree": "1bbc0d1e4e60717285b17b40ab155bdfbace5e37",
      "parents": [
        "9fb53dd4dbaa7633c234d9da8417827fa3d3c32f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 30 22:03:12 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 01 14:46:54 2014 -0700"
      },
      "message": "Switch to a working UTF-8 mb/wc implementation.\n\nAlthough glibc gets by with an 8-byte mbstate_t, OpenBSD uses 12 bytes (of\nthe 128 bytes it reserves!).\n\nWe can actually implement UTF-8 encoding/decoding with a 0-byte mbstate_t\nwhich means we can make things work on LP32 too, as long as we accept the\nlimitation that the caller needs to present us with a complete sequence\nbefore we\u0027ll process it.\n\nOur behavior is fine when going from characters to bytes; we just\nupdate the source wchar_t** to say how far through the input we got.\n\nI\u0027ll come back and use the 4 bytes we do have to cope with byte sequences\nsplit across multiple input buffers. The fact that we don\u0027t support\nUTF-8 sequences longer than 4 bytes plus the fact that the first byte of\na UTF-8 sequence encodes the length means we shouldn\u0027t need the other\nfields OpenBSD used (at the cost of some recomputation in cases where a\nsequence is split across buffers).\n\nThis patch also makes the minimal changes necessary to setlocale(3) to\nmake us behave like glibc when an app requests UTF-8. (The difference\nbeing that our \"C\" locale is the same as our \"C.UTF-8\" locale.)\n\nChange-Id: Ied327a8c4643744b3611bf6bb005a9b389ba4c2f\n"
    },
    {
      "commit": "2f68866f371faa8ef727fc91e59e1e93326a3949",
      "tree": "cee363e70470c5aeef3b30b5a6f359469df090f1",
      "parents": [
        "b88da06580a22d9a1ee5a1c573c49e89207bc71b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 13:34:26 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 13:34:26 2014 -0700"
      },
      "message": "Make uselocale(3) claim its pthread key in an ELF constructor.\n\npthread_once is nice for decoupling, but it makes resource availability less\npredictable, which is a bad thing.\n\nThis fixes a test failure if uselocale(3) is called before\npthread.pthread_key_create_lots runs.\n\nChange-Id: Ie2634f986a50e7965582d4bd6e5aaf48cf0d55c8\n"
    },
    {
      "commit": "c4936e20a3a8772cc393423037be36091e68acc2",
      "tree": "17df342ad605fcb25812936a34d68e3f225b387e",
      "parents": [
        "ac70d2e1fe71f98232942237c2b463ea3adbf662"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 17:05:05 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 19:37:38 2014 -0700"
      },
      "message": "Flesh out \u003clocale.h\u003e.\n\nThis is a trivial implementation that only supports the C/POSIX locale.\n\nChange-Id: Ib11cea4249e1862aca96a8b94d58ea9a418cbe75\n"
    },
    {
      "commit": "5363a45f2b6d4eeb054710d0886bbadea8a15273",
      "tree": "907bc848885d648d631a41c768ca60b7f69bbcdf",
      "parents": [
        "5acd2d40052c55255a346167e504afb884eeb3af"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 14:34:12 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 14:34:12 2014 -0700"
      },
      "message": "Clean up localeconv(3).\n\nThe OpenBSD doesn\u0027t support C99, and the extent to which we support\nlocales is trivial, so just do it ourselves.\n\nChange-Id: If0a06e627ecc593f7b8ea3e9389365782e49b00e\n"
    }
  ]
}
