)]}'
{
  "log": [
    {
      "commit": "fbe30158184c28f00f109cf4b8870c554e996bab",
      "tree": "5b638d3661bc728cc77ae95ecd660ee8da008178",
      "parents": [
        "acb7b1f53e25fcad89375512e6eaea8115dc6af5"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Dec 03 12:22:59 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Dec 03 18:35:23 2016 -0800"
      },
      "message": "Update ChangeLog for 4.4.0.\n"
    },
    {
      "commit": "acb7b1f53e25fcad89375512e6eaea8115dc6af5",
      "tree": "63f318c558656c195a020896e3bb1c63b08ad2a5",
      "parents": [
        "7179351a45f00fa943cfe23b555036615b91ce9d"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Dec 03 16:47:36 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Dec 03 16:50:58 2016 -0800"
      },
      "message": "Add --disable-syscall.\n\nThis resolves #517.\n"
    },
    {
      "commit": "7179351a45f00fa943cfe23b555036615b91ce9d",
      "tree": "50b975404e1c578a40cc20ea3647ec8a73bc05e7",
      "parents": [
        "eb29d7ec0e2c4994e10ec40d42265a86e569500c"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 30 09:57:12 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 30 09:57:12 2016 -0800"
      },
      "message": "Update configure cache file example.\n"
    },
    {
      "commit": "eb29d7ec0e2c4994e10ec40d42265a86e569500c",
      "tree": "469e9f390c2dd73a867b8c65c2648856f4cdbac2",
      "parents": [
        "32127949a3045330b8058bbf474e619e1bf2f05f"
      ],
      "author": {
        "name": "John Szakmeister",
        "email": "john@szakmeister.net",
        "time": "Wed Nov 23 15:32:35 2016 -0500"
      },
      "committer": {
        "name": "John Szakmeister",
        "email": "john@szakmeister.net",
        "time": "Wed Nov 23 15:32:35 2016 -0500"
      },
      "message": "Implement a more reliable detection scheme for os_unfair_lock.\n\nThe core issue here is the weak linking of the symbol, and in certain\nenvironments--for instance, using the latest Xcode (8.1) with the latest\nSDK (10.12)--os_unfair_lock may resolve even though you\u0027re compiling on\na host that doesn\u0027t support it (10.11).\n\nWe can use the availability macros to circumvent this problem, and\ndetect that we\u0027re not compiling for a target that is going to support\nthem and error out at compile time.  The other alternative is to do a\nruntime check, but that presents issues for cross-compiling.\n"
    },
    {
      "commit": "32127949a3045330b8058bbf474e619e1bf2f05f",
      "tree": "3ace87b50dcb2dc194eb8294662dddbca8bab3b7",
      "parents": [
        "c3b85f25857cf4022be7b186adc1e20206d4c74f"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 22 10:58:58 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 22 10:58:58 2016 -0800"
      },
      "message": "Enable overriding JEMALLOC_{ALLOC,FREE}_JUNK.\n\nThis resolves #509.\n"
    },
    {
      "commit": "c3b85f25857cf4022be7b186adc1e20206d4c74f",
      "tree": "4fd6f80c6e9518e9565a9efcac0dfa8944ba9646",
      "parents": [
        "5234be21333e341252ed7223570d790970694d80"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 22 10:58:23 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 22 10:58:23 2016 -0800"
      },
      "message": "Style fixes.\n"
    },
    {
      "commit": "5234be21333e341252ed7223570d790970694d80",
      "tree": "900e27ea83ea6eee24cc227024da84aefb4cf977",
      "parents": [
        "fda60be799e7929191f3844dd55b685549b6d867"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 17 15:14:57 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 17 15:14:57 2016 -0800"
      },
      "message": "Add pthread_atfork(3) feature test.\n\nSome versions of Android provide a pthreads library without providing\npthread_atfork(), so in practice a separate feature test is necessary\nfor the latter.\n"
    },
    {
      "commit": "fda60be799e7929191f3844dd55b685549b6d867",
      "tree": "c0e6128091d738d3e1f906867bcc2f98ae3f3b51",
      "parents": [
        "a64123ce13545ef57a36285cc9d33978e59fc3da"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 17 11:50:52 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 17 11:50:52 2016 -0800"
      },
      "message": "Update a comment.\n"
    },
    {
      "commit": "a64123ce13545ef57a36285cc9d33978e59fc3da",
      "tree": "7ba28f07b1ffe9622f101f0c9d0d814f05f9bdcd",
      "parents": [
        "f7ca1c9bc321feffe056f5d154c287f63e324020"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 17 10:24:51 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 17 10:31:57 2016 -0800"
      },
      "message": "Refactor madvise(2) configuration.\n\nAdd feature tests for the MADV_FREE and MADV_DONTNEED flags to\nmadvise(2), so that MADV_FREE is detected and used for Linux kernel\nversions 4.5 and newer.  Refactor pages_purge() so that on systems which\nsupport both flags, MADV_FREE is preferred over MADV_DONTNEED.\n\nThis resolves #387.\n"
    },
    {
      "commit": "f7ca1c9bc321feffe056f5d154c287f63e324020",
      "tree": "ec1b4aa625069c5d2735aa00a127483d65abb844",
      "parents": [
        "aec5a051e8848f06aa041c9ebfc092a2626356fc"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 19:41:09 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 19:41:09 2016 -0800"
      },
      "message": "Remove a residual comment.\n"
    },
    {
      "commit": "aec5a051e8848f06aa041c9ebfc092a2626356fc",
      "tree": "8ad72ea98a7126d20b46f93b91dc35955b173df2",
      "parents": [
        "95974c04403bbfb2fe3031e86785d354ef5e5906"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 18:28:38 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 18:28:38 2016 -0800"
      },
      "message": "Avoid gcc type-limits warnings.\n"
    },
    {
      "commit": "95974c04403bbfb2fe3031e86785d354ef5e5906",
      "tree": "7fca306896c03bf42b985da34ee5fc7b38b4a081",
      "parents": [
        "9b94c015af7fe7f86b19c71059be8758afd06fe3"
      ],
      "author": {
        "name": "Maks Naumov",
        "email": "maksqwe1@ukr.net",
        "time": "Wed Nov 16 09:56:29 2016 +0200"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 11:23:31 2016 -0800"
      },
      "message": "Remove size_t -\u003e unsigned -\u003e size_t conversion.\n"
    },
    {
      "commit": "9b94c015af7fe7f86b19c71059be8758afd06fe3",
      "tree": "e8062c06b702a4fe6d67221bd286216fa6c75089",
      "parents": [
        "4066b4ef57c3b14bb57696539455809ce4a714c3"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 10:56:40 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 10:56:40 2016 -0800"
      },
      "message": "Document how to use --cache configure option.\n\nThis resolves #494.\n"
    },
    {
      "commit": "4066b4ef57c3b14bb57696539455809ce4a714c3",
      "tree": "ccb4ccc7ac20ae9070a89864cd109d5edd9164a4",
      "parents": [
        "8a4528bdd16eee1b1c00c4305ee246568d382b0a"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 10:40:00 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 16 10:40:00 2016 -0800"
      },
      "message": "Revert \"Add JE_RUNNABLE() and use it for os_unfair_lock_*() test.\"\n\nThis reverts commit a2e601a2236315fb6f994ff364ea442ed0aed07b.\n\nJE_RUNNABLE() causes general cross-compilation issues.\n"
    },
    {
      "commit": "8a4528bdd16eee1b1c00c4305ee246568d382b0a",
      "tree": "f57e88012a0fbd26e945276d3ec450b6858acf76",
      "parents": [
        "2c951545011f201c89765b9ada656e99538d95aa"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 15 15:01:03 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 15 15:01:03 2016 -0800"
      },
      "message": "Uniformly cast mallctl[bymib]() oldp/newp arguments to (void *).\n\nThis avoids warnings in some cases, and is otherwise generally good\nhygiene.\n"
    },
    {
      "commit": "2c951545011f201c89765b9ada656e99538d95aa",
      "tree": "4fdb5c8bf7a5716ccd504c07a6ac47379d70b2fe",
      "parents": [
        "a38acf716eefc5284e89a35be74229ef3545d007"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 14 23:29:21 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 15 13:08:33 2016 -0800"
      },
      "message": "Add packing test, which verifies stable layout policy.\n"
    },
    {
      "commit": "a38acf716eefc5284e89a35be74229ef3545d007",
      "tree": "5ef188dd5051d5bbbf3222ec7857bd4e2b36f0d4",
      "parents": [
        "c0a667112cf33968b425dfbb50594aba54ea850b"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 15 13:07:53 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 15 13:08:33 2016 -0800"
      },
      "message": "Add extent serial numbers.\n\nAdd extent serial numbers and use them where appropriate as a sort key\nthat is higher priority than address, so that the allocation policy\nprefers older extents.\n\nThis resolves #147.\n"
    },
    {
      "commit": "c0a667112cf33968b425dfbb50594aba54ea850b",
      "tree": "b2439b243e9e4bcf5f44d5b66a47ed5f538d571d",
      "parents": [
        "a2e601a2236315fb6f994ff364ea442ed0aed07b"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 15 10:31:06 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 15 10:34:02 2016 -0800"
      },
      "message": "Fix arena_reset() crashing bug.\n\nThis regression was caused by 498856f44a30b31fe713a18eb2fc7c6ecf3a9f63\n(Move slabs out of chunks.).\n"
    },
    {
      "commit": "a2e601a2236315fb6f994ff364ea442ed0aed07b",
      "tree": "12e487a250fd74b78c669f20fc5528a2289a00d5",
      "parents": [
        "c25e711cf97bc64d31e6bbc35fe24e0f55c657d8"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Nov 12 09:47:07 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Nov 12 09:48:06 2016 -0800"
      },
      "message": "Add JE_RUNNABLE() and use it for os_unfair_lock_*() test.\n\nThis resolves #494.\n"
    },
    {
      "commit": "c25e711cf97bc64d31e6bbc35fe24e0f55c657d8",
      "tree": "b72093ff93c33a54c8e5d3b6d5abd0dc7a1ddba9",
      "parents": [
        "32d69e967e40fd5546d2705551dd6f37575ffe81"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Nov 11 23:49:40 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Nov 11 23:50:35 2016 -0800"
      },
      "message": "Reduce memory usage for sdallocx() test_alignment_and_size.\n"
    },
    {
      "commit": "32d69e967e40fd5546d2705551dd6f37575ffe81",
      "tree": "fc4f4b900d089aa671a09903b258f333c13d13b9",
      "parents": [
        "c233dd5e40ad7a6c79ff39f4ea8a3936b95b0458"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 10 15:35:29 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 10 15:36:17 2016 -0800"
      },
      "message": "Add configure support for *-*-linux-android.\n\nThis is tailored to Android, i.e. more specific than the *-*-linux*\nconfiguration.\n\nThis resolves #471.\n"
    },
    {
      "commit": "c233dd5e40ad7a6c79ff39f4ea8a3936b95b0458",
      "tree": "f9b2db780d6ae0bd7b0f1b8224c843cd8b6c3fce",
      "parents": [
        "85dae2ff4990d86644cf1b2bcce98e6b4afa340b"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 10 15:02:05 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 10 15:02:05 2016 -0800"
      },
      "message": "Update config.{guess,sub} from upstream.\n"
    },
    {
      "commit": "85dae2ff4990d86644cf1b2bcce98e6b4afa340b",
      "tree": "7bab3a6d06e633ef46a7a9aa41aebd87d03d445f",
      "parents": [
        "5e0373c81506b89707471ef25f0f94d0fb6c0255"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 16:22:02 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 16:22:02 2016 -0800"
      },
      "message": "Update ChangeLog for 4.3.1.\n"
    },
    {
      "commit": "5e0373c81506b89707471ef25f0f94d0fb6c0255",
      "tree": "7e86e8073a32e486344f21b974fd094b81a3c04f",
      "parents": [
        "cda59f99701bc3acc569023e197abddc548330f4"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 11:50:11 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 11:50:11 2016 -0800"
      },
      "message": "Fix test_prng_lg_range_zu() to work on 32-bit systems.\n"
    },
    {
      "commit": "cda59f99701bc3acc569023e197abddc548330f4",
      "tree": "3d006bbceee56ba0ee0e212cfd9ad688c509ab54",
      "parents": [
        "2e46b13ad545c599679f931c9c60ce06adae3859"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 11:27:48 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 11:27:48 2016 -0800"
      },
      "message": "Rename atomic_*_{uint32,uint64,u}() to atomic_*_{u32,u64,zu}().\n\nThis change conforms to naming conventions throughout the codebase.\n"
    },
    {
      "commit": "2e46b13ad545c599679f931c9c60ce06adae3859",
      "tree": "7fd6f89604a87ed2042e7dea4c92b374fb5abdd7",
      "parents": [
        "04b463546e57ecd9ebc334739881a1c69623813a"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 10:53:35 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 10:53:35 2016 -0800"
      },
      "message": "Revert \"Define 64-bits atomics unconditionally\"\n\nThis reverts commit c2942e2c0e097e7c75a3addd0b9c87758f91692e.\n\nThis resolves #495.\n"
    },
    {
      "commit": "04b463546e57ecd9ebc334739881a1c69623813a",
      "tree": "aab9e1d85e76d6cea1aa9dde7ea338c3b877f36c",
      "parents": [
        "e0a9e78374f56bc7a27258ced08d89bfc436d8af"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 10:52:44 2016 -0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Nov 07 10:52:44 2016 -0800"
      },
      "message": "Refactor prng to not use 64-bit atomics on 32-bit platforms.\n\nThis resolves #495.\n"
    },
    {
      "commit": "e0a9e78374f56bc7a27258ced08d89bfc436d8af",
      "tree": "1bbcd8b2a88f84e2d26e774e78c887f890282148",
      "parents": [
        "d30b3ea51a6cb3abe88251a0fd769b0438c88a6e"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Nov 04 15:15:24 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Nov 04 15:15:24 2016 -0700"
      },
      "message": "Update ChangeLog for 4.3.0.\n"
    },
    {
      "commit": "d30b3ea51a6cb3abe88251a0fd769b0438c88a6e",
      "tree": "212383dc55bd7f4bf1e37dbe557d4d1d137d8b98",
      "parents": [
        "6d2a57cfbbd9991ef120b9773e971053deec776a"
      ],
      "author": {
        "name": "Matthew Parkinson",
        "email": "parky@outlook.com",
        "time": "Fri Nov 04 10:27:32 2016 +0000"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Nov 04 09:59:05 2016 -0700"
      },
      "message": "Fixes to Visual Studio Project files\n"
    },
    {
      "commit": "6d2a57cfbbd9991ef120b9773e971053deec776a",
      "tree": "5e0f387def7152c11d98018b888c9b3ce5094ce8",
      "parents": [
        "076087692750ca6ba43b52c77e03d185002e5371"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 21:57:17 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 21:57:17 2016 -0700"
      },
      "message": "Use -std\u003dgnu11 if available.\n\nThis supersedes -std\u003dgnu99, and enables C11 atomics.\n"
    },
    {
      "commit": "076087692750ca6ba43b52c77e03d185002e5371",
      "tree": "73a81de1543b45fb358c74a4c3f336c0e3d1a736",
      "parents": [
        "a967fae362f55ee7162fb48776dfac69d4f28d1c"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Nov 04 00:02:43 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Nov 04 00:02:43 2016 -0700"
      },
      "message": "Update ChangeLog for 4.3.0.\n"
    },
    {
      "commit": "a967fae362f55ee7162fb48776dfac69d4f28d1c",
      "tree": "bf3de8a61e9cb545c6c8e20a150dbd4896e26d6d",
      "parents": [
        "4a7852137d8b6598fdb90ea8e1fd3bc8a8b94a3a"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 23:49:21 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 23:49:21 2016 -0700"
      },
      "message": "Fix/simplify extent_recycle() allocation size computations.\n\nDo not call s2u() during alloc_size computation, since any necessary\nceiling increase is taken care of later by extent_first_best_fit() --\u003e\nextent_size_quantize_ceil(), and the s2u() call may erroneously cause a\nhigher quantization result.\n\nRemove an overly strict overflow check that was added in\n4a7852137d8b6598fdb90ea8e1fd3bc8a8b94a3a (Fix extent_recycle()\u0027s\ncache-oblivious padding support.).\n"
    },
    {
      "commit": "4a7852137d8b6598fdb90ea8e1fd3bc8a8b94a3a",
      "tree": "747d5a917ea38829d7e88a173da9160db3a4138e",
      "parents": [
        "ea9961acdbc9f7e2c95a3b55ce0ac1024af5d167"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 21:14:59 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 22:33:35 2016 -0700"
      },
      "message": "Fix extent_recycle()\u0027s cache-oblivious padding support.\n\nAdd padding *after* computing the size class, so that the optimal size\nclass isn\u0027t skipped during search for a usable extent.  This regression\nwas caused by b46261d58b449cc4c099ed2384451a2499688f0e (Implement\ncache-oblivious support for huge size classes.).\n"
    },
    {
      "commit": "ea9961acdbc9f7e2c95a3b55ce0ac1024af5d167",
      "tree": "57494db410e0250c3d28958e9363e15976eb5c9a",
      "parents": [
        "8dd5ea87cac39d9a90dbe40d13267ec02df0214c"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 21:18:50 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 22:33:34 2016 -0700"
      },
      "message": "Fix psz/pind edge cases.\n\nAdd an \"over-size\" extent heap in which to store extents which exceed\nthe maximum size class (plus cache-oblivious padding, if enabled).\nRemove psz2ind_clamp() and use psz2ind() instead so that trying to\nallocate the maximum size class can in principle succeed.  In practice,\nthis allows assertions to hold so that OOM errors can be successfully\ngenerated.\n"
    },
    {
      "commit": "8dd5ea87cac39d9a90dbe40d13267ec02df0214c",
      "tree": "787ed4b1f3989dcceba6bd2ba3b888e3ae2f4563",
      "parents": [
        "4f7d8c2dee624536e30e2fba907e2ce469b2cdf7"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 17:25:54 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 22:33:23 2016 -0700"
      },
      "message": "Fix extent_alloc_cache[_locked]() to support decommitted allocation.\n\nFix extent_alloc_cache[_locked]() to support decommitted allocation, and\nuse this ability in arena_stash_dirty(), so that decommitted extents are\nnot needlessly committed during purging.  In practice this does not\nhappen on any currently supported systems, because both extent merging\nand decommit must be implemented; all supported systems implement one\nxor the other.\n"
    },
    {
      "commit": "4f7d8c2dee624536e30e2fba907e2ce469b2cdf7",
      "tree": "a79486d8761e2c9681daacdf0c4675a25fe27317",
      "parents": [
        "04e1328ef143a5b6490f971716d9934719d752bf"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 15:00:02 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Nov 03 15:00:02 2016 -0700"
      },
      "message": "Update symbol mangling.\n"
    },
    {
      "commit": "04e1328ef143a5b6490f971716d9934719d752bf",
      "tree": "153fe0112d093c180f95247dfde061d8d37838e9",
      "parents": [
        "69f027b8558c30e184921ce22bb187aafcad8a02"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 19:45:01 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 21:39:24 2016 -0700"
      },
      "message": "Update ChangeLog for 4.3.0.\n"
    },
    {
      "commit": "69f027b8558c30e184921ce22bb187aafcad8a02",
      "tree": "b6fcf0bbff8e9deaac98a819d8d32448069b4f4e",
      "parents": [
        "25f7bbcf28f5c83b11149989b3552d87c1f3c5e9"
      ],
      "author": {
        "name": "Samuel Moritz",
        "email": "samuel.moritz@gmail.com",
        "time": "Mon Jul 25 19:33:27 2016 +0200"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 20:36:37 2016 -0700"
      },
      "message": "Support Debian GNU/kFreeBSD.\n\nTreat it exactly like Linux since they both use GNU libc.\n"
    },
    {
      "commit": "25f7bbcf28f5c83b11149989b3552d87c1f3c5e9",
      "tree": "aa27872a941e3e5d47a6da51d59da53fe018afe5",
      "parents": [
        "712fde79fda767ce1eec7cf1c967feeae90b0c21"
      ],
      "author": {
        "name": "Dave Watson",
        "email": "davejwatson@fb.com",
        "time": "Mon Oct 31 16:23:33 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 20:30:53 2016 -0700"
      },
      "message": "Fix long spinning in rtree_node_init\n\nrtree_node_init spinlocks the node, allocates, and then sets the node.\nThis is under heavy contention at the top of the tree if many threads\nstart to allocate at the same time.\n\nInstead, take a per-rtree sleeping mutex to reduce spinning.  Tested\nboth pthreads and osx OSSpinLock, and both reduce spinning adequately\n\nPrevious benchmark time:\n./ttest1 500 100\n~15s\n\nNew benchmark time:\n./ttest1 500 100\n.57s\n"
    },
    {
      "commit": "712fde79fda767ce1eec7cf1c967feeae90b0c21",
      "tree": "8844046e81c5402c0ca7faa0a055940180bf8d13",
      "parents": [
        "83ebf2fda5603fe07fcb3ff25c0dd5ad939204d8"
      ],
      "author": {
        "name": "Dave Watson",
        "email": "davejwatson@fb.com",
        "time": "Wed Nov 02 18:22:32 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 20:05:40 2016 -0700"
      },
      "message": "Check for existance of CPU_COUNT macro before using it.\n\nThis resolves #485.\n"
    },
    {
      "commit": "83ebf2fda5603fe07fcb3ff25c0dd5ad939204d8",
      "tree": "f98eabbc8d858fecff65f78ba53982368c19c129",
      "parents": [
        "d82f2b3473daef45d92d2a83d11487b22f9db4d3"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 19:50:44 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 19:50:44 2016 -0700"
      },
      "message": "Fix sycall(2) configure test for Linux.\n"
    },
    {
      "commit": "d82f2b3473daef45d92d2a83d11487b22f9db4d3",
      "tree": "bbc90aba058c1c43ddc8e86372f46e890b076c1b",
      "parents": [
        "795f6689dec28f161afbf5964ef1b17288dd384d"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 19:18:33 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 19:18:33 2016 -0700"
      },
      "message": "Do not use syscall(2) on OS X 10.12 (deprecated).\n"
    },
    {
      "commit": "795f6689dec28f161afbf5964ef1b17288dd384d",
      "tree": "2129b9e890bb8f0abfad0d17606c7fe0adf0b001",
      "parents": [
        "d9f7b2a4307f7ff9f7a139b33d366d44e8a8b83d"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 18:09:45 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 18:09:45 2016 -0700"
      },
      "message": "Add os_unfair_lock support.\n\nOS X 10.12 deprecated OSSpinLock; os_unfair_lock is the recommended\nreplacement.\n"
    },
    {
      "commit": "d9f7b2a4307f7ff9f7a139b33d366d44e8a8b83d",
      "tree": "c7efa4a91e4cb9fe382553a355a2f4ab81d40427",
      "parents": [
        "b54072dfeece6d25aa7c6b1a503ae350bfe6e1a0"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 18:06:40 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 18:06:40 2016 -0700"
      },
      "message": "Fix/refactor zone allocator integration code.\n\nFix zone_force_unlock() to reinitialize, rather than unlocking mutexes,\nsince OS X 10.12 cannot tolerate a child unlocking mutexes that were\nlocked by its parent.\n\nRefactor; this was a side effect of experimenting with zone\n{de,re}registration during fork(2).\n"
    },
    {
      "commit": "b54072dfeece6d25aa7c6b1a503ae350bfe6e1a0",
      "tree": "68f5ca8f7b0560d2190200bb051b55457fd5f2dc",
      "parents": [
        "eee1ca655e348b0602c96b702332c28d53869fff"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 18:05:19 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 18:05:19 2016 -0700"
      },
      "message": "Call _exit(2) rather than exit(3) in forked child.\n\n_exit(2) is async-signal-safe, whereas exit(3) is not.\n"
    },
    {
      "commit": "eee1ca655e348b0602c96b702332c28d53869fff",
      "tree": "cc3ce962f8696be1c7f99f5f8cc8fe9c3500a42b",
      "parents": [
        "7b0a8b74f048c397ff2276c9d2f5311fce70bd89"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 08:54:07 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Nov 02 09:14:47 2016 -0700"
      },
      "message": "Force no lazy-lock on Windows.\n\nMonitoring thread creation is unimplemented for Windows, which means\nlazy-lock cannot function correctly.\n\nThis resolves #310.\n"
    },
    {
      "commit": "7b0a8b74f048c397ff2276c9d2f5311fce70bd89",
      "tree": "2677cedd0814aaa188c90b8be5e5629d5bc95c80",
      "parents": [
        "2a2d1b6e86bcad3b0025b6b62689e9d0e666e155"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 01 15:26:35 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 01 15:26:35 2016 -0700"
      },
      "message": "malloc_stats_print() fixes/cleanups.\n\nFix and clean up various malloc_stats_print() issues caused by\n0ba5b9b6189e16a983d8922d8c5cb6ab421906e8 (Add \"J\" (JSON) support to\nmalloc_stats_print().).\n"
    },
    {
      "commit": "2a2d1b6e86bcad3b0025b6b62689e9d0e666e155",
      "tree": "0781e6e0ae4994df24e447cd72d7c71b33174d01",
      "parents": [
        "0ba5b9b6189e16a983d8922d8c5cb6ab421906e8"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 01 13:25:42 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Nov 01 13:25:42 2016 -0700"
      },
      "message": "Use \u003cquote\u003e...\u003c/quote\u003e rather than \u0026ldquo;...\u0026rdquo; or \"...\" in XML.\n"
    },
    {
      "commit": "0ba5b9b6189e16a983d8922d8c5cb6ab421906e8",
      "tree": "bb9771f0a9462a17fca4523d1f60f6588072d9c3",
      "parents": [
        "b93f63b3ebab068efdcfa2ea3e19055bfc2e7f82"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 22:30:49 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 22:30:49 2016 -0700"
      },
      "message": "Add \"J\" (JSON) support to malloc_stats_print().\n\nThis resolves #474.\n"
    },
    {
      "commit": "b93f63b3ebab068efdcfa2ea3e19055bfc2e7f82",
      "tree": "0ef432c4dba82672453af98661c686f9c9461360",
      "parents": [
        "90b60eeae4f557fae99158f9899bd7b01a9ac662"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 16:32:33 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 16:32:33 2016 -0700"
      },
      "message": "Fix extent_rtree acquire() to release element on error.\n\nThis resolves #480.\n"
    },
    {
      "commit": "90b60eeae4f557fae99158f9899bd7b01a9ac662",
      "tree": "c313d1b5ee36337e4e20ac45e4bac1d6498e8107",
      "parents": [
        "6a834d94bb863d1abd0175a07e98f4b9797fa435"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 15:28:22 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 15:28:22 2016 -0700"
      },
      "message": "Add an assertion in witness_owner().\n"
    },
    {
      "commit": "6a834d94bb863d1abd0175a07e98f4b9797fa435",
      "tree": "ce8e65c724ba0f172f3fcf5a459e872321e537eb",
      "parents": [
        "6c80321aed4b620acba4ced1a7a5871377cbc396"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 11:45:41 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 31 11:49:12 2016 -0700"
      },
      "message": "Refactor witness_unlock() to fix undefined test behavior.\n\nThis resolves #396.\n"
    },
    {
      "commit": "6c80321aed4b620acba4ced1a7a5871377cbc396",
      "tree": "839c503ea9778a5d254770ba2b525217128562b9",
      "parents": [
        "d87037a62c651f96ac4fb5a8c9db668697ee96e0"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Oct 29 22:55:08 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Oct 29 22:58:18 2016 -0700"
      },
      "message": "Use CLOCK_MONOTONIC_COARSE rather than COARSE_MONOTONIC_RAW.\n\nThe raw clock variant is slow (even relative to plain CLOCK_MONOTONIC),\nwhereas the coarse clock variant is faster than CLOCK_MONOTONIC, but\nstill has resolution (~1ms) that is adequate for our purposes.\n\nThis resolves #479.\n"
    },
    {
      "commit": "d87037a62c651f96ac4fb5a8c9db668697ee96e0",
      "tree": "84a8c990ac0904f4a89f5676bf2fff99df29b112",
      "parents": [
        "af0e28fd942d6f3b6198aebdeea6043b3542d096"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Oct 29 22:41:04 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Oct 29 22:41:04 2016 -0700"
      },
      "message": "Use syscall(2) rather than {open,read,close}(2) during boot.\n\nSome applications wrap various system calls, and if they call the\nallocator in their wrappers, unexpected reentry can result.  This is not\na general solution (many other syscalls are spread throughout the code),\nbut this resolves a bootstrapping issue that is apparently common.\n\nThis resolves #443.\n"
    },
    {
      "commit": "af0e28fd942d6f3b6198aebdeea6043b3542d096",
      "tree": "80d3932adc9d8c094c50a3e557abda194065fff6",
      "parents": [
        "1dcd0aa07fa16d2f70494baf997ac85b41de2ef1"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Oct 29 22:14:55 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Oct 29 22:14:55 2016 -0700"
      },
      "message": "Fix EXTRA_CFLAGS to not affect configuration.\n"
    },
    {
      "commit": "1dcd0aa07fa16d2f70494baf997ac85b41de2ef1",
      "tree": "424731aaf188baf7167eb45e0ae848897df4b38d",
      "parents": [
        "6ec2d8e279136f97b43078c7267f923a7cb0e571"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 23:59:42 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Sat Oct 29 00:13:11 2016 -0700"
      },
      "message": "Do not mark malloc_conf as weak on Windows.\n\nThis works around malloc_conf not being properly initialized by at least\nthe cygwin toolchain.  Prior build system changes to use\n-Wl,--[no-]whole-archive may be necessary for malloc_conf resolution to\nwork properly as a non-weak symbol (not tested).\n"
    },
    {
      "commit": "6ec2d8e279136f97b43078c7267f923a7cb0e571",
      "tree": "e341f7b97eb0f629f1f2c58dac0df3cacf47d2b7",
      "parents": [
        "830938840865fe236ae2bdc0abdb0d5778146859"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 23:03:25 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 23:03:25 2016 -0700"
      },
      "message": "Do not mark malloc_conf as weak for unit tests.\n\nThis is generally correct (no need for weak symbols since no jemalloc\nlibrary is involved in the link phase), and avoids linking problems\n(apparently unininitialized non-NULL malloc_conf) when using cygwin with\ngcc.\n"
    },
    {
      "commit": "830938840865fe236ae2bdc0abdb0d5778146859",
      "tree": "3c16a30b9f4aa96717e345206f23ca6365a924bf",
      "parents": [
        "bde815dc40c636523382912ecba443cc50b0eccd"
      ],
      "author": {
        "name": "Dave Watson",
        "email": "davejwatson@fb.com",
        "time": "Fri Oct 28 13:51:52 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 15:08:19 2016 -0700"
      },
      "message": "Support static linking of jemalloc with glibc\n\nglibc defines its malloc implementation with several weak and strong\nsymbols:\n\nstrong_alias (__libc_calloc, __calloc) weak_alias (__libc_calloc, calloc)\nstrong_alias (__libc_free, __cfree) weak_alias (__libc_free, cfree)\nstrong_alias (__libc_free, __free) strong_alias (__libc_free, free)\nstrong_alias (__libc_malloc, __malloc) strong_alias (__libc_malloc, malloc)\n\nThe issue is not with the weak symbols, but that other parts of glibc\ndepend on __libc_malloc explicitly.  Defining them in terms of jemalloc\nAPI\u0027s allows the linker to drop glibc\u0027s malloc.o completely from the link,\nand static linking no longer results in symbol collisions.\n\nAnother wrinkle: jemalloc during initialization calls sysconf to\nget the number of CPU\u0027s.  GLIBC allocates for the first time before\nsetting up isspace (and other related) tables, which are used by\nsysconf.  Instead, use the pthread API to get the number of\nCPUs with GLIBC, which seems to work.\n\nThis resolves #442.\n"
    },
    {
      "commit": "bde815dc40c636523382912ecba443cc50b0eccd",
      "tree": "772c0e9a41bc9314d8bf5cefbd52a180b037bc99",
      "parents": [
        "970d29325770a5006dc227f30481024c8661df51"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 11:23:24 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 11:23:24 2016 -0700"
      },
      "message": "Reduce memory requirements for regression tests.\n\nThis is intended to drop memory usage to a level that AppVeyor test\ninstances can handle.\n\nThis resolves #393.\n"
    },
    {
      "commit": "970d29325770a5006dc227f30481024c8661df51",
      "tree": "d7dc08dd5deff223a3ad2d8f0c35f71343133925",
      "parents": [
        "963289df13115001f85b028744dd5f4070b9dc05"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 11:00:36 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 11:00:36 2016 -0700"
      },
      "message": "Periodically purge in memory-intensive integration tests.\n\nThis resolves #393.\n"
    },
    {
      "commit": "963289df13115001f85b028744dd5f4070b9dc05",
      "tree": "a6d0e3c97f311420f1d431f2768ecdb18c1d0506",
      "parents": [
        "68e14c988460907c4b135feb3eb5fccd28953feb"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 10:44:39 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 10:44:39 2016 -0700"
      },
      "message": "Periodically purge in memory-intensive integration tests.\n\nThis resolves #393.\n"
    },
    {
      "commit": "68e14c988460907c4b135feb3eb5fccd28953feb",
      "tree": "a610f6623f0be5102659b928282f06aab086228e",
      "parents": [
        "977103c897225a4ab0380f09adc67b4c43143521"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 00:16:55 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 28 00:16:55 2016 -0700"
      },
      "message": "Fix over-sized allocation of rtree leaf nodes.\n\nUse the correct level metadata when allocating child nodes so that leaf\nnodes don\u0027t end up over-sized (2^16 elements vs 2^4 elements).\n"
    },
    {
      "commit": "977103c897225a4ab0380f09adc67b4c43143521",
      "tree": "8052c549b5e37c0eb5347a92aa796ae7cd7b556a",
      "parents": [
        "44df4a45cf587db8adee7edff4acfb96bfd3d670"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:31:25 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:31:25 2016 -0700"
      },
      "message": "Uniformly cast mallctl[bymib]() oldp/newp arguments to (void *).\n\nThis avoids warnings in some cases, and is otherwise generally good\nhygiene.\n"
    },
    {
      "commit": "44df4a45cf587db8adee7edff4acfb96bfd3d670",
      "tree": "01f92362c989a1b5874a28c68207780e2f133224",
      "parents": [
        "17aa187f6b3c5c320653167acf1e85d3d8645e62"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:29:59 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:29:59 2016 -0700"
      },
      "message": "Explicitly cast negative constants meant for use as unsigned.\n"
    },
    {
      "commit": "17aa187f6b3c5c320653167acf1e85d3d8645e62",
      "tree": "743d20e3045cb16b0e223b08d76c58b55d9a8ed3",
      "parents": [
        "48d4adfbeb32fcc7f455547d89641cd1fc459361"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:29:00 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:29:00 2016 -0700"
      },
      "message": "Add cast to silence (harmless) conversion warning.\n"
    },
    {
      "commit": "48d4adfbeb32fcc7f455547d89641cd1fc459361",
      "tree": "2ce432ebfd96deefe074ae55a1cccc4d7da9d56e",
      "parents": [
        "d76cfec319760c71bf3d30b9960c9e666785c461"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:26:33 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:26:33 2016 -0700"
      },
      "message": "Avoid negation of unsigned numbers.\n\nRather than relying on two\u0027s complement negation for alignment mask\ngeneration, use bitwise not and addition.  This dodges warnings from\nMSVC, and should be strength-reduced by compiler optimization anyway.\n"
    },
    {
      "commit": "d76cfec319760c71bf3d30b9960c9e666785c461",
      "tree": "579ae577d4b0344a8361ebaac3d658b4163c20f8",
      "parents": [
        "c44fa92db5cccf557d1ced431da6aa5ded58ed16"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:23:48 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 21:23:48 2016 -0700"
      },
      "message": "Only link with libm (-lm) if necessary.\n\nThis fixes warnings when building with MSVC.\n"
    },
    {
      "commit": "c44fa92db5cccf557d1ced431da6aa5ded58ed16",
      "tree": "e284ccb6c2bb03d52c6868fe736b3581e8f749ab",
      "parents": [
        "583c32c3056bff7606570e7836d33bf8fd18d299"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 17:10:56 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 17:10:56 2016 -0700"
      },
      "message": "Only use --whole-archive with gcc.\n\nConditionalize use of --whole-archive on the platform plus compiler,\nrather than on the ABI.  This fixes a regression caused by\n7b24c6e5570062495243f1e55131b395adb31e33 (Use --whole-archive when\nlinking integration tests on MinGW.).\n"
    },
    {
      "commit": "583c32c3056bff7606570e7836d33bf8fd18d299",
      "tree": "b0b00829ad0d47735b82b4c1df896773d67c6d58",
      "parents": [
        "7b24c6e5570062495243f1e55131b395adb31e33"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 15:41:43 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 27 15:41:43 2016 -0700"
      },
      "message": "Do not force lazy lock on Windows.\n\nThis reverts 13473c7c66a81a4dc1cf11a97e9c8b1dbb785b64, which was\nintended to work around bootstrapping issues when linking statically.\nHowever, this actually causes problems in various other configurations,\nso this reversion may force a future fix for the underlying problem, if\nit still exists.\n"
    },
    {
      "commit": "7b24c6e5570062495243f1e55131b395adb31e33",
      "tree": "64446abcc8aac14d2f7c1bf161af9056e555775a",
      "parents": [
        "b54d160dc4507eab5fb64e2e293019c5d3afd18c"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Oct 25 21:52:36 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Oct 25 22:03:14 2016 -0700"
      },
      "message": "Use --whole-archive when linking integration tests on MinGW.\n\nPrior to this change, the malloc_conf weak symbol provided by the\njemalloc dynamic library is always used, even if the application\nprovides a malloc_conf symbol.  Use the --whole-archive linker option\nto allow the weak symbol to be overridden.\n"
    },
    {
      "commit": "b54d160dc4507eab5fb64e2e293019c5d3afd18c",
      "tree": "1afc3d6a57b839231f3d03b5927b601ab7c7d42e",
      "parents": [
        "577d4572b0821a15e5370f9bf566d884b7cf707c"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 20 23:59:12 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 20 23:59:12 2016 -0700"
      },
      "message": "Do not (recursively) allocate within tsd_fetch().\n\nRefactor tsd so that tsdn_fetch() does not trigger allocation, since\nallocation could cause infinite recursion.\n\nThis resolves #458.\n"
    },
    {
      "commit": "577d4572b0821a15e5370f9bf566d884b7cf707c",
      "tree": "447f5103cfb02aadba1f2a3b5e9ece5d4e92d581",
      "parents": [
        "e5effef428b5bf941e1697f6000c97f1ce734756"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 13 12:18:38 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 13 15:37:00 2016 -0700"
      },
      "message": "Make dss operations lockless.\n\nRather than protecting dss operations with a mutex, use atomic\noperations.  This has negligible impact on synchronization overhead\nduring typical dss allocation, but is a substantial improvement for\nextent_in_dss() and the newly added extent_dss_mergeable(), which can be\ncalled multiple times during extent deallocations.\n\nThis change also has the advantage of avoiding tsd in deallocation paths\nassociated with purging, which resolves potential deadlocks during\nthread exit due to attempted tsd resurrection.\n\nThis resolves #425.\n"
    },
    {
      "commit": "e5effef428b5bf941e1697f6000c97f1ce734756",
      "tree": "c47df293e2107ae293644fa922876224c235c527",
      "parents": [
        "9acd5cf178eca9bc8a7f36a8c392b799a120bcbf"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 13 14:47:50 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Oct 13 14:55:39 2016 -0700"
      },
      "message": "Add/use adaptive spinning.\n\nAdd spin_t and spin_{init,adaptive}(), which provide a simple\nabstraction for adaptive spinning.\n\nAdaptively spin during busy waits in bootstrapping and rtree node\ninitialization.\n"
    },
    {
      "commit": "9acd5cf178eca9bc8a7f36a8c392b799a120bcbf",
      "tree": "b32689315e91e15519359ab6e53f7a9b13e8b3b0",
      "parents": [
        "63b5657aa566ceab270ff6e9d4f366233d2d0b79"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Oct 12 11:49:19 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Oct 12 11:55:43 2016 -0700"
      },
      "message": "Remove all vestiges of chunks.\n\nRemove mallctls:\n- opt.lg_chunk\n- stats.cactive\n\nThis resolves #464.\n"
    },
    {
      "commit": "63b5657aa566ceab270ff6e9d4f366233d2d0b79",
      "tree": "9e5f8526a5cfd93d2076e528968db872e4869513",
      "parents": [
        "b4b4a77848f1c726134ace82509b6adb9f8e7055"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Oct 12 10:40:27 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Wed Oct 12 10:40:27 2016 -0700"
      },
      "message": "Remove ratio-based purging.\n\nMake decay-based purging the default (and only) mode.\n\nRemove associated mallctls:\n- opt.purge\n- opt.lg_dirty_mult\n- arena.\u003ci\u003e.lg_dirty_mult\n- arenas.lg_dirty_mult\n- stats.arenas.\u003ci\u003e.lg_dirty_mult\n\nThis resolves #385.\n"
    },
    {
      "commit": "b4b4a77848f1c726134ace82509b6adb9f8e7055",
      "tree": "7b9427d829826de0d0404baa694e229e00a73f7c",
      "parents": [
        "48993ed5368506013fa1dcbc72b299409b7f5716"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Oct 11 15:30:01 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Oct 11 15:30:01 2016 -0700"
      },
      "message": "Fix and simplify decay-based purging.\n\nSimplify decay-based purging attempts to only be triggered when the\nepoch is advanced, rather than every time purgeable memory increases.\nIn a correctly functioning system (not previously the case; see below),\nthis only causes a behavior difference if during subsequent purge\nattempts the least recently used (LRU) purgeable memory extent is\ninitially too large to be purged, but that memory is reused between\nattempts and one or more of the next LRU purgeable memory extents are\nsmall enough to be purged.  In practice this is an arbitrary behavior\nchange that is within the set of acceptable behaviors.\n\nAs for the purging fix, assure that arena-\u003edecay.ndirty is recorded\n*after* the epoch advance and associated purging occurs.  Prior to this\nfix, it was possible for purging during epoch advance to cause a\nsubstantially underrepresentative (arena-\u003endirty - arena-\u003edecay.ndirty),\ni.e. the number of dirty pages attributed to the current epoch was too\nlow, and a series of unintended purges could result.  This fix is also\nrelevant in the context of the simplification described above, but the\nbug\u0027s impact would be limited to over-purging at epoch advances.\n"
    },
    {
      "commit": "48993ed5368506013fa1dcbc72b299409b7f5716",
      "tree": "0fdb223876c1cc6068c4043667e7304c795a90b8",
      "parents": [
        "5f11fb7d43795e9e2f5d72c8a43a042baaee9b63"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Oct 11 15:28:43 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Oct 11 15:28:43 2016 -0700"
      },
      "message": "Fix decay tests to all adapt to nstime_monotonic().\n"
    },
    {
      "commit": "5f11fb7d43795e9e2f5d72c8a43a042baaee9b63",
      "tree": "24e3b4aeb23578b483b46f9804d0a6545aac5a8b",
      "parents": [
        "ee0c74b77a24dc4fdaad2c950bcf621b6fa54095"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 10 22:15:10 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 10 22:15:10 2016 -0700"
      },
      "message": "Do not advance decay epoch when time goes backwards.\n\nInstead, move the epoch backward in time.  Additionally, add\nnstime_monotonic() and use it in debug builds to assert that time only\ngoes backward if nstime_update() is using a non-monotonic time source.\n"
    },
    {
      "commit": "ee0c74b77a24dc4fdaad2c950bcf621b6fa54095",
      "tree": "377dd52c614ca4453c37c15fd62301fb522eba95",
      "parents": [
        "e0164bc63c25d6f7b02ef69c3e4f307ce395cf71"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 10 20:32:19 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 10 20:32:19 2016 -0700"
      },
      "message": "Refactor arena-\u003edecay_* into arena-\u003edecay.* (arena_decay_t).\n"
    },
    {
      "commit": "e0164bc63c25d6f7b02ef69c3e4f307ce395cf71",
      "tree": "2596208675d5f33d822aab22239e3916ba4ae5c7",
      "parents": [
        "b6c0867142ced63a21003b2f449b20b248e1cc4a"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Oct 07 08:47:16 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 10 10:33:59 2016 -0700"
      },
      "message": "Refine nstime_update().\n\nAdd missing #include \u003ctime.h\u003e.  The critical time facilities appear to\nhave been transitively included via unistd.h and sys/time.h, but in\nprinciple this omission was capable of having caused\nclock_gettime(CLOCK_MONOTONIC, ...) to have been overlooked in favor of\ngettimeofday(), which in turn could cause spurious non-monotonic time\nupdates.\n\nRefactor nstime_get() out of nstime_update() and add configure tests for\nall variants.\n\nAdd CLOCK_MONOTONIC_RAW support (Linux-specific) and\nmach_absolute_time() support (OS X-specific).\n\nDo not fall back to clock_gettime(CLOCK_REALTIME, ...).  This was a\nfragile Linux-specific workaround, which we\u0027re unlikely to use at all\nnow that clock_gettime(CLOCK_MONOTONIC_RAW, ...) is supported, and if we\nhave no choice besides non-monotonic clocks, gettimeofday() is only\nincrementally worse.\n"
    },
    {
      "commit": "b6c0867142ced63a21003b2f449b20b248e1cc4a",
      "tree": "0b86346086ed3890b0f50f0ce9262b8671c6ac57",
      "parents": [
        "a5a8d7ae8dd638cf538cae3b340afe6d1d787954"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 03 10:37:12 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Tue Oct 04 09:54:18 2016 -0700"
      },
      "message": "Reduce \"thread.arena\" mallctl contention.\n\nThis resolves #460.\n"
    },
    {
      "commit": "a5a8d7ae8dd638cf538cae3b340afe6d1d787954",
      "tree": "e338d2d994774793f9e438b280fb53249d97f553",
      "parents": [
        "871a9498e13572f99451ed88db36cda6c9fecf8f"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 03 14:45:27 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 03 14:45:27 2016 -0700"
      },
      "message": "Remove a size class assertion from extent_size_quantize_floor().\n\nExtent coalescence can result in legitimate calls to\nextent_size_quantize_floor() with size larger than LARGE_MAXCLASS.\n"
    },
    {
      "commit": "871a9498e13572f99451ed88db36cda6c9fecf8f",
      "tree": "514e2c0b70626c36da003c2738927a07454de87d",
      "parents": [
        "d51139c33c180a59dcee0c3880b8261f075139b3"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 03 14:18:55 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Oct 03 14:18:55 2016 -0700"
      },
      "message": "Fix size class overflow bugs.\n\nAvoid calling s2u() on raw extent sizes in extent_recycle().\n\nClamp psz2ind() (implemented as psz2ind_clamp()) when inserting/removing\ninto/from size-segregated extent heaps.\n"
    },
    {
      "commit": "d51139c33c180a59dcee0c3880b8261f075139b3",
      "tree": "eeca4442d76b303e056ef5c1f44204b71ca7b0f6",
      "parents": [
        "42e79c58a0fb2c9ba87771523f3fc00e44876d20"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 29 09:50:35 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 29 09:50:35 2016 -0700"
      },
      "message": "Verify extent hook functions receive correct extent_hooks pointer.\n"
    },
    {
      "commit": "42e79c58a0fb2c9ba87771523f3fc00e44876d20",
      "tree": "f3b51e34c92bd294bd6c29e7867cd9c4daaa42c0",
      "parents": [
        "3c8c3e9e9b59b6e34a222816a05f0a01a68919b3"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 29 09:49:19 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 29 09:49:19 2016 -0700"
      },
      "message": "Update extent hook function prototype comments.\n"
    },
    {
      "commit": "3c8c3e9e9b59b6e34a222816a05f0a01a68919b3",
      "tree": "cb6ebe55c9295371850edbb6950e08efb07adebc",
      "parents": [
        "ea68cd25b6455b2c408200c3947c0715f6a7e4a7"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 15:55:40 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 15:55:40 2016 -0700"
      },
      "message": "Close file descriptor after reading \"/proc/sys/vm/overcommit_memory\".\n\nThis bug was introduced by c2f970c32b527660a33fa513a76d913c812dcf7c\n(Modify pages_map() to support mapping uncommitted virtual memory.).\n\nThis resolves #399.\n"
    },
    {
      "commit": "ea68cd25b6455b2c408200c3947c0715f6a7e4a7",
      "tree": "2227bc9c73f2f610317bfa59c28ba88aae094b9d",
      "parents": [
        "020c32859d19873e8555d848785f0b584d4249f9"
      ],
      "author": {
        "name": "Thomas Köckerbauer",
        "email": "thomas.koeckerbauer@dynatrace.com",
        "time": "Wed Sep 07 08:34:17 2016 +0200"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 15:39:55 2016 -0700"
      },
      "message": "use install command determined by configure\n"
    },
    {
      "commit": "020c32859d19873e8555d848785f0b584d4249f9",
      "tree": "d0982246fac00668595d85f3062c76daa51a5a99",
      "parents": [
        "df0d273a07b0ca5ea4a9d8e140e1fa6425430e4a"
      ],
      "author": {
        "name": "Bai",
        "email": "ShuangxueBai@users.noreply.github.com",
        "time": "Sun Aug 28 13:51:57 2016 +0800"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 15:34:53 2016 -0700"
      },
      "message": "Readme.txt error for building in the Windows\n\nThe command can\u0027t work using sh -C sh -c \"./autogen.sh CC\u003dcl --enable-lazy-lock\u003dno\". \r\nChange the position of the colon, the command of autogen work."
    },
    {
      "commit": "df0d273a07b0ca5ea4a9d8e140e1fa6425430e4a",
      "tree": "8c126add128ac843179b2166ac71334d50dd96a9",
      "parents": [
        "5ff18391331a0d56b01ddce3e37cd1c7a2b439a2"
      ],
      "author": {
        "name": "Eric Le Bihan",
        "email": "eric.le.bihan.dev@free.fr",
        "time": "Thu Jul 14 22:44:01 2016 +0200"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 15:13:07 2016 -0700"
      },
      "message": "Fix LG_QUANTUM definition for sparc64\n\nGCC 4.9.3 cross-compiled for sparc64 defines __sparc_v9__, not\n__sparc64__ nor __sparcv9. This prevents LG_QUANTUM from being defined\nproperly. Adding this new value to the check solves the issue.\n"
    },
    {
      "commit": "5ff18391331a0d56b01ddce3e37cd1c7a2b439a2",
      "tree": "e0237176ccdb12884c57960b70e73d7118d3e454",
      "parents": [
        "c096ccfe111ca3c849a0104517a2a1f123985307"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 11:00:32 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 11:00:32 2016 -0700"
      },
      "message": "Formatting fixes.\n"
    },
    {
      "commit": "c096ccfe111ca3c849a0104517a2a1f123985307",
      "tree": "0162a914a06832fa350157b682e656294c67fbb9",
      "parents": [
        "61f467e16a2b925a0e77241b87b5d1f1fbcb96d0"
      ],
      "author": {
        "name": "Elliot Ronaghan",
        "email": "ronawho@gmail.com",
        "time": "Tue Jul 12 15:52:18 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Mon Sep 26 10:38:59 2016 -0700"
      },
      "message": "Fix a bug in __builtin_unreachable configure check\n\nIn 1167e9e, I accidentally tested je_cv_gcc_builtin_ffsl instead of\nje_cv_gcc_builtin_unreachable (copy-paste error), which meant that\nJEMALLOC_INTERNAL_UNREACHABLE was always getting defined as abort even if\n__builtin_unreachable support was detected.\n"
    },
    {
      "commit": "61f467e16a2b925a0e77241b87b5d1f1fbcb96d0",
      "tree": "b16cd89ff760b80c722cc2c36085dbf517d6b55b",
      "parents": [
        "0222fb41d1fc8e882f7872999ddaa09193d58912"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:18:57 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:21:34 2016 -0700"
      },
      "message": "Avoid self assignment in tsd_set().\n"
    },
    {
      "commit": "0222fb41d1fc8e882f7872999ddaa09193d58912",
      "tree": "a9e54ad357551250e2d12f92f861e638b08bad0a",
      "parents": [
        "73868b60f22d40404572d124aa7e08de1d70724f"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:18:36 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:21:34 2016 -0700"
      },
      "message": "Add various mutex ownership assertions.\n"
    },
    {
      "commit": "73868b60f22d40404572d124aa7e08de1d70724f",
      "tree": "c76126c136bfc97df9df289a1ee0a4f48412a6a2",
      "parents": [
        "e3187ec6b6a349b3add5c27c470ff7f7f040c1d5"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:17:42 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:21:34 2016 -0700"
      },
      "message": "Fix extent_{before,last,past}() to return page-aligned results.\n"
    },
    {
      "commit": "e3187ec6b6a349b3add5c27c470ff7f7f040c1d5",
      "tree": "72d59aab43aeb02e087100567b4a9801077b097c",
      "parents": [
        "fd96974040b54538a43951f630e9fea461408384"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:16:55 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:21:34 2016 -0700"
      },
      "message": "Fix large_dalloc_impl() to always lock large_mtx.\n"
    },
    {
      "commit": "fd96974040b54538a43951f630e9fea461408384",
      "tree": "f4f8df4fc6720e5f962f9d7512b63e11cc9f91e5",
      "parents": [
        "f6d01ff4b7322eeed56c61a11e3e3397765d3f22"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:11:01 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Fri Sep 23 12:21:25 2016 -0700"
      },
      "message": "Add new_addr validation in extent_recycle().\n"
    },
    {
      "commit": "f6d01ff4b7322eeed56c61a11e3e3397765d3f22",
      "tree": "ff2b4a49b6d8e92c7e19ea9dfca84110ae77cdb2",
      "parents": [
        "bc49157d21e6ec14a41c7b852370d2e6d9509da2"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 22 11:57:28 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 22 11:57:28 2016 -0700"
      },
      "message": "Protect extents_dirty access with extents_mtx.\n\nThis fixes race conditions during purging.\n"
    },
    {
      "commit": "bc49157d21e6ec14a41c7b852370d2e6d9509da2",
      "tree": "171291950a7d15462ab71a866febc30b5f6359a9",
      "parents": [
        "1cb399b630db16892069cb37b6b0853ca318bb77"
      ],
      "author": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 22 11:53:19 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 22 11:53:19 2016 -0700"
      },
      "message": "Fix extent_recycle() to exclude other arenas\u0027 extents.\n\nWhen attempting to recycle an extent at a specified address, check that\nthe extent belongs to the correct arena.\n"
    },
    {
      "commit": "1cb399b630db16892069cb37b6b0853ca318bb77",
      "tree": "b2dd2b1eefcb7a96ba452e1259de9481da5b4ef0",
      "parents": [
        "17c4b8de5f4ef2732dfa83cbc86e2cf112f48635"
      ],
      "author": {
        "name": "Qi Wang",
        "email": "interwq@gwu.edu",
        "time": "Thu Sep 22 09:13:45 2016 -0700"
      },
      "committer": {
        "name": "Jason Evans",
        "email": "jasone@canonware.com",
        "time": "Thu Sep 22 09:13:45 2016 -0700"
      },
      "message": "Fix arena_bind().\n\nWhen tsd is not in nominal state (e.g. during thread termination), we\nshould not increment nthreads.\n"
    },
    {
      "commit": "17c4b8de5f4ef2732dfa83cbc86e2cf112f48635",
      "tree": "8989d8123c1b025c75890fbb594dc2aa13a2b9b3",
      "parents": [
        "d4ce47e7fb6af53fd0460052100382c728b58566"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmg116@gmail.com",
        "time": "Thu Sep 15 14:33:28 2016 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 15 14:33:28 2016 -0700"
      },
      "message": "Fix -Wundef in _MSC_VER check."
    }
  ],
  "next": "d4ce47e7fb6af53fd0460052100382c728b58566"
}
