)]}'
{
  "log": [
    {
      "commit": "560c60d342a76076f0557a3946924c6478470044",
      "tree": "9fea1ce50419c2ee6c3bf4c00a55e10c4b530cfa",
      "parents": [
        "178e3e0646cc671708bf78e77c273940130ac637"
      ],
      "author": {
        "name": "Fuzzer 1121",
        "email": "fuzzer1121@proton.me",
        "time": "Tue Apr 23 13:46:16 2024 +0200"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sun Jun 16 12:49:19 2024 -0700"
      },
      "message": "assert divisor is not 0 in divide_round_up\n"
    },
    {
      "commit": "178e3e0646cc671708bf78e77c273940130ac637",
      "tree": "fc3bb68c9bc0f77b1436fab22ff2766631c4c0ce",
      "parents": [
        "d0aac7e80dfe9f4a1d8b4bc7ff4ec3f0b3c277bd"
      ],
      "author": {
        "name": "Everton Constantino",
        "email": "everton.constantino@linaro.org",
        "time": "Fri Jan 19 09:17:51 2024 -0300"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sun Jan 21 19:47:57 2024 -0800"
      },
      "message": "Update prefix from master to main\n"
    },
    {
      "commit": "d0aac7e80dfe9f4a1d8b4bc7ff4ec3f0b3c277bd",
      "tree": "0385df613e21f1607627c0d168f35c7c40097652",
      "parents": [
        "4fe0e1e183925bf8cfa6aae24237e724a96479b8"
      ],
      "author": {
        "name": "Everton Constantino",
        "email": "everton.constantino@linaro.org",
        "time": "Thu Jan 18 15:34:45 2024 -0300"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sun Jan 21 19:47:57 2024 -0800"
      },
      "message": "Add support for Windos on Arm builds on BUILD.bazel\n"
    },
    {
      "commit": "4fe0e1e183925bf8cfa6aae24237e724a96479b8",
      "tree": "465b5a2217d68cd39f22cbee9c55f747015557fc",
      "parents": [
        "c5b96e362f94577b462459929ca0e145024a1c49"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Tue Aug 29 14:09:13 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Tue Aug 29 00:35:24 2023 -0600"
      },
      "message": "Fix incorrect thread number used in 2D task with thread\n"
    },
    {
      "commit": "c5b96e362f94577b462459929ca0e145024a1c49",
      "tree": "59d67d1af58933246e69dbb7f8bf8765a7b18766",
      "parents": [
        "966fbf7c86390b7f489f7474ecf99c42c91fddac"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Tue Aug 29 10:45:14 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Mon Aug 28 22:12:53 2023 -0600"
      },
      "message": "Parallelize task 2D with thread id support\n"
    },
    {
      "commit": "966fbf7c86390b7f489f7474ecf99c42c91fddac",
      "tree": "6c81136a2b4fbbf9493c342e05c8606c8e031f65",
      "parents": [
        "0a4b81c950fa4fb08037ceeaa54d008efdf4e739"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Thu Aug 24 16:26:31 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Thu Aug 24 11:56:45 2023 -0600"
      },
      "message": "Parallelize task 1D with thread id support\n"
    },
    {
      "commit": "0a4b81c950fa4fb08037ceeaa54d008efdf4e739",
      "tree": "ea50df11aaabecc0ed7e2b9fa64a8389548eac0f",
      "parents": [
        "32f2a933ae830d515b05a2635e8dc56bfe221329"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Aug 22 08:52:05 2023 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Tue Aug 22 09:52:51 2023 -0600"
      },
      "message": "Fix pthreadpool_parallelize_*_with_thread functions\n\nWhen work-stealing, pass the thread ID of the executing thread rather than of\nthe thread we steal the work from\n"
    },
    {
      "commit": "32f2a933ae830d515b05a2635e8dc56bfe221329",
      "tree": "d8a517b07776e667b6905d9ad8016dc8381442a4",
      "parents": [
        "b1b6536539d5ec04416d41a04af636f50a2f2b7a"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Mon Aug 21 10:17:45 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sun Aug 20 21:34:58 2023 -0600"
      },
      "message": "Add missing functions to shim\n"
    },
    {
      "commit": "b1b6536539d5ec04416d41a04af636f50a2f2b7a",
      "tree": "83a2cedfec6733e9d96bc20eea2dbfa443f6fd93",
      "parents": [
        "82e33475389df5e43d72c064d20546ef26db1594"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Fri Aug 18 14:14:45 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Aug 18 01:06:31 2023 -0600"
      },
      "message": "Create 3D Tile 1D with thread id\n"
    },
    {
      "commit": "82e33475389df5e43d72c064d20546ef26db1594",
      "tree": "b4a484b2a3874099dde6591a216b9cab2702778a",
      "parents": [
        "5f685cb0780a46e8d4da500f9b34ee6ae2bd437f"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Tue Aug 15 09:53:31 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Mon Aug 14 22:12:01 2023 -0600"
      },
      "message": "Create 3D Tile 1D with micro-arch and thread id\n"
    },
    {
      "commit": "5f685cb0780a46e8d4da500f9b34ee6ae2bd437f",
      "tree": "a8716458fa4d7dc9d002243406dcdac00dfb82a6",
      "parents": [
        "b91ef42f5a96b19d746c9c6ef5bde35a9b45dfcf"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Mon Aug 14 17:06:52 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Mon Aug 14 03:13:57 2023 -0600"
      },
      "message": "Fix comments\n"
    },
    {
      "commit": "b91ef42f5a96b19d746c9c6ef5bde35a9b45dfcf",
      "tree": "c6dfc5e3adc8938654ea925a7c3c6a17d0eaa103",
      "parents": [
        "7b803a20b231420e4e8f02012b243051a6818e24"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Mon Aug 14 16:25:08 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Mon Aug 14 03:13:57 2023 -0600"
      },
      "message": "Create 3D Tile 1D with micro-arch parallelization functions\n"
    },
    {
      "commit": "7b803a20b231420e4e8f02012b243051a6818e24",
      "tree": "25e4dc8cdf1e59e18bdd46bc605082244dfb2d21",
      "parents": [
        "18513c20da253e25f3caa82bf872f43d36b99af6"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Mon Aug 14 11:08:38 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Mon Aug 14 03:00:01 2023 -0600"
      },
      "message": "Add support for 2D Tile 1D with micro-arch and thread id\n\nReused pthreadpool_2d_tile_1d_with_uarch_params since this does not\nrequired new fields in the params\n\nBesides the usual 2D Tile with 1D micro-arch test, added a test to check\nthat all thread ids were used.\n"
    },
    {
      "commit": "18513c20da253e25f3caa82bf872f43d36b99af6",
      "tree": "ff8ae403cb9371c510dffa5918f6ce50928de804",
      "parents": [
        "a36d79ec38f92d119203c313cafeef1109843117"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Tue Aug 08 11:16:46 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Mon Aug 07 21:28:01 2023 -0600"
      },
      "message": "Implement microarchitecture-aware 2D parallelization with 1D tile\n"
    },
    {
      "commit": "a36d79ec38f92d119203c313cafeef1109843117",
      "tree": "87c1ee42006f9c6e74a817578dc25e7d035f6edd",
      "parents": [
        "edeb5d6b967bef092ff195ab40e216fa5ac11f61"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Tue Aug 08 11:23:56 2023 +0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Mon Aug 07 21:27:11 2023 -0600"
      },
      "message": "Update GoogleTest to 1.12.0\n\nGetting some weird warnings with 1.11.0\n\nIn file included from /src/pthreadpool/build/googletest-source/googletest/src/gtest-all.cc:42:\n/src/pthreadpool/build/googletest-source/googletest/src/gtest-death-test.cc: In function ‘bool testing::internal::StackGrowsDown()’:\n/src/pthreadpool/build/googletest-source/googletest/src/gtest-death-test.cc:1301:24: error: ‘dummy’ may be used uninitialized [-Werror\u003dmaybe-uninitialized]\n 1301 |   StackLowerThanAddress(\u0026dummy, \u0026result);\n      |   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~\n"
    },
    {
      "commit": "edeb5d6b967bef092ff195ab40e216fa5ac11f61",
      "tree": "472a3f16ea978e94efc8241f5c8aaeeef6cccf7f",
      "parents": [
        "43edadc654d6283b4b6e45ba09a853181ae8e850"
      ],
      "author": {
        "name": "James Hilliard",
        "email": "james.hilliard1@gmail.com",
        "time": "Sun Jan 29 21:36:25 2023 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sun Mar 12 00:00:56 2023 -0500"
      },
      "message": "CMake: don\u0027t enable CXX unless building tests/benchmarks\n\nWe only need CXX support when building tests/benchmarks.\n\nFixes:\nCMake Error at CMakeLists.txt:4 (PROJECT):\n  No CMAKE_CXX_COMPILER could be found.\n\n  Tell CMake where to find the compiler by setting either the environment\n  variable \"CXX\" or the CMake cache entry CMAKE_CXX_COMPILER to the full path\n  to the compiler, or to the compiler name if it is in the PATH.\n\nSigned-off-by: James Hilliard \u003cjames.hilliard1@gmail.com\u003e\n"
    },
    {
      "commit": "43edadc654d6283b4b6e45ba09a853181ae8e850",
      "tree": "3108d7db00b1d1fe3618ac8535d4990de7ee6c12",
      "parents": [
        "1787867f6183f056420e532eec640cba25efafea"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Nov 17 21:45:13 2022 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Thu Nov 17 23:21:03 2022 -0800"
      },
      "message": "Support ARM64EC ABI\n"
    },
    {
      "commit": "1787867f6183f056420e532eec640cba25efafea",
      "tree": "aeae5e5d98e20c60b058ed4f9ef4058f7ef55df0",
      "parents": [
        "555615067430296341ebf33720fd2753aa1c3e6f"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri May 07 15:11:32 2021 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri May 07 15:11:32 2021 -0700"
      },
      "message": "Add C++ API to pthreadpool\n\nC++ API allows pthreadpool parallelization functions to be called with a\ncapturing C++11 lambda\n"
    },
    {
      "commit": "555615067430296341ebf33720fd2753aa1c3e6f",
      "tree": "0c1fa650a8fba052ddc021ae6a6c4b4a7f4f9208",
      "parents": [
        "a134dd5d4cee80cce15db81a72e7f929d71dd413"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu May 06 20:27:28 2021 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu May 06 20:27:28 2021 -0700"
      },
      "message": "Use Google Benchmark 1.5.3\n\nUpdate Google Benchmark for RISC-V compatibility\n"
    },
    {
      "commit": "a134dd5d4cee80cce15db81a72e7f929d71dd413",
      "tree": "c0f3d6068ebaeca08f9f55c8cec7be74f822caf0",
      "parents": [
        "052e441b70091656199e2283fb1c16a7db6f0f85"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Apr 13 16:10:19 2021 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Apr 13 16:10:19 2021 -0700"
      },
      "message": "Remove deprecated attribute from function pointer declarations\n"
    },
    {
      "commit": "052e441b70091656199e2283fb1c16a7db6f0f85",
      "tree": "9a44c770753d98368e005994c9848f1b48615c6e",
      "parents": [
        "b8374f80e42010941bda6c85b0e3f1a1bd77a1e0"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Apr 07 00:17:15 2021 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Apr 07 00:22:54 2021 -0700"
      },
      "message": "Use Acquire-Release order for workers checkin\n"
    },
    {
      "commit": "b8374f80e42010941bda6c85b0e3f1a1bd77a1e0",
      "tree": "9f94c2beefb92021e32859af50556c1f6ef8a26f",
      "parents": [
        "b4589998be9a0f794236cf46f1b5b232b2b15ca3"
      ],
      "author": {
        "name": "Simon Maurer",
        "email": "simomaur@student.ethz.ch",
        "time": "Wed Mar 03 16:19:07 2021 +0100"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Mar 03 11:45:46 2021 -0800"
      },
      "message": "added config for macos_arm64\n"
    },
    {
      "commit": "b4589998be9a0f794236cf46f1b5b232b2b15ca3",
      "tree": "aac094d480a659f5919c0659a031d3010ecc4fc7",
      "parents": [
        "b8f892a43bb46fb66028308a798c4de7b5d4a4e4"
      ],
      "author": {
        "name": "Orivej Desh",
        "email": "orivej@gmx.fr",
        "time": "Wed Feb 17 22:48:52 2021 +0000"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Feb 17 20:27:44 2021 -0800"
      },
      "message": "Fix using fastpath in CMake build"
    },
    {
      "commit": "b8f892a43bb46fb66028308a798c4de7b5d4a4e4",
      "tree": "5032ebbfe76b1603b44294d309b105fe7cbee4d7",
      "parents": [
        "77f9d3bcfabd1bdb910dd33b549d5290b968ef05"
      ],
      "author": {
        "name": "xkszltl",
        "email": "xkszltl@users.noreply.github.com",
        "time": "Fri Dec 11 03:00:18 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 10 11:00:18 2020 -0800"
      },
      "message": "Define WIN32_LEAN_AND_MEAN to avoid introducing unused macros. (#12)\n\n"
    },
    {
      "commit": "77f9d3bcfabd1bdb910dd33b549d5290b968ef05",
      "tree": "c474735c20f182dd8d49198a8be40b77873c73b3",
      "parents": [
        "82254fb128c3100d4b299b4f75d2516f20d8c702"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Dec 08 22:46:29 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Dec 08 22:46:29 2020 -0800"
      },
      "message": "Update FXdiv dependency in Bazel\n"
    },
    {
      "commit": "82254fb128c3100d4b299b4f75d2516f20d8c702",
      "tree": "5d6abf9d9d2215e703d1056a46de7c6f3a3ae63e",
      "parents": [
        "344531b40881b1ee41508a9c70c8fbbef3bd6cad"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Dec 08 22:39:29 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Dec 08 22:39:29 2020 -0800"
      },
      "message": "Export LICENSE file in Bazel build\n"
    },
    {
      "commit": "344531b40881b1ee41508a9c70c8fbbef3bd6cad",
      "tree": "ad680cf9e13508397f805dd6b3e1954db23769ce",
      "parents": [
        "545ebe9f225aec6dca49109516fac02e973a3de2"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sun Dec 06 22:09:17 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sun Dec 06 22:09:17 2020 -0800"
      },
      "message": "Throughput benchmarks for 3D/4D/5D/6D parallelization with 1D and no tiling\n"
    },
    {
      "commit": "545ebe9f225aec6dca49109516fac02e973a3de2",
      "tree": "45ac53adec66f79595bb77796d0ec8220746aa89",
      "parents": [
        "13d90b413394e9f93bc1a23170b91b69bda3d6f0"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Dec 05 20:28:13 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Dec 05 20:28:13 2020 -0800"
      },
      "message": "Implement 6D parallelization with 1D and no tiling\n"
    },
    {
      "commit": "13d90b413394e9f93bc1a23170b91b69bda3d6f0",
      "tree": "5e29d2dad52f25d4ccb38578d51d4148cbbde561",
      "parents": [
        "6c76abee85c7bf2b0c9be2d05bc97b4e5d109d16"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Dec 05 17:55:30 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Dec 05 17:58:43 2020 -0800"
      },
      "message": "Use __STDC_NO_ATOMICS__ to detect C11 compilers without stdatomic.h\n\nReplace MSVC-specific check from #10\n"
    },
    {
      "commit": "6c76abee85c7bf2b0c9be2d05bc97b4e5d109d16",
      "tree": "b3f3593cbfb7954ebcdfb7bd2efccb293a8a0161",
      "parents": [
        "fa75e65a58a5c70c09c30d17a1fe1c1dff1093ae"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Dec 05 17:54:08 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Dec 05 17:57:34 2020 -0800"
      },
      "message": "Support pre-C11 GCC intrinsics for atomics\n"
    },
    {
      "commit": "fa75e65a58a5c70c09c30d17a1fe1c1dff1093ae",
      "tree": "891b9b50d5a1f7adf3d57f94bacf233538d3a408",
      "parents": [
        "029c88620802e1361ccf41d1970bd5b07fd6b7bb"
      ],
      "author": {
        "name": "peterjc123",
        "email": "peter_jiachen@163.com",
        "time": "Mon Oct 05 23:49:48 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 08:49:48 2020 -0700"
      },
      "message": "Fix MSVC build (#10)\n\nFix MSVC build"
    },
    {
      "commit": "029c88620802e1361ccf41d1970bd5b07fd6b7bb",
      "tree": "af5d5d4ab95eea6651dccbfa3cfeca19312787c5",
      "parents": [
        "e1642461b3b0217d23d6664d839a060f54e4e652"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Jun 15 15:41:33 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Jun 15 15:41:33 2020 -0700"
      },
      "message": "Recognize \"armeabi\" cpu as Linux/ARM in Bazel build\n"
    },
    {
      "commit": "e1642461b3b0217d23d6664d839a060f54e4e652",
      "tree": "fbfe773bc022ca9166550e3436172388e1c644c6",
      "parents": [
        "18a7156cb9be8e534acefade42e46d4209600c35"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Jun 10 12:54:14 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Jun 10 12:54:14 2020 -0700"
      },
      "message": "Recognize \"armv7a\" cpu as Linux/ARM in Bazel build\n"
    },
    {
      "commit": "18a7156cb9be8e534acefade42e46d4209600c35",
      "tree": "a9ac014b43503ad0aa789c7daa9bdb23d8a14b99",
      "parents": [
        "bfe07ff3d9ed6eb5e7803b9761c85b254a417742"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue May 26 10:03:31 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue May 26 10:05:32 2020 -0700"
      },
      "message": "Use cpuinfo_get_current_uarch_index_with_default for parallelization with uarch\nindex\n"
    },
    {
      "commit": "bfe07ff3d9ed6eb5e7803b9761c85b254a417742",
      "tree": "67d36b2fdee49d80dfdba2e9be39251da7a7cd42",
      "parents": [
        "afb880df0639945c854d70269f6b403cb81518b5"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue May 26 09:41:08 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue May 26 09:41:08 2020 -0700"
      },
      "message": "3D/4D/5D parallelization functions with 1D or no tiling\n"
    },
    {
      "commit": "afb880df0639945c854d70269f6b403cb81518b5",
      "tree": "e69e0ef9c41414102141207e60ad05c5c7a46749",
      "parents": [
        "5d088b1f1436e060cf2e2cd25c8c7003544eb266"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat May 16 09:57:53 2020 +0100"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat May 16 09:57:53 2020 +0100"
      },
      "message": "Guard against generating ARM yield instruction for unsupporting processors\n"
    },
    {
      "commit": "5d088b1f1436e060cf2e2cd25c8c7003544eb266",
      "tree": "f89c25a40aae754222538057bdd2e98511510538",
      "parents": [
        "6ae95d3d7b407ac310e59958a92bc8be4583340e"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri May 08 20:54:20 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri May 08 20:54:20 2020 -0700"
      },
      "message": "Reorder C11 atomics before MSVC x64 atomics\n\nclang-cl, which supports both, should prefer C11 atomics\n"
    },
    {
      "commit": "6ae95d3d7b407ac310e59958a92bc8be4583340e",
      "tree": "fb60f8d8c67d7c3290158d9926d4b4944d1758f0",
      "parents": [
        "5690b5ceada160444a916d31ef72e381f5e52d67"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri May 08 20:45:20 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri May 08 20:45:20 2020 -0700"
      },
      "message": "Use platform-specific yield/pause instructions\n"
    },
    {
      "commit": "5690b5ceada160444a916d31ef72e381f5e52d67",
      "tree": "4cdd199bf3460b66ad85a0ee76ed33ef117c264e",
      "parents": [
        "ada4eedd7113b82e7d1ab35394b78eaf03a60906"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu May 07 17:23:12 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu May 07 17:23:12 2020 -0700"
      },
      "message": "MSVC-compatible FPU state functions\n"
    },
    {
      "commit": "ada4eedd7113b82e7d1ab35394b78eaf03a60906",
      "tree": "e09bf16e229a94aa1a52da5d854df6228b01aeb6",
      "parents": [
        "6525d8bb736b323eb4df9e4f3afdd3a8458d1a20"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu May 07 15:57:07 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu May 07 15:57:07 2020 -0700"
      },
      "message": "Thumb-1 compatible assembly for disable_fpu_denormals\n"
    },
    {
      "commit": "6525d8bb736b323eb4df9e4f3afdd3a8458d1a20",
      "tree": "8ba98669e1f1d1e34a64adfc49e72ad7a46c7b22",
      "parents": [
        "28f251ed286e4b9d1f8e4d2912ff95943cc06aaf"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon May 04 15:02:25 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon May 04 15:02:25 2020 -0700"
      },
      "message": "Avoid including stdatomic.h in any WAsm builds\n"
    },
    {
      "commit": "28f251ed286e4b9d1f8e4d2912ff95943cc06aaf",
      "tree": "eda068fcdb65b3a9bd8d19d4e22719c91afd21b1",
      "parents": [
        "0672a7e1eb789b35709037ab5231d8d8a0f3bafc"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon May 04 15:00:58 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon May 04 15:00:58 2020 -0700"
      },
      "message": "Fix Emscripten build with Bazel\n"
    },
    {
      "commit": "0672a7e1eb789b35709037ab5231d8d8a0f3bafc",
      "tree": "d9a414c39cece3e4eaa533ce8d438eb93ad26e1f",
      "parents": [
        "9b2c0caf7d9843f25709178b0cd7030892a1ff88"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat May 02 22:29:51 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat May 02 22:29:51 2020 -0700"
      },
      "message": "Fast path using atomic decrement instead of atomic compare-and-swap\n\n50% higher throughput on x86 (disabled on other platforms)\n"
    },
    {
      "commit": "9b2c0caf7d9843f25709178b0cd7030892a1ff88",
      "tree": "d99eed6695cde27e9111a3ae83b057414faefee9",
      "parents": [
        "6acde9cc88a995ead19e15a54ddd46d13ddfbbc6"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Apr 25 18:12:17 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Apr 25 18:12:17 2020 -0700"
      },
      "message": "Support MSYS and Cygwin builds\n"
    },
    {
      "commit": "6acde9cc88a995ead19e15a54ddd46d13ddfbbc6",
      "tree": "43489ded61e482b66b634577c3c2d91eb91e8694",
      "parents": [
        "e918b206d26b1f3b2100b0edabf445c18708d2b7"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Apr 22 17:37:02 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Apr 22 17:37:02 2020 -0700"
      },
      "message": "Reorder C11 atomics before MSVC atomics\n\nclang-cl, which supports both, should prefer C11 atomics\n"
    },
    {
      "commit": "e918b206d26b1f3b2100b0edabf445c18708d2b7",
      "tree": "a1fbe077f93130dfbb8a5633bc7fa9c8498fe9ce",
      "parents": [
        "a61ed1ab70389c62f6f699ca1a30a2421d3ea594"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Thu Apr 16 18:38:42 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Thu Apr 16 18:38:42 2020 -0700"
      },
      "message": "Recognize Cygwin as Windows\n"
    },
    {
      "commit": "a61ed1ab70389c62f6f699ca1a30a2421d3ea594",
      "tree": "878ae2bc4ef19eab2d68f5209de60ff8acc734d7",
      "parents": [
        "bfa3b9ce6cb71dc8b792e39d24717320a4f92572"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Apr 14 14:33:30 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Apr 14 14:33:30 2020 -0700"
      },
      "message": "Use load-acquire + store-release on synchronization variables\n\nSynchronization using relaxed atomics + fences instead of LA/SR violates\nC11/C++11 memory model and cause failures under thread sanitizer\n"
    },
    {
      "commit": "bfa3b9ce6cb71dc8b792e39d24717320a4f92572",
      "tree": "7cc41f73a43a12818e6652e76d3df7c3775a50db",
      "parents": [
        "da486afd0f9e2b42ccb90940e2dfba6cfed38708"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sun Apr 12 13:18:52 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sun Apr 12 13:18:52 2020 -0700"
      },
      "message": "Minimally fix confu build\n"
    },
    {
      "commit": "da486afd0f9e2b42ccb90940e2dfba6cfed38708",
      "tree": "dc93dadbb8ada29bdda13b3eb06f3ec993c6add0",
      "parents": [
        "4ac9270e4b6ecf03f18e3d0ed2028aac2c988911"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 23:46:52 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 23:56:53 2020 -0700"
      },
      "message": "Add Bazel configuration files\n"
    },
    {
      "commit": "4ac9270e4b6ecf03f18e3d0ed2028aac2c988911",
      "tree": "78aff84074c0321bdfba4af1fe3dd73176fc4c13",
      "parents": [
        "ddd479bcd8ba87094132ecf438dd76eb08ee3b0d"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 18:39:37 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 18:39:37 2020 -0700"
      },
      "message": "Support Windows on ARM/ARM64\n"
    },
    {
      "commit": "ddd479bcd8ba87094132ecf438dd76eb08ee3b0d",
      "tree": "b10c6742fbc0ea3c83ac014971159360b3933c40",
      "parents": [
        "fa7261344568f86760231591a7158519fd43f382"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 17:16:42 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 17:16:42 2020 -0700"
      },
      "message": "Replace atomic fetch_sub with decrement_fetch primitive\n\nDecrement-fetch is a closer match to the primitive used in implementation\n"
    },
    {
      "commit": "fa7261344568f86760231591a7158519fd43f382",
      "tree": "8285be5ea2c76f74a6fe61e240def71cf3106868",
      "parents": [
        "52a2f5706db7f9f805c2e0b5bfc56477b08b841a"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 16:51:20 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 16:51:20 2020 -0700"
      },
      "message": "Add compiler barriers to MSVC atomics implementation\n"
    },
    {
      "commit": "52a2f5706db7f9f805c2e0b5bfc56477b08b841a",
      "tree": "6f464f57c6da6f1c936782a673a501a81616df72",
      "parents": [
        "8f8dd879d20af72cf11344aa432f1cab21630f67"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 16:49:59 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Fri Apr 10 16:49:59 2020 -0700"
      },
      "message": "Fix race condition in Windows implementation\n\nThe command event for the next command must be reset before\nwrite-release of the new command, because as soon as the worker threads\nobserve the new command, they may complete it and switch to waiting on\nthe next command event\n"
    },
    {
      "commit": "8f8dd879d20af72cf11344aa432f1cab21630f67",
      "tree": "eb0eff15a0700447ae7e492dc65d450c356c50dd",
      "parents": [
        "cb898997662a42fb0157626362263d2108319211"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 05:05:25 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 05:05:25 2020 -0700"
      },
      "message": "Rewrite work spreading between threads\n\n- Avoid word x word -\u003e doubleword multiplication\n- Avoid doubleword / word -\u003e word division\n- Replace remaining division with multiplication via FXdiv\n- Improve portability through removal of platform-dependent multiply_divide function\n"
    },
    {
      "commit": "cb898997662a42fb0157626362263d2108319211",
      "tree": "d06ee33073e938092da2ab6a55732d4c0d81ae83",
      "parents": [
        "7e8364c2883dc2694d29ac66353c78cf4df0d343"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 04:59:19 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 04:59:19 2020 -0700"
      },
      "message": "Direct implementation pthreadpool_try_decrement_relaxed_size_t\n\nReplace implementation of pthreadpool_try_decrement_relaxed_size_t on top of\nemulated pthreadpool_compare_exchange_weak_relaxed_size_t with a direct\nimplementation using platform intrinsics\n"
    },
    {
      "commit": "7e8364c2883dc2694d29ac66353c78cf4df0d343",
      "tree": "68b5a9432c87fe06abd4684338dc667c6b9c7962",
      "parents": [
        "02b50e65341cc8ded117c4d42ff6d11f8e838cf1"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 04:56:26 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Fri Apr 10 04:56:26 2020 -0700"
      },
      "message": "Return static thread pool pointer in shim implementation\n\nMakes pthreadpool tests pass in WebAssembly builds\n"
    },
    {
      "commit": "02b50e65341cc8ded117c4d42ff6d11f8e838cf1",
      "tree": "f1fa8e81ec3756e396ccc41ebe5a4f0dc01e5330",
      "parents": [
        "be1bd8ed45f30ccdc23e5dcbf3896c1ae85f1ef3"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Apr 07 21:32:19 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Apr 07 21:32:19 2020 -0700"
      },
      "message": "Minor fixes in Windows implementation\n"
    },
    {
      "commit": "be1bd8ed45f30ccdc23e5dcbf3896c1ae85f1ef3",
      "tree": "8ac2f511c4d3cc540cab4a0a0b716b7595f50ea1",
      "parents": [
        "fa67ff531c0f9999c742d500a4fa061b96937297"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Tue Apr 07 19:14:45 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Tue Apr 07 19:15:27 2020 -0700"
      },
      "message": "Windows implementation using Events\n"
    },
    {
      "commit": "fa67ff531c0f9999c742d500a4fa061b96937297",
      "tree": "83ce61571d9dc632f1d477c0e1e7cffb5b8d7565",
      "parents": [
        "4694c12cac1833653ceb80de5c0564f24cd412be"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sun Apr 05 22:09:58 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sun Apr 05 22:09:58 2020 -0700"
      },
      "message": "Fix erroneous narrowing in pthreadpool_fetch_sub_relaxed_size_t\n"
    },
    {
      "commit": "4694c12cac1833653ceb80de5c0564f24cd412be",
      "tree": "27a788e80d8faac0c4a19429726e33d7534ad944",
      "parents": [
        "be9c89379384a261026c8bf517ec3ed651bb171c"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sun Apr 05 21:39:58 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sun Apr 05 21:39:58 2020 -0700"
      },
      "message": "Optimized pthreadpool_parallelize_* functions\n\nEliminate function call and division per each processed item in the\nmulti-threaded case\n"
    },
    {
      "commit": "be9c89379384a261026c8bf517ec3ed651bb171c",
      "tree": "aad41dc2cd010ac96e053b940a7b3bf31ecd4be5",
      "parents": [
        "23bc8d1e42d73e5df79bba61048b8da9bf14c194"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Apr 01 22:40:00 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Apr 01 22:40:00 2020 -0700"
      },
      "message": "Implementation using Grand Central Dispatch\n"
    },
    {
      "commit": "23bc8d1e42d73e5df79bba61048b8da9bf14c194",
      "tree": "a63b4fcb6c2a8ad4d5b9015229ac4fa1d3d8cbdb",
      "parents": [
        "fc793bc6d7eab64756df79971556594bf4ab145b"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Apr 01 17:36:42 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Wed Apr 01 17:36:42 2020 -0700"
      },
      "message": "Fix CMake warning on INCLUDE(GNUInstallDirs)\n"
    },
    {
      "commit": "fc793bc6d7eab64756df79971556594bf4ab145b",
      "tree": "669f93c06ca276279aa3acb6b91edb8029e5f5a7",
      "parents": [
        "5b41aa6060588e26fd25ace6dc4afccfd4793997"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Apr 01 17:08:30 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Apr 01 17:08:30 2020 -0700"
      },
      "message": "Refactor pthreadpool implementation\n\nSplit implementation into two types of components:\n- Components dependent on threading API\n- Portable components\n"
    },
    {
      "commit": "5b41aa6060588e26fd25ace6dc4afccfd4793997",
      "tree": "60ba1375435cdbbd459eeff121d1587dc1b37af9",
      "parents": [
        "76042155a8b1e189c8f141429fd72219472c32e1"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Apr 01 16:42:16 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Wed Apr 01 16:42:16 2020 -0700"
      },
      "message": "Remove unused per-thread wakeup_condvar\n"
    },
    {
      "commit": "76042155a8b1e189c8f141429fd72219472c32e1",
      "tree": "0fc182011d2fe74c23115b411181b0c0f1dbe236",
      "parents": [
        "6469659dd404768fd80f1989dfd66930a6587bf8"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 26 14:19:30 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 26 14:19:30 2020 -0700"
      },
      "message": "Microarchitecture-aware parallelization functions\n"
    },
    {
      "commit": "6469659dd404768fd80f1989dfd66930a6587bf8",
      "tree": "3c2d9013c8434be37294c112f8d696cfb96a7041",
      "parents": [
        "31b939ccfec1347dbd4e8fbfd7bb9bde467ae0f0"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 26 11:02:12 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 26 11:02:12 2020 -0700"
      },
      "message": "Refactor multi-threaded case of parallelization functions\n\n- Extract multi-threaded setup logic into a generalized pthreadpool_parallelize function\n- Call into pthreadpool_parallelize directly from tiled and 2+-dimensional functions\n"
    },
    {
      "commit": "31b939ccfec1347dbd4e8fbfd7bb9bde467ae0f0",
      "tree": "222cb789d581d4967e10b94d9f0949c7b1d93c9a",
      "parents": [
        "4c32ac059994906a5de7715e9c4cee58211354e0"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 26 11:00:30 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 26 11:00:30 2020 -0700"
      },
      "message": "Rename \"argument\" argument to match documentation comments\n"
    },
    {
      "commit": "4c32ac059994906a5de7715e9c4cee58211354e0",
      "tree": "9c1af47ef52b07b2a138855c34906cbc81db5d53",
      "parents": [
        "832403f32df1920f2bc4678b9541668fec7238f3"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 10:51:13 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 10:51:13 2020 -0700"
      },
      "message": "Document all public API functions\n"
    },
    {
      "commit": "832403f32df1920f2bc4678b9541668fec7238f3",
      "tree": "78a5e6a6e7bb79cc65885be665e146b1d3914666",
      "parents": [
        "2e59d6fa7d1bfd3c32797bd5a838d558a9e97377"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 10:47:42 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 10:47:42 2020 -0700"
      },
      "message": "Implement atomic_decrement with LL-SC on ARM/ARM64\n"
    },
    {
      "commit": "2e59d6fa7d1bfd3c32797bd5a838d558a9e97377",
      "tree": "d3a4806585cc9a919410859a12b31afba2da06b7",
      "parents": [
        "97c181b7d61be38850b59d27f93832b53cee1cdf"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 05:44:19 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 05:44:19 2020 -0700"
      },
      "message": "Update support platforms and example in the README\n"
    },
    {
      "commit": "97c181b7d61be38850b59d27f93832b53cee1cdf",
      "tree": "9e89c409daebff5ac220b8a2786c30f7964ba281",
      "parents": [
        "ba8b08e4975a9b0151ceefa85ab3d3efc3450043"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 05:38:20 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 05:38:20 2020 -0700"
      },
      "message": "Minor refactoring in pthreadpool_destroy\n"
    },
    {
      "commit": "ba8b08e4975a9b0151ceefa85ab3d3efc3450043",
      "tree": "976252733cb7717d57903dd28caa123b7885b2e2",
      "parents": [
        "15f39bf0c211ddd7e768bb6c83c5fa3695fa4be8"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 03:36:07 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 03:36:07 2020 -0700"
      },
      "message": "Fix race conditions in non-futex implementation\n"
    },
    {
      "commit": "15f39bf0c211ddd7e768bb6c83c5fa3695fa4be8",
      "tree": "17460cfc3179ecdb7660609c06ac775816866233",
      "parents": [
        "cb207d8b505e495d578bf6b9fe538b7f291a33a2"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:36:55 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:36:55 2020 -0700"
      },
      "message": "Futex-based WebAssembly+Threads implementation\n"
    },
    {
      "commit": "cb207d8b505e495d578bf6b9fe538b7f291a33a2",
      "tree": "5e110b296f6e85ffe2b4b8524769f65000bb687e",
      "parents": [
        "0f57821e68a56b4ba78fd7f4c7d1a494286497aa"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:35:09 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:35:09 2020 -0700"
      },
      "message": "Support WebAssembly+Threads build\n\n- Abstract away atomic operations and data type from the source file\n- Polyfill atomic operations for Clang targeting WAsm+Threads\n- Set Emscripten link options for WebAssembly+Threads builds\n"
    },
    {
      "commit": "0f57821e68a56b4ba78fd7f4c7d1a494286497aa",
      "tree": "c7b607d40e457df2ea9a4084e84c5c8aec7dba11",
      "parents": [
        "75294cea82d1a0e801dc64ef4d8c50e6b4b387ea"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:19:32 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:19:32 2020 -0700"
      },
      "message": "Remove redundant barriers\n"
    },
    {
      "commit": "75294cea82d1a0e801dc64ef4d8c50e6b4b387ea",
      "tree": "47720ad882ff370126eca2ed5714638bce33213c",
      "parents": [
        "2bde094c58c0fcde46b537b538f8bbaef7ef9b16"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:09:29 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 01:09:29 2020 -0700"
      },
      "message": "Simplify parallel task initialization\n"
    },
    {
      "commit": "2bde094c58c0fcde46b537b538f8bbaef7ef9b16",
      "tree": "b0d28f69a03b39462e68300897e07917293983b6",
      "parents": [
        "39e0461712bc666abd5f82f22cab46f0dcb502e7"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 00:59:45 2020 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Mar 23 00:59:45 2020 -0700"
      },
      "message": "Avoid spinning thread-pool when task has the only item\n"
    },
    {
      "commit": "39e0461712bc666abd5f82f22cab46f0dcb502e7",
      "tree": "d366bf41f5eb157921911cd425bc1adc1fd80747",
      "parents": [
        "ef23a4af82e34a4785c56b5fbae631efbcb77aea"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 14:33:12 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 14:33:12 2020 -0800"
      },
      "message": "Remove Native Client support\n"
    },
    {
      "commit": "ef23a4af82e34a4785c56b5fbae631efbcb77aea",
      "tree": "1e84c34157bb96ce9f0dfced1ae2324d86481d1d",
      "parents": [
        "efa3c028d0f7b0414f0738a706f8187430425477"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:38:29 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:38:29 2020 -0800"
      },
      "message": "PTHREADPOOL_FLAG_YIELD_WORKERS flag to bypass spin-wait\n\nMakes it possible to signal the last operation in a sequence of computations,\nso pthreadpool workers don\u0027t spin in vain.\n"
    },
    {
      "commit": "efa3c028d0f7b0414f0738a706f8187430425477",
      "tree": "56541123e4c1a4fd26b3494ca87ff474b06f1f3a",
      "parents": [
        "00108cf5c96fba21da3ea2836ad129dd3839eaed"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:34:50 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:34:50 2020 -0800"
      },
      "message": "Document PTHREADPOOL_FLAG_DISABLE_DENORMALS\n"
    },
    {
      "commit": "00108cf5c96fba21da3ea2836ad129dd3839eaed",
      "tree": "74145d4fbe64223a3d9792a0fc73962290a9812f",
      "parents": [
        "defdd296d67a43b00b334c183edba09e992d5915"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:30:44 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:30:44 2020 -0800"
      },
      "message": "Minor cleanup\n"
    },
    {
      "commit": "defdd296d67a43b00b334c183edba09e992d5915",
      "tree": "a997fffda5d3b47d5b20355a305496522001eb48",
      "parents": [
        "ebd50d0cfa3664d454ffdf246fcd228c3b370a11"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:22:16 2020 -0800"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Thu Mar 05 13:22:16 2020 -0800"
      },
      "message": "Add high-contention test cases\n"
    },
    {
      "commit": "ebd50d0cfa3664d454ffdf246fcd228c3b370a11",
      "tree": "7c8ebcd23e4fef2b38c01432eb91e9f10b69bcf9",
      "parents": [
        "d465747660ecf9ebbaddf8c3db37e4a13d0c9103"
      ],
      "author": {
        "name": "mattn",
        "email": "mattn.jp@gmail.com",
        "time": "Mon Mar 02 15:21:58 2020 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 22:21:58 2020 -0800"
      },
      "message": "Build on Windows/mingw64 (#6)\n\nSupport Windows/mingw64 build"
    },
    {
      "commit": "d465747660ecf9ebbaddf8c3db37e4a13d0c9103",
      "tree": "14f32522dabce86e2fa22fcc5dc309b1cb642818",
      "parents": [
        "7ad026703b3109907ad124025918da15cfd3f100"
      ],
      "author": {
        "name": "Michal W. Tarnowski",
        "email": "michal.w.tarnowski@gmail.com",
        "time": "Mon Oct 28 21:11:20 2019 +0100"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Tue Oct 29 10:25:14 2019 -0700"
      },
      "message": "Move deprecated attribute to the end of declarations\n"
    },
    {
      "commit": "7ad026703b3109907ad124025918da15cfd3f100",
      "tree": "349d40565f96dee9994a082aa6351cc221723a5f",
      "parents": [
        "88042a0d90c75662b492b3f0ddb6e644f36bd0b2"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Oct 19 02:13:30 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Oct 19 05:42:35 2019 -0400"
      },
      "message": "Travis-CI: configure with CMake\n"
    },
    {
      "commit": "88042a0d90c75662b492b3f0ddb6e644f36bd0b2",
      "tree": "c0912d2385701062178193187012bdbc4edde231",
      "parents": [
        "f535e635d6cf56725360aecb6e6f5a507e48fac7"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Oct 19 05:41:08 2019 -0400"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Oct 19 05:41:08 2019 -0400"
      },
      "message": "Update README and example\n"
    },
    {
      "commit": "f535e635d6cf56725360aecb6e6f5a507e48fac7",
      "tree": "4b500c9cebf4142c428d3750919b316dd3301c49",
      "parents": [
        "88dfae07f90d02309186a3aa7aae85086eae9769"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Oct 19 04:53:23 2019 -0400"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@gmail.com",
        "time": "Sat Oct 19 04:53:23 2019 -0400"
      },
      "message": "CMake: specify C++11 for tests and benchmarks\n"
    },
    {
      "commit": "88dfae07f90d02309186a3aa7aae85086eae9769",
      "tree": "aebd889d31d67e0b12a76c895dabdb7c66fe1db0",
      "parents": [
        "9589e30d3e294dfda4974669062a5886b6e42703"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 01:01:15 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 01:01:15 2019 -0700"
      },
      "message": "CMake: disable tests and benchmarks in a dependency build\n"
    },
    {
      "commit": "9589e30d3e294dfda4974669062a5886b6e42703",
      "tree": "b7b8ccefc42988ee16c535cc4491096dd5819ab3",
      "parents": [
        "c2f4f0c5868b43f9e3569540717fd9ba808c9206"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:36:50 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:44:42 2019 -0700"
      },
      "message": "Refactor CMake configuration files\n\n- Require CMake 3.5+\n- Remove CONFU_DEPENDENCIES_SOURCE_DIR and CONFU_DEPENDENCIES_BINARY_DIR\nvariables\n- Update Google Test and Google Benchmark to latest versions\n"
    },
    {
      "commit": "c2f4f0c5868b43f9e3569540717fd9ba808c9206",
      "tree": "dffe0dccf6b5cfa176589313c232840f63b55403",
      "parents": [
        "efcb469f5437bec38d2ad93c55d2ff6e02706996"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:26:25 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:26:25 2019 -0700"
      },
      "message": "Require Ubuntu Xenial 16.04 on Travis-CI\n"
    },
    {
      "commit": "efcb469f5437bec38d2ad93c55d2ff6e02706996",
      "tree": "d8c38c5b126a433cdf8279ef45bfbb51df8617a9",
      "parents": [
        "71aacd31d8f0851a158a30df6129416d6f2eca17"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:21:52 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:21:52 2019 -0700"
      },
      "message": "CMake option to disable deprecated APIs\n"
    },
    {
      "commit": "71aacd31d8f0851a158a30df6129416d6f2eca17",
      "tree": "95d74f046d6201ac9968318aed6022381655af7a",
      "parents": [
        "158098ac36d257bedd7d9c02d7276eb8b2077881"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:14:10 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Sat Oct 19 00:14:10 2019 -0700"
      },
      "message": "Switch to C11 atomics to synchronization\n"
    },
    {
      "commit": "158098ac36d257bedd7d9c02d7276eb8b2077881",
      "tree": "40e0416d838ca00f05bbdbf51c142b695a61885c",
      "parents": [
        "0e275fe56094626349c55a524ea8b71a85daa64b"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Oct 08 11:30:19 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 08 11:30:19 2019 -0700"
      },
      "message": "Make inline assembly compatible with old toolchain\n\nFix #4"
    },
    {
      "commit": "0e275fe56094626349c55a524ea8b71a85daa64b",
      "tree": "d38a16d287d72f519c89cd3a9c4ea81b7b533575",
      "parents": [
        "9e2825c0ef127a733375b56f81ee29840f5a89ef"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Oct 01 12:44:36 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Tue Oct 01 12:44:36 2019 -0700"
      },
      "message": "Add macro to guard declaration of deprecated APIs\n\nDefining PTHREADPOOL_NO_DEPRECATED_API macro makes pthreadpool.h head\nomit declarations of deprecated pthreadpool_compute_* APIs\n"
    },
    {
      "commit": "9e2825c0ef127a733375b56f81ee29840f5a89ef",
      "tree": "c5b72e1e8329cef85522177aaa4b1cd96667b648",
      "parents": [
        "51d469480dde41c539172c1cdba851df762460a8"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 16:21:47 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 16:21:47 2019 -0700"
      },
      "message": "Fix typo in comment\n"
    },
    {
      "commit": "51d469480dde41c539172c1cdba851df762460a8",
      "tree": "3841e7a8589deab54c7421682583fcf20542ea55",
      "parents": [
        "714c953fb44bbbb1ae3e0e761b9e67cd40df41cf"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 16:21:19 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 16:21:19 2019 -0700"
      },
      "message": "Fix configure.py\n"
    },
    {
      "commit": "714c953fb44bbbb1ae3e0e761b9e67cd40df41cf",
      "tree": "64d8a68ba94745b9385240f8b09a9994f402fde5",
      "parents": [
        "29f0e2ced866e321d8293d4d1bdae71a5fdc90ec"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 16:16:36 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 16:16:36 2019 -0700"
      },
      "message": "Enable spin-wait in the main thread\n"
    },
    {
      "commit": "29f0e2ced866e321d8293d4d1bdae71a5fdc90ec",
      "tree": "50d75bdf0439eaf3f37e8ae316086c9038bfaee9",
      "parents": [
        "afb23f9ac963caaea7685a3d454e80b80417ddec"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 15:22:14 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 15:44:55 2019 -0700"
      },
      "message": "New pthreadpool_parallelize_* API\n"
    },
    {
      "commit": "afb23f9ac963caaea7685a3d454e80b80417ddec",
      "tree": "60432cfb6062b06f3ed49a073bcfd68cd23ad156",
      "parents": [
        "e807f76c98bfde48b242607bbb76ccd1ec903948"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 14:22:45 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 14:22:45 2019 -0700"
      },
      "message": "Enable spin-wait in worker threads\n"
    },
    {
      "commit": "e807f76c98bfde48b242607bbb76ccd1ec903948",
      "tree": "64fef0cbd298038bd0ff0c58ea7f1b27e9d34963",
      "parents": [
        "c06f29339e2a200d9da38d86a2cb8be5128cf4c5"
      ],
      "author": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 14:05:14 2019 -0700"
      },
      "committer": {
        "name": "Marat Dukhan",
        "email": "maratek@google.com",
        "time": "Mon Sep 30 14:05:14 2019 -0700"
      },
      "message": "Refactor modulo increment in work-stealing loop\n"
    }
  ],
  "next": "c06f29339e2a200d9da38d86a2cb8be5128cf4c5"
}
