)]}'
{
  "log": [
    {
      "commit": "3ccb2270e8ef5a84bb31c4651c0df84440f30362",
      "tree": "f01d4de18bbb379e83a5f90120d33b4fece4c646",
      "parents": [
        "713c3d4ae3e58499e4dcdd773aff86255a10f18e",
        "4605240bb42326ccfe36b950e24ed13344c93fb0"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Oct 18 22:25:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 22:25:19 2026 +0200"
      },
      "message": "Merge pull request #2852 from Keerthana-64/browse-host-check\n\nbrowse: reject non-loopback Host headers when serving on localhost"
    },
    {
      "commit": "713c3d4ae3e58499e4dcdd773aff86255a10f18e",
      "tree": "1e433d8475920c0538e0e3687478148409d8ef2a",
      "parents": [
        "4e29c1c6fef07743b7c338bded170931aa3f20cd",
        "7a9fc4c5327a74e1581555da922aa588a38bf6a0"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Oct 18 22:24:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 22:24:19 2026 +0200"
      },
      "message": "Merge pull request #2823 from Boulea7/fix-duplicate-dyndep-explanations\n\nDeduplicate consecutive build explanations"
    },
    {
      "commit": "4e29c1c6fef07743b7c338bded170931aa3f20cd",
      "tree": "2741554dcc65e0a6d195bd78b700cfe03a3cb757",
      "parents": [
        "af8209694c2be09bb6c3d9385743e872417e08b0",
        "25e2f3fc3d5aa7c388d173f5f49350c750ff2f00"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Oct 18 11:21:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 11:21:42 2026 +0200"
      },
      "message": "Merge pull request #2846 from Keerthana-64/jobserver-pool-fifo-mode\n\ncreate jobserver pool fifo with owner-only permissions"
    },
    {
      "commit": "af8209694c2be09bb6c3d9385743e872417e08b0",
      "tree": "4ad00e1b391661e8551a2405a2d50d4be48ebfb6",
      "parents": [
        "04b42c82da367ebaa2c96cbdde8bc3a4265f4734",
        "3eb8988e8d64f03a8598b6b0c02a853c7271e365"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Oct 18 11:20:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 11:20:15 2026 +0200"
      },
      "message": "Merge pull request #2742 from moritzx22/missingDepsTestCoverage\n\nMissingDeps tests do not cover depfile‑based dependency loading"
    },
    {
      "commit": "04b42c82da367ebaa2c96cbdde8bc3a4265f4734",
      "tree": "97f6113473ea016e812907fbc98c6606b9f335c0",
      "parents": [
        "48bfd165e72d07f5b977ef3d745b4fea970eccf3",
        "ab617e8c40816c177cda06c0f0c3e018477b9e28"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Oct 18 11:16:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 11:16:37 2026 +0200"
      },
      "message": "Merge pull request #2855 from moritzx22/correct_pcon\n\nAdd missing file to pcons-build.py"
    },
    {
      "commit": "ab617e8c40816c177cda06c0f0c3e018477b9e28",
      "tree": "97f6113473ea016e812907fbc98c6606b9f335c0",
      "parents": [
        "48bfd165e72d07f5b977ef3d745b4fea970eccf3"
      ],
      "author": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Oct 17 17:33:21 2026 +0200"
      },
      "committer": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Oct 17 17:34:03 2026 +0200"
      },
      "message": "Add missing file to pcons-build.py\n"
    },
    {
      "commit": "48bfd165e72d07f5b977ef3d745b4fea970eccf3",
      "tree": "9c9449c225d00caa346aa1265844bcedd5f54957",
      "parents": [
        "a8d36e5e97905a8bf0cc5c0378f0d316a23eec13"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat Oct 17 16:18:15 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat Oct 17 16:20:20 2026 +0200"
      },
      "message": "Flush the newline before running a console job\n\nSetConsoleLocked(true) moves off the status line by writing \"\\n\" with\nfwrite, but didn\u0027t flush it. On Windows stdout to a console is fully\nbuffered, so the console job\u0027s output started on the status line, e.g.\n\"[0/1] Status lineJob output\", and the newline only showed up later.\n\nThis bug was introduced by #2085.\n"
    },
    {
      "commit": "a8d36e5e97905a8bf0cc5c0378f0d316a23eec13",
      "tree": "eb7f5001c7c6f5b8375c70d15c6068c73ea23779",
      "parents": [
        "b81e306232dfa644e92145c7d2871690017969e8",
        "345ae6cc6cf3f73039b4ae26ee66ca53533f2c06"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat Oct 17 16:14:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 16:14:25 2026 +0200"
      },
      "message": "Merge pull request #2833 from garyo/pcons-build\n\nAdd a pcons build"
    },
    {
      "commit": "4605240bb42326ccfe36b950e24ed13344c93fb0",
      "tree": "5307a9b0b6196b8c5cf73da0261e6ab4508b8894",
      "parents": [
        "b81e306232dfa644e92145c7d2871690017969e8"
      ],
      "author": {
        "name": "Keerthana KT",
        "email": "keerthana@labs.digiscrypt.com",
        "time": "Thu Oct 15 19:25:21 2026 +0530"
      },
      "committer": {
        "name": "Keerthana KT",
        "email": "keerthana@labs.digiscrypt.com",
        "time": "Thu Oct 15 20:12:30 2026 +0530"
      },
      "message": "browse: reject non-loopback Host headers when serving on localhost\n"
    },
    {
      "commit": "b81e306232dfa644e92145c7d2871690017969e8",
      "tree": "e98d761b67f7bdbd672cdad3fe3c2e797d5817d7",
      "parents": [
        "1d8d3becbfa7ebedab908cdf025a6c8d09cc5ff6",
        "53185c7bf8cb32d2271545d8319122072c221ec4"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Thu Oct 15 08:59:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 08:59:34 2026 +0200"
      },
      "message": "Merge pull request #2844 from mcprat/nohup\n\nContinue to ignore hangups in subprocesses if SIGHUP is ignored"
    },
    {
      "commit": "53185c7bf8cb32d2271545d8319122072c221ec4",
      "tree": "a4c74e702187bb465d78da847385b62a190eca1e",
      "parents": [
        "4e4df1e567eb3c1475a51af261cba2bfff60b4be"
      ],
      "author": {
        "name": "Michael Pratt",
        "email": "mcpratt@pm.me",
        "time": "Fri Sep 25 12:21:44 2026 -0400"
      },
      "committer": {
        "name": "Michael Pratt",
        "email": "mcpratt@pm.me",
        "time": "Wed Oct 14 23:27:18 2026 -0400"
      },
      "message": "Continue to ignore hangups in subprocesses if SIGHUP is ignored\n\nCurrently, if SIGHUP is ignored when ninja is spawned,\nninja will continue to ignore it on posix systems.\n\nHowever, each subprocess spawned has it\u0027s handler set manually,\ncatching the signal as a result, however, with a blocking delay,\nand causes ninja to close anyway, with similar behavior as if\nninja\u0027s handler was reset, but with a different exit code.\nIn this case, ninja happens to mask the interrupt exit code,\nwhile child processes have the displayed exit code of a hangup.\n\nThis may not be desirable for SIGHUP if subprocesses are ran\nwith the intent to ignore hangups, such as background processes,\nor running a build with utilities for a remote terminal, e.g. nohup.\n\nLet SIGHUP be first in the list to set a handler for subprocesses\naccording to the standard numerical order for posix,\nand first check whether SIGHUP is ignored on posix systems\nbefore setting the signal for that process to a custom handler.\n\nA test unit is added to attempt a subprocess that hangs itself up\nwhile SIGHUP is ignored, alongside the existing test when not ignored.\n\nSigned-off-by: Michael Pratt \u003cmcpratt@pm.me\u003e\n"
    },
    {
      "commit": "1d8d3becbfa7ebedab908cdf025a6c8d09cc5ff6",
      "tree": "29bb3fb168b837a4a34ee9b6a7f8077ace8a8e21",
      "parents": [
        "c2817e5854b825b3e7d38ac7a266724ba1313e29",
        "eb50b578852b40e072f17f459d0b660994a1fa0b"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Oct 12 22:08:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 22:08:26 2026 +0200"
      },
      "message": "Merge pull request #2841 from aamir-azeez/fix/deps-log-negative-input-id\n\nRecover from negative input IDs in dependency logs"
    },
    {
      "commit": "c2817e5854b825b3e7d38ac7a266724ba1313e29",
      "tree": "c9139f2d7a3e0d0f90f39947050ecfc012557cde",
      "parents": [
        "4e4df1e567eb3c1475a51af261cba2bfff60b4be",
        "a61aab54085643ba9d037312c607ecf30ee9b73f"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Fri Oct 09 10:19:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 10:19:24 2026 +0200"
      },
      "message": "Merge pull request #2837 from r3wretrhy/fix-default-escape-path-spaces\n\nninja_syntax: escape paths in Writer.default"
    },
    {
      "commit": "25e2f3fc3d5aa7c388d173f5f49350c750ff2f00",
      "tree": "052b7413b1c910a49b4ce2b860b382f3214ce458",
      "parents": [
        "4e4df1e567eb3c1475a51af261cba2bfff60b4be"
      ],
      "author": {
        "name": "Keerthana KT",
        "email": "keerthana@labs.digiscrypt.com",
        "time": "Mon Oct 05 12:33:25 2026 +0530"
      },
      "committer": {
        "name": "Keerthana KT",
        "email": "keerthana@labs.digiscrypt.com",
        "time": "Mon Oct 05 12:33:33 2026 +0530"
      },
      "message": "create jobserver pool fifo with owner-only permissions\n\nThe fifo lives in $TMPDIR (/tmp by default) and was created with mode\n0666, so other local users could open it and take job slots out of the\npool or add new ones. Use 0600 like GNU Make does, in both\nPosixJobserverPool and misc/jobserver_pool.py.\n"
    },
    {
      "commit": "eb50b578852b40e072f17f459d0b660994a1fa0b",
      "tree": "0d1a23de7379ec9b2e589a5ab2b9a38f88cc215b",
      "parents": [
        "4e4df1e567eb3c1475a51af261cba2bfff60b4be"
      ],
      "author": {
        "name": "Aamir Abdul Azeez",
        "email": "165933255+aamir-azeez@users.noreply.github.com",
        "time": "Sat Sep 26 03:59:27 2026 -0400"
      },
      "committer": {
        "name": "Aamir Abdul Azeez",
        "email": "165933255+aamir-azeez@users.noreply.github.com",
        "time": "Sat Sep 26 03:59:27 2026 -0400"
      },
      "message": "Recover from negative input IDs in dependency logs\n"
    },
    {
      "commit": "4e4df1e567eb3c1475a51af261cba2bfff60b4be",
      "tree": "21aeebaada341bc0ac7f3d6663463a10daf47b31",
      "parents": [
        "c8b233e8053c03d2fd57389035b47d36e98e69a8",
        "8a1b0c95d887243a1018a5a845c68d4cce1901bf"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Thu Sep 24 23:02:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 23:02:35 2026 +0200"
      },
      "message": "Merge pull request #2788 from Broken-Diamond/docs-cleanup\n\nFix hyphenation and correct terminology in documentation"
    },
    {
      "commit": "a61aab54085643ba9d037312c607ecf30ee9b73f",
      "tree": "674baa8daa80812d48fe4249b21cf08497f5c718",
      "parents": [
        "c8b233e8053c03d2fd57389035b47d36e98e69a8"
      ],
      "author": {
        "name": "r3wretrhy",
        "email": "lzy00419@outlook.com",
        "time": "Wed Sep 23 21:23:36 2026 +0800"
      },
      "committer": {
        "name": "r3wretrhy",
        "email": "lzy00419@outlook.com",
        "time": "Wed Sep 23 21:23:36 2026 +0800"
      },
      "message": "ninja_syntax: escape paths in Writer.default\n\nWriter.build already runs escape_path on outputs and inputs, but\nWriter.default joined paths raw. A single default target with a space\nwas therefore emitted as two defaults.\n\nUse escape_path for each path, matching the rest of the Writer API.\n"
    },
    {
      "commit": "345ae6cc6cf3f73039b4ae26ee66ca53533f2c06",
      "tree": "722e0fba90df03e6a95aa34c3c29dcbf4195f693",
      "parents": [
        "c8b233e8053c03d2fd57389035b47d36e98e69a8"
      ],
      "author": {
        "name": "Gary Oberbrunner",
        "email": "garyo@darkstarsystems.com",
        "time": "Sun Aug 23 15:33:32 2026 -0400"
      },
      "committer": {
        "name": "Gary Oberbrunner",
        "email": "garyo@darkstarsystems.com",
        "time": "Sun Sep 20 07:32:30 2026 -0400"
      },
      "message": "Add a pcons build\n\nPort the CMake build to pcons (https://pcons.org), as a proof of\nconcept. To try it:\n```\nuvx pcons\n```\nThere are lots of options; I tried to replicate the cmake build for\nthe most part. NINJA_CLANG_TIDY uses pcons\u0027s built-in clang-tidy\nsupport, so this needs pcons 0.29.0 or later.\n"
    },
    {
      "commit": "c8b233e8053c03d2fd57389035b47d36e98e69a8",
      "tree": "24e7e4a1c07d010099ab92ba347e07eee6266f33",
      "parents": [
        "ab7f80cab7627eb46bd11e4f2e509d0fd5a7c57b",
        "5e4ac668a58c9a16bb8c5b53e877c3e37fcd2b90"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Sep 20 12:19:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 20 12:19:57 2026 +0200"
      },
      "message": "Merge pull request #2825 from Krishnanand-G/fix/deps-log-bogus-out-id\n\nFix DepsLog crash on a deps record with a bogus out_id"
    },
    {
      "commit": "ab7f80cab7627eb46bd11e4f2e509d0fd5a7c57b",
      "tree": "e763c73c6b4012c1e26a6dfbf945efb6a1d48d95",
      "parents": [
        "140469f8dd55fec638226ddd54973089da44f513"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat Sep 19 09:24:34 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat Sep 19 09:24:34 2026 +0200"
      },
      "message": "Revert \"Deactivate linux-musl because it fails sometimes\"\n\nThis reverts commit e4a128055f7698522da6de2821ffe0761623f298.\n"
    },
    {
      "commit": "140469f8dd55fec638226ddd54973089da44f513",
      "tree": "a94df7fc0bd6d05bc54de88212665bcfc2bacd6c",
      "parents": [
        "e4a128055f7698522da6de2821ffe0761623f298",
        "4a13565e96e8f601e452d636e67b6d2dae371de4"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat Sep 19 09:22:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 19 09:22:40 2026 +0200"
      },
      "message": "Merge pull request #2835 from r3wretrhy/fix-escape-path-dollar\n\nninja_syntax: escape dollar signs in paths"
    },
    {
      "commit": "4a13565e96e8f601e452d636e67b6d2dae371de4",
      "tree": "a94df7fc0bd6d05bc54de88212665bcfc2bacd6c",
      "parents": [
        "e4a128055f7698522da6de2821ffe0761623f298"
      ],
      "author": {
        "name": "Zhaoqi Xu",
        "email": "lzy00419@outlook.com",
        "time": "Tue Sep 15 20:23:28 2026 +0800"
      },
      "committer": {
        "name": "Zhaoqi Xu",
        "email": "lzy00419@outlook.com",
        "time": "Tue Sep 15 20:42:02 2026 +0800"
      },
      "message": "ninja_syntax: escape dollar signs in paths\n"
    },
    {
      "commit": "e4a128055f7698522da6de2821ffe0761623f298",
      "tree": "86da5ea7679cf663c494856bec7674624aeb378b",
      "parents": [
        "cdebee37d98481867630d1a7dd3c34fb05583441"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Sep 14 16:52:33 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Sep 14 16:52:33 2026 +0200"
      },
      "message": "Deactivate linux-musl because it fails sometimes\n"
    },
    {
      "commit": "cdebee37d98481867630d1a7dd3c34fb05583441",
      "tree": "4412119de451ea9c6a8520bc058045ef7cd32dbe",
      "parents": [
        "3a6f0025c6f6714321843c639707e8f5cd6f550f",
        "bbd63a483a6cb777b303f33a8d5c9c0760450a3d"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Sep 14 16:34:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 16:34:18 2026 +0200"
      },
      "message": "Merge pull request #2828 from pttydou/fix/phonycycle-parser-1518\n\nFix phonycycle\u003dwarn input handling"
    },
    {
      "commit": "3a6f0025c6f6714321843c639707e8f5cd6f550f",
      "tree": "54403025b45030668eb361f1ac0dad1badfc677b",
      "parents": [
        "0f507b509621ed96171efa35332ce6e74fa0e08c",
        "e40daee54bf1686d99cb980f2a9d9acc7fe61b6c"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Sep 14 16:32:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 16:32:43 2026 +0200"
      },
      "message": "Merge pull request #2831 from kostadinsh/libcxx23\n\nFix building with libc++ 23"
    },
    {
      "commit": "0f507b509621ed96171efa35332ce6e74fa0e08c",
      "tree": "2cfff618d4a8279e3ecc902d1c4c9bbf118d95e9",
      "parents": [
        "58927d057398852591f033f8e0faae10e97d15e4",
        "3f8a5a525eb211e44dd7b491b94c54829cee6698"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Tue Sep 08 13:27:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 13:27:40 2026 +0200"
      },
      "message": "Merge pull request #2830 from r3wretrhy/tests-jobserver-span-duration\n\nTests: lengthen jobserver span to survive CI oversubscription"
    },
    {
      "commit": "58927d057398852591f033f8e0faae10e97d15e4",
      "tree": "327c3f30b05bf4863208cecd33ea97d3d0a645a2",
      "parents": [
        "e708a791922169adb3ce437e861edbe8ab0d42d3"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Sep 06 14:09:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 14:09:06 2026 +0200"
      },
      "message": "Remove trailing whitespace"
    },
    {
      "commit": "e708a791922169adb3ce437e861edbe8ab0d42d3",
      "tree": "8390da884981acb3f5d7270d94b80bf1b4934490",
      "parents": [
        "b9b400b5b9ac06338eb3ce720098217d11ee0650",
        "ff105f1a98d61f53bf3ef513ae2ecb71a62ed627"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Sep 06 13:57:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 13:57:51 2026 +0200"
      },
      "message": "Merge pull request #2826 from victoriacampbellmake/fix/windows-unc-canonicalize-2800\n\nfix(windows): preserve UNC prefix after CanonicalizePath (#2800)"
    },
    {
      "commit": "b9b400b5b9ac06338eb3ce720098217d11ee0650",
      "tree": "bdf380f368d70027e247277c4271505bd4d02efa",
      "parents": [
        "f5a3026eafdfd86f87acd2246893d4aa14721a77",
        "d21c6aa114d2d3ee5515ec537a6333e46b274d5a"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Sep 06 13:50:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 13:50:49 2026 +0200"
      },
      "message": "Merge pull request #2686 from PowellNGL/master\n\nInclude estimated build time of subtree in the edge weight heuristic"
    },
    {
      "commit": "f5a3026eafdfd86f87acd2246893d4aa14721a77",
      "tree": "4717cfdda5eaeb3c5660b8bc6d3842c7829ef527",
      "parents": [
        "de0898246f26c89d541de68bec578cb4515c5732",
        "57f2504e8133fa7044e00c0c296a5a34768684f1"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Sep 06 13:47:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 13:47:13 2026 +0200"
      },
      "message": "Merge pull request #2786 from JamesWidman/write-one-byte-to-lockfile\n\nUpdate lockfile mtime by writing a byte to it"
    },
    {
      "commit": "e40daee54bf1686d99cb980f2a9d9acc7fe61b6c",
      "tree": "a153ea3dc609f2ece6ed7c9e22f5a2d9ce19a833",
      "parents": [
        "de0898246f26c89d541de68bec578cb4515c5732"
      ],
      "author": {
        "name": "Kostadin Shishmanov",
        "email": "kostadinshishmanov@protonmail.com",
        "time": "Sat Sep 05 09:03:43 2026 +0300"
      },
      "committer": {
        "name": "Kostadin Shishmanov",
        "email": "kostadinshishmanov@protonmail.com",
        "time": "Sat Sep 05 09:03:43 2026 +0300"
      },
      "message": "Fix building with libc++ 23\n\njobserver_pool.cc uses getenv and line_printer.cc uses std::getenv, but\nthey don\u0027t include \u003cstdlib.h\u003e and \u003ccstdlib\u003e, respectively, which causes\na build failure with libc++ 23 due to it dropping transitive includes.\n\nSigned-off-by: Kostadin Shishmanov \u003ckostadinshishmanov@protonmail.com\u003e\n"
    },
    {
      "commit": "8a1b0c95d887243a1018a5a845c68d4cce1901bf",
      "tree": "581ab1d2236e97c68afa707513d9aceeb189322f",
      "parents": [
        "de0898246f26c89d541de68bec578cb4515c5732"
      ],
      "author": {
        "name": "Broken-Diamond",
        "email": "103643831+Broken-Diamond@users.noreply.github.com",
        "time": "Mon Jun 08 09:12:32 2026 -0600"
      },
      "committer": {
        "name": "Mac Musser",
        "email": "mussemac652@gmail.com",
        "time": "Fri Sep 04 23:01:15 2026 -0600"
      },
      "message": "Fix documentation spelling, capitalization, and phrasing\n\nCorrect spelling, capitalization, hyphenation, and phrasing in the Ninja manual, including terminology for POSIX, Unix, macOS, Windows, and build tools.\n"
    },
    {
      "commit": "de0898246f26c89d541de68bec578cb4515c5732",
      "tree": "97765f8280c03a7a60fd6419099041a7b54c46a9",
      "parents": [
        "e1884869b891038becd45a0e09ba66cb73cf7107",
        "a9071772ead9522d7ebb21048da08c8ea22cec21"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Thu Sep 03 17:28:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 17:28:10 2026 +0200"
      },
      "message": "Merge pull request #2634 from digit-google/jobserver-pool\n\nImplement jobserver pool mode in Ninja with new `--jobserver-pool` flag."
    },
    {
      "commit": "e1884869b891038becd45a0e09ba66cb73cf7107",
      "tree": "5f8b076dbe1dba4b25ad53d5411a87d7a47930a6",
      "parents": [
        "bfb4e71bc1fc691d195f06058db6bbd2779cd556",
        "4e794fe43c6734aa8bce9f1a80bcb8620fc6ca0c"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Thu Sep 03 17:27:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 17:27:17 2026 +0200"
      },
      "message": "Merge pull request #2781 from Omotola/fix/msvc-warnings-c4244-c4267\n\nEnable MSVC warnings C4244 and C4267 (#2769)"
    },
    {
      "commit": "bfb4e71bc1fc691d195f06058db6bbd2779cd556",
      "tree": "b6b78ad8a2d941b22edb9d1b5f0ed87f3b54695f",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d",
        "d6cba0f0912f357d2f7800a63ff1cd6dca12e912"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Thu Sep 03 17:26:30 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 17:26:30 2026 +0200"
      },
      "message": "Merge pull request #2655 from magistau/zero-deps\n\nfeat: `zero` deps format"
    },
    {
      "commit": "3f8a5a525eb211e44dd7b491b94c54829cee6698",
      "tree": "942653dd2ae07298e75168ef6ecee9a71e1f3fd7",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d"
      ],
      "author": {
        "name": "Zhaoqi Xu",
        "email": "lzy00419@outlook.com",
        "time": "Tue Sep 01 08:59:22 2026 +0800"
      },
      "committer": {
        "name": "Zhaoqi Xu",
        "email": "lzy00419@outlook.com",
        "time": "Tue Sep 01 08:59:22 2026 +0800"
      },
      "message": "Tests: lengthen jobserver span to survive CI oversubscription\n"
    },
    {
      "commit": "4e794fe43c6734aa8bce9f1a80bcb8620fc6ca0c",
      "tree": "be53c033da4e0d5f3bc9982457b4b454f2cc380b",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d"
      ],
      "author": {
        "name": "Omotola Akeredolu",
        "email": "oakeredolu@microsoft.com",
        "time": "Mon May 25 18:17:54 2026 -0700"
      },
      "committer": {
        "name": "Omotola Akeredolu",
        "email": "oakeredolu@microsoft.com",
        "time": "Tue Aug 25 12:54:34 2026 -0700"
      },
      "message": "Enable MSVC warnings C4244 and C4267 (#2769)\n\nRemove the /wd4244 and /wd4267 suppressions from the MSVC build\nconfiguration and fix the resulting integer-conversion warnings\nthroughout the codebase.\n\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "a9071772ead9522d7ebb21048da08c8ea22cec21",
      "tree": "7cfbd213fb10cff9c18a753ce438e61d2439e934",
      "parents": [
        "7424d27c25d53614e5b48c12a689d2c440e45019"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit+github@google.com",
        "time": "Tue Jul 01 18:36:05 2025 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit+github@google.com",
        "time": "Mon Aug 24 17:58:56 2026 +0200"
      },
      "message": "Support `enable_jobserver_pool \u003d 1` in `build.ninja`.\n\nAnother way to enable jobserver pool mode is to set\n`enable_jobserver_pool \u003d 1` in the `build.ninja` file directly,\nwhich can be determined by the generator directly.\n\nThis is equivalent to using `--jobserver-pool` on the command-line.\nNote that:\n\n- Any value other than 1 is ignored, intentionally (the size of\n  the pool is determined when Ninja is invoked only).\n\n- There is no way to disable the feature from the command-line\n  when enabled in the build plan.\n\n- Just like `--jobserver-pool`, this is ignored if a parent\n  jobserver pool is detected when Ninja is invoked.\n"
    },
    {
      "commit": "7424d27c25d53614e5b48c12a689d2c440e45019",
      "tree": "7a99a1d655ac3827eca33b08acd9efe21805fe23",
      "parents": [
        "41ed4aaabe53955980e44de130231ea697d93555"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit+github@google.com",
        "time": "Mon Jun 16 14:44:56 2025 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit+github@google.com",
        "time": "Mon Aug 24 17:55:36 2026 +0200"
      },
      "message": "Implement GNU jobserver pool mode.\n\nMake Ninja provide a pool of GNU Make jobserver slots when\ninvoked with the `--jobserver-pool` command-line option.\n\n- Introduce JobserverState class to manage the state of\n  the jobserver pool and client instances for a given\n  Ninja build.\n\n  In particular, the methods ShouldSetupClient() and\n  ShouldSetupPool() clarify under which conditions\n  the pool or client should be created, and provide\n  explanations for the decision.\n\n- All jobserver-related info / warnings are moved to the\n  VERBOSE level, keeping the output of normal invocations\n  small, and prevents modifying the unit-tests accordingly.\n\n- Update manual accordingly, detailing how everything works.\n"
    },
    {
      "commit": "41ed4aaabe53955980e44de130231ea697d93555",
      "tree": "6839ea8ba9b653c84c27bf095cf0d30919f33b45",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit+github@google.com",
        "time": "Mon Jun 16 14:14:31 2025 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit+github@google.com",
        "time": "Mon Aug 24 17:42:32 2026 +0200"
      },
      "message": "Add JobserverPool class.\n\nA new class implementing a GNU Jobserver pool of job slots.\nThis only supports FIFO mode on Posix, to match the implementation\nof the client Jobserver class that uses the pool.\n"
    },
    {
      "commit": "bbd63a483a6cb777b303f33a8d5c9c0760450a3d",
      "tree": "6eac3498d8216b01cbcaeab03d9a905e17bc5460",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d"
      ],
      "author": {
        "name": "ptt",
        "email": "1928627998@qq.com",
        "time": "Sun Aug 23 20:50:58 2026 +0800"
      },
      "committer": {
        "name": "ptt",
        "email": "1928627998@qq.com",
        "time": "Sun Aug 23 20:50:58 2026 +0800"
      },
      "message": "Fix phonycycle warn input handling\n"
    },
    {
      "commit": "57f2504e8133fa7044e00c0c296a5a34768684f1",
      "tree": "1bdc5c949f5222c8153dfc99f216e0d2f3ac0ceb",
      "parents": [
        "fc6bb98eee5a9710055cb9fe74375a6523831e28"
      ],
      "author": {
        "name": "James Widman",
        "email": "james.widman@gmail.com",
        "time": "Thu Jul 23 15:27:17 2026 -0700"
      },
      "committer": {
        "name": "James Widman",
        "email": "james.widman@gmail.com",
        "time": "Sat Aug 15 20:41:51 2026 -0700"
      },
      "message": "Update lockfile mtime by writing a byte to it\n\nOn a tmpfs on macOS 26.5 (25F71), the use of\n\n  DiskInterface::WriteFile(\".ninja_lock\", \"\", false)\n\n...has no effect in all evaluations after the first, and this is because\nof a bug in Darwin\u0027s implementation of fopen(). In particular, in the\nevent where a file foo already exists, and is stored on a tmpfs\nfilesystem, the call fopen(\"foo\", \"wb\") fails to update the mtime of the\nfile foo. (According to POSIX, this call to fopen() should update the\nmtime.)\n\nIn this change, we work around that bug by writing a single byte to the\nlock file.\n\nFixes: #2784\n"
    },
    {
      "commit": "ff105f1a98d61f53bf3ef513ae2ecb71a62ed627",
      "tree": "59cc8e4082c7f9925c4f857ff6588d154949c475",
      "parents": [
        "cffad24291a70c0aa44444bb1e8c687273cbf08c"
      ],
      "author": {
        "name": "victoriacampbellmake",
        "email": "victoriacampbellmake@users.noreply.github.com",
        "time": "Sat Aug 15 16:48:45 2026 +0800"
      },
      "committer": {
        "name": "victoriacampbellmake",
        "email": "victoriacampbellmake@users.noreply.github.com",
        "time": "Sat Aug 15 16:48:45 2026 +0800"
      },
      "message": "fix(windows): only restore UNC prefix when original separators were backslashes\n\nSigned-off-by: victoriacampbellmake \u003cvictoriacampbellmake@users.noreply.github.com\u003e"
    },
    {
      "commit": "cffad24291a70c0aa44444bb1e8c687273cbf08c",
      "tree": "732531fc51cd9ed7ab6a467a4e5b05eefa42bc2f",
      "parents": [
        "da6742eae17fd718c3a5486d329ea9623bebf0a7"
      ],
      "author": {
        "name": "victoriacampbellmake",
        "email": "victoriacampbellmake@users.noreply.github.com",
        "time": "Sat Aug 15 16:47:45 2026 +0800"
      },
      "committer": {
        "name": "victoriacampbellmake",
        "email": "victoriacampbellmake@users.noreply.github.com",
        "time": "Sat Aug 15 16:47:45 2026 +0800"
      },
      "message": "fix(windows): preserve UNC prefix after CanonicalizePath (#2800)\n\nSigned-off-by: victoriacampbellmake \u003cvictoriacampbellmake@users.noreply.github.com\u003e"
    },
    {
      "commit": "da6742eae17fd718c3a5486d329ea9623bebf0a7",
      "tree": "7b1013fc98df41491d8a592cb38d8f3732b51774",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d"
      ],
      "author": {
        "name": "victoriacampbellmake",
        "email": "victoriacampbellmake@users.noreply.github.com",
        "time": "Sat Aug 15 16:47:41 2026 +0800"
      },
      "committer": {
        "name": "victoriacampbellmake",
        "email": "victoriacampbellmake@users.noreply.github.com",
        "time": "Sat Aug 15 16:47:41 2026 +0800"
      },
      "message": "fix(windows): preserve UNC prefix after CanonicalizePath (#2800)\n\nSigned-off-by: victoriacampbellmake \u003cvictoriacampbellmake@users.noreply.github.com\u003e"
    },
    {
      "commit": "5e4ac668a58c9a16bb8c5b53e877c3e37fcd2b90",
      "tree": "5e3d8cd6ac206c506814c237bf956ed5e1d9c3b2",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d"
      ],
      "author": {
        "name": "Krishnanand G",
        "email": "118352827+Krishnanand-G@users.noreply.github.com",
        "time": "Thu Aug 13 15:45:06 2026 +0530"
      },
      "committer": {
        "name": "Krishnanand G",
        "email": "118352827+Krishnanand-G@users.noreply.github.com",
        "time": "Thu Aug 13 15:45:06 2026 +0530"
      },
      "message": "Fix DepsLog crash on a deps record with a bogus out_id\n"
    },
    {
      "commit": "7a9fc4c5327a74e1581555da922aa588a38bf6a0",
      "tree": "9342c15642d66ebf10d8326866a18c880d68a0d9",
      "parents": [
        "b51a1e37c2fb89bbefa600bd155e1ce13983f09d"
      ],
      "author": {
        "name": "zhanglangning",
        "email": "zln1905391059@163.com",
        "time": "Wed Aug 12 05:45:58 2026 +0800"
      },
      "committer": {
        "name": "zhanglangning",
        "email": "zln1905391059@163.com",
        "time": "Wed Aug 12 05:46:10 2026 +0800"
      },
      "message": "Deduplicate consecutive build explanations\n\nDyndep loading can recompute a node dirty state and record the same explanation twice. Keep consecutive duplicate explanations from being stored so -d explain reports each repeated reason once.\n"
    },
    {
      "commit": "d6cba0f0912f357d2f7800a63ff1cd6dca12e912",
      "tree": "9a9f4bf3b80c282c12cb7098316c4a9dce949909",
      "parents": [
        "77d328f5f679bfef14b1f67f3cd431b729bc786f"
      ],
      "author": {
        "name": "Tau",
        "email": "git@alice-carroll.pet",
        "time": "Tue Aug 19 03:26:51 2025 +0300"
      },
      "committer": {
        "name": "Tau",
        "email": "git@alice-carroll.pet",
        "time": "Tue Aug 11 13:25:40 2026 +0300"
      },
      "message": "feat: `zero` deps format\n"
    },
    {
      "commit": "b51a1e37c2fb89bbefa600bd155e1ce13983f09d",
      "tree": "5a2bb3b81495ac79189d098f8881175d0a520117",
      "parents": [
        "fc6bb98eee5a9710055cb9fe74375a6523831e28",
        "7255bed7a11f6821ea09843f958816a868b02036"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat Jul 25 22:55:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 22:55:58 2026 +0200"
      },
      "message": "Merge pull request #2817 from moritzx22/fixUnitTest_DyndepBuildDiscoverOutputAndDepfileInput\n\nUnittest DyndepBuildDiscoverOutputAndDepfileInput"
    },
    {
      "commit": "7255bed7a11f6821ea09843f958816a868b02036",
      "tree": "5a2bb3b81495ac79189d098f8881175d0a520117",
      "parents": [
        "fc6bb98eee5a9710055cb9fe74375a6523831e28"
      ],
      "author": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Jul 25 21:09:47 2026 +0200"
      },
      "committer": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Jul 25 21:16:28 2026 +0200"
      },
      "message": "Unittest DyndepBuildDiscoverOutputAndDepfileInput\n\nPR #2680 modified the loading of depfiles and requires a\nfix to the unittest.\n"
    },
    {
      "commit": "fc6bb98eee5a9710055cb9fe74375a6523831e28",
      "tree": "5f29b216f4b719ba43130cac047d6762e8380ac8",
      "parents": [
        "88f90e87fd61a95bc1e6c463d6d3eb19b3e80f68"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed Jul 22 21:56:26 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed Jul 22 21:56:26 2026 +0200"
      },
      "message": "Use 2 spaces for indent in CMakeLists.txt, too\n"
    },
    {
      "commit": "88f90e87fd61a95bc1e6c463d6d3eb19b3e80f68",
      "tree": "edc1f8597ca1206b6a5b2eb5e30b743adc506695",
      "parents": [
        "77d328f5f679bfef14b1f67f3cd431b729bc786f",
        "0b115d88d40cb9094eeac65d8d870bfbc90920ff"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Jul 19 14:17:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 14:17:57 2026 +0200"
      },
      "message": "Merge pull request #2680 from moritzx22/fix2666\n\nOnly load depsfile if not dirty [Fix #2666]"
    },
    {
      "commit": "0b115d88d40cb9094eeac65d8d870bfbc90920ff",
      "tree": "edc1f8597ca1206b6a5b2eb5e30b743adc506695",
      "parents": [
        "a658435634be58bdef424d2d1a36f7c194b81c69"
      ],
      "author": {
        "name": "Moritz",
        "email": "moritz.mh22@gmail.com",
        "time": "Wed Apr 01 14:54:11 2026 +0200"
      },
      "committer": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Jul 18 23:04:17 2026 +0200"
      },
      "message": "Load depfile only when output nodes are not dirty\n\nThis change updates the logic so that the depfile is loaded only when no\noutput node is not dirty based on manifest and dyndep inputs (excluding the\ndepfile itself). If the outputs are already scheduled to be regenerated, loading\nthe depfile is unnecessary, since its only purpose is to trigger regeneration\nof the outputs — which is already guaranteed.\n\nAvoiding the use of a potentially outdated depfile prevents incorrect cycle\ndetection and ensures that stale depfiles are no longer added to the graph.\n"
    },
    {
      "commit": "a658435634be58bdef424d2d1a36f7c194b81c69",
      "tree": "103576fd8142f9a22cc41de37ad8a8984b7b7b99",
      "parents": [
        "3d8720939e9aa410d88644f14a5fad99c8a34a71"
      ],
      "author": {
        "name": "moritzX22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Apr 04 23:49:31 2026 +0200"
      },
      "committer": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Jul 18 22:32:39 2026 +0200"
      },
      "message": "Refactor dirty‑state recomputation with caching and cleanup\n\nReplace DependencyScan::RecomputeOutputDirty with the new\nRecomputeOutputsDirtyCache helper class to centralize the\nlogic for determining whether edge outputs are dirty.\nThe new cache‑aware implementation avoids redundant work,\nimproves readability, and prepares the codebase for upcoming\nchanges to load depfiles only when nodes are not dirty.\n\nBuild‑log lookups are now cached, and command hash computation\nis performed lazily to improve performance.\n\nThis commit introduces no functional changes.\n"
    },
    {
      "commit": "3d8720939e9aa410d88644f14a5fad99c8a34a71",
      "tree": "6743c3e7890d76c14bf3f61a58982c60b4360364",
      "parents": [
        "2501879439ba5c65eaf559565c0f24d368ee3e65"
      ],
      "author": {
        "name": "moritzX22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Apr 04 01:36:09 2026 +0200"
      },
      "committer": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Jul 18 22:32:39 2026 +0200"
      },
      "message": "Refactoring\n\nThis change refactors internal parts of the code without altering functional\nbehavior. It prepares the implementation for a future update in which\ndependencies will be loaded only when inputs are not marked dirty.\n\nThe sequence in which only a subset of inputs can be specified to be processed\nwill matter for upcoming changes to depfile loading. A new helper function\n\u0027RecomputeEdgesInputsDirty\u0027 has been introduced for clarity.\nThe function can be specified to visit only a subset of an edge’s inputs as\nwell.\n"
    },
    {
      "commit": "2501879439ba5c65eaf559565c0f24d368ee3e65",
      "tree": "313721d504556803d1d6c0d8843674fa03cb7bed",
      "parents": [
        "77d328f5f679bfef14b1f67f3cd431b729bc786f"
      ],
      "author": {
        "name": "moritzX22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Apr 04 01:35:57 2026 +0200"
      },
      "committer": {
        "name": "moritzx22",
        "email": "moritz.mh22@gmail.com",
        "time": "Sat Jul 18 22:32:39 2026 +0200"
      },
      "message": "Reorder operations in RecomputeNodeDirty\n\nThis change adjusts the internal order of the load output mtimes step and the\nstep that recomputes the dirty state of inputs. The modification does not alter\nany functional behavior. The reordering improves internal consistency and\nprepares the code for upcoming changes.\n"
    },
    {
      "commit": "77d328f5f679bfef14b1f67f3cd431b729bc786f",
      "tree": "34d8e8bb8fe95ccfeab894efc0e283697e54fe47",
      "parents": [
        "ada4c1029b6bf4e8c5becd3870b887024c87c367",
        "77fc2c3686957bb4d0a85c28db1454c2909b3612"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Thu Jul 09 15:57:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 15:57:34 2026 +0200"
      },
      "message": "Merge pull request #2797 from orgads/emhash\n\nUpdate emhash"
    },
    {
      "commit": "ada4c1029b6bf4e8c5becd3870b887024c87c367",
      "tree": "9544725f1a780387b206e4405f3fb94796701d74",
      "parents": [
        "89a60dbf95c6ad7fc93bf02e572c0e00d4dcb1a7",
        "034e2b838bf8f289f753909ddb8c86db1fea3635"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed Jul 01 21:56:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 21:56:15 2026 +0200"
      },
      "message": "Merge pull request #2809 from elliotgoodrich/fix-signature-mismatch\n\nFix signature mismatch in `StatusFormatEnv`"
    },
    {
      "commit": "034e2b838bf8f289f753909ddb8c86db1fea3635",
      "tree": "9544725f1a780387b206e4405f3fb94796701d74",
      "parents": [
        "89a60dbf95c6ad7fc93bf02e572c0e00d4dcb1a7"
      ],
      "author": {
        "name": "Elliot Goodrich",
        "email": "elliotgoodrich@gmail.com",
        "time": "Wed Jul 01 19:46:50 2026 +0100"
      },
      "committer": {
        "name": "Elliot Goodrich",
        "email": "elliotgoodrich@gmail.com",
        "time": "Wed Jul 01 19:46:50 2026 +0100"
      },
      "message": "Fix signature mismatch in `StatusFormatEnv`\n\n`StatusFormatEnv` was added as an implementation of `Env`, but at the\nsame time the signature of `LookupVariable` was changed.  This caused a\ncompilation failure when both were merged.\n"
    },
    {
      "commit": "89a60dbf95c6ad7fc93bf02e572c0e00d4dcb1a7",
      "tree": "cc66486eea65140bdef9018c6cb6dd3925b6fb51",
      "parents": [
        "ce60eb1bce8710f0cb8b9e33a953cbc13e565d37",
        "7e612cc13975615751f886579d23471f2bda0984"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed Jul 01 20:17:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 20:17:25 2026 +0200"
      },
      "message": "Merge pull request #2716 from elliotgoodrich/take-stringpiece-on-graph-methods\n\nAvoid string copies on lookup methods"
    },
    {
      "commit": "ce60eb1bce8710f0cb8b9e33a953cbc13e565d37",
      "tree": "87966c68acce6f7ac340417a18f92a34f0c7a094",
      "parents": [
        "33a4003f1f97a41821f84a3302366f7242485715",
        "23a6827a4593e12527b5d5b33be7d5dd58d6c924"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Jun 29 19:27:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 19:27:41 2026 +0200"
      },
      "message": "Merge pull request #2774 from jhasse/status-description\n\nAllow to change order of description in --status"
    },
    {
      "commit": "33a4003f1f97a41821f84a3302366f7242485715",
      "tree": "3e7653b64269894c73c74412c201d5b3a1a39c0f",
      "parents": [
        "8942286b5733dd16fceb60a813c161df69dd97ce",
        "a2f5ce74211f87fae57530ca80bc5499d9e2e0b0"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Jun 29 19:20:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 19:20:12 2026 +0200"
      },
      "message": "Merge pull request #2799 from orgads/mkdtemp-mingw\n\nFix test build on mingw"
    },
    {
      "commit": "8942286b5733dd16fceb60a813c161df69dd97ce",
      "tree": "37ac62b60f843abcf7a9241bedc6c386ce4f8368",
      "parents": [
        "06191e72d2710ea80a9ff2fb5f7faa0eee22dda6",
        "9cf0f74e19ac5cc5886063f43540fb401b9298c4"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon Jun 29 19:16:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 19:16:42 2026 +0200"
      },
      "message": "Merge pull request #2804 from ninja-build/dependabot/github_actions/actions/checkout-7\n\nBump actions/checkout from 6 to 7"
    },
    {
      "commit": "9cf0f74e19ac5cc5886063f43540fb401b9298c4",
      "tree": "37ac62b60f843abcf7a9241bedc6c386ce4f8368",
      "parents": [
        "06191e72d2710ea80a9ff2fb5f7faa0eee22dda6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 08:52:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 08:52:40 2026 +0000"
      },
      "message": "Bump actions/checkout from 6 to 7\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "06191e72d2710ea80a9ff2fb5f7faa0eee22dda6",
      "tree": "c0cac0a1fca2f1b35f1cae8d6b80fdef81f9e543",
      "parents": [
        "f735970600b5713276583589dce207d575950b14",
        "d128826522bbb4a0d9650e0d3b9bc47f33d5bf81"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Tue Jun 16 09:33:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 09:33:23 2026 +0200"
      },
      "message": "Merge pull request #2796 from orgads/tests-pipe\n\nTests: Use context manager for Popen"
    },
    {
      "commit": "a2f5ce74211f87fae57530ca80bc5499d9e2e0b0",
      "tree": "8a852acad1c55919ade8d655160c5bfea2542776",
      "parents": [
        "f735970600b5713276583589dce207d575950b14"
      ],
      "author": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 18:27:48 2026 +0300"
      },
      "committer": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 18:29:01 2026 +0300"
      },
      "message": "Fix test build on mingw\n\nmingw headers do have mkdtemp in stdlib.h.\n"
    },
    {
      "commit": "77fc2c3686957bb4d0a85c28db1454c2909b3612",
      "tree": "7c4d0937ae5ec083064dbe6a29cf827ac39117a3",
      "parents": [
        "f735970600b5713276583589dce207d575950b14"
      ],
      "author": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 13:24:47 2026 +0300"
      },
      "committer": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 17:13:52 2026 +0300"
      },
      "message": "Update emhash\n\nFixes the following warning:\nsrc/third_party/emhash/hash_table8.hpp:1100:33: warning: Result of \u0027malloc\u0027 is converted to a pointer of type \u0027char\u0027, which is incompatible with sizeof operand type \u0027Index\u0027 [unix.MallocSizeof]\n"
    },
    {
      "commit": "d128826522bbb4a0d9650e0d3b9bc47f33d5bf81",
      "tree": "c0cac0a1fca2f1b35f1cae8d6b80fdef81f9e543",
      "parents": [
        "f735970600b5713276583589dce207d575950b14"
      ],
      "author": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 12:29:24 2026 +0300"
      },
      "committer": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 14:45:11 2026 +0300"
      },
      "message": "Tests: Use context manager for Popen\n\nResourceWarning: unclosed file \u003c_io.BufferedReader name\u003d3\u003e\n"
    },
    {
      "commit": "f735970600b5713276583589dce207d575950b14",
      "tree": "efd0c0b9d7f8d5eaf6d8b6c3a00870dfde5aa512",
      "parents": [
        "cdb7c8be8ebd3e34ceb8024d0a900d1d83b0fcc7",
        "2ae7caf07ef10bb98ba16090aac0568486db9110"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Jun 14 13:00:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 13:00:03 2026 +0200"
      },
      "message": "Merge pull request #2751 from philwo/clean-multi-outputs\n\nFix -t clean to remove all outputs of multi-output edges"
    },
    {
      "commit": "cdb7c8be8ebd3e34ceb8024d0a900d1d83b0fcc7",
      "tree": "43706e59a3622ae42d5b835aec91bd412a4a78cf",
      "parents": [
        "ec91f7db71a9ec33752d695d38fa24751583fd88",
        "2c729faff30a8014e29bb1e2c03697209a75a6a5"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Jun 14 12:58:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 12:58:34 2026 +0200"
      },
      "message": "Merge pull request #2763 from braydenkrus/patch-2\n\nCheck `NO_COLOR` flag before `CLICOLOR_FORCE`"
    },
    {
      "commit": "ec91f7db71a9ec33752d695d38fa24751583fd88",
      "tree": "ddd6862f4bbc7e715fbd4c95c79390d73ca549b8",
      "parents": [
        "f942e6efa03d4530e6bfe41d952f3e58db6d0db9",
        "dd1faec2c932aeee48b8160adc961049b27db85b"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Jun 14 12:54:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 12:54:42 2026 +0200"
      },
      "message": "Merge pull request #2789 from bradking/dyndep-multi\n\ndyndep: fix handling of multiple dyndep file outputs on one edge"
    },
    {
      "commit": "f942e6efa03d4530e6bfe41d952f3e58db6d0db9",
      "tree": "6266ba759f0fc84ce995da62d25d8f454a015ee2",
      "parents": [
        "5a7fe11473259e7111dfb6196541f503bc5fa512",
        "75c3aeecbf2629419b1e4b04ef37d6a31a81c999"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Jun 14 12:47:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 12:47:53 2026 +0200"
      },
      "message": "Merge pull request #2792 from orgads/bootstrap-test\n\nFix bootstrap with unit tests"
    },
    {
      "commit": "75c3aeecbf2629419b1e4b04ef37d6a31a81c999",
      "tree": "6266ba759f0fc84ce995da62d25d8f454a015ee2",
      "parents": [
        "5a7fe11473259e7111dfb6196541f503bc5fa512"
      ],
      "author": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 00:36:15 2026 +0300"
      },
      "committer": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Sun Jun 14 00:37:06 2026 +0300"
      },
      "message": "Fix bootstrap with unit tests\n\nbootstrap complete.  rebuilding...\nninja: error: build.ninja:220: multiple rules generate build/string_piece_util.o\n\nTraceback (most recent call last):\n  File \"/home/orgads/Projects/ninja/./configure.py\", line 813, in \u003cmodule\u003e\n    subprocess.check_call(rebuild_args)\n    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\n  File \"/usr/lib/python3.13/subprocess.py\", line 419, in check_call\n    raise CalledProcessError(retcode, cmd)\nsubprocess.CalledProcessError: Command \u0027[\u0027./ninja\u0027]\u0027 returned non-zero exit status 1.\n\nAmends commit 0d3b9f16b376b1e31c94e60180dacb1f336ebe31.\n"
    },
    {
      "commit": "dd1faec2c932aeee48b8160adc961049b27db85b",
      "tree": "f2233d0e1a44e42aeca7004b9fc74773caeb6d1f",
      "parents": [
        "5a7fe11473259e7111dfb6196541f503bc5fa512"
      ],
      "author": {
        "name": "Brad King",
        "email": "brad.king@kitware.com",
        "time": "Thu May 28 12:29:16 2026 -0400"
      },
      "committer": {
        "name": "Brad King",
        "email": "brad.king@kitware.com",
        "time": "Tue Jun 09 16:06:20 2026 -0400"
      },
      "message": "dyndep: fix handling of multiple dyndep file outputs on one edge\n\nNormally an edge with a dyndep binding cannot be scheduled until its\ndyndep file is loaded because we require the dyndep file to be an input.\nHowever, in the case that one edge produces multiple dyndep files as\noutputs, none of their dependent edges is blocked on its dyndep input\nbecause all the dyndep files are ready.  Load all of the dyndep files\nbefore recomputing graph readiness to avoid mistakenly scheduling an\nedge that appears to be ready only because its dyndep information has\nnot been loaded yet.\n\nFixes: #2782\n"
    },
    {
      "commit": "5a7fe11473259e7111dfb6196541f503bc5fa512",
      "tree": "954067abb996288ae090bafaf7e9e54b1cd78d06",
      "parents": [
        "173f464386051d01712edededc5edd5c0133cf76"
      ],
      "author": {
        "name": "scivision",
        "email": "10931741+scivision@users.noreply.github.com",
        "time": "Thu May 21 11:09:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 17:09:24 2026 +0200"
      },
      "message": "deduplicate CMake target logic (#2775)\n\n* deduplicate getopt.c CMake CXX language\n\n* deduplicate clang-tidy CMake script\n\n---------\n\nCo-authored-by: scivision \u003cscivision@users.noreply.github.com\u003e"
    },
    {
      "commit": "173f464386051d01712edededc5edd5c0133cf76",
      "tree": "790a82039e3f011352f8f3355b52c5dd35fa49b8",
      "parents": [
        "2a8ddccd35fbe9cd235fbda192cc941dcdb3efcf",
        "0d57a90b5d956faeaca3635e01342bcbd217b758"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Thu May 21 17:05:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 17:05:47 2026 +0200"
      },
      "message": "Merge pull request #2777 from scivision/cmake-noop\n\nremove noop CMake policy - always new already"
    },
    {
      "commit": "2c729faff30a8014e29bb1e2c03697209a75a6a5",
      "tree": "ac69574e3aff657e5f88110697a4578c0995fe88",
      "parents": [
        "044656d45d0e56e082d9361df229254a183d1fff"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Wed May 20 12:44:39 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Wed May 20 12:44:39 2026 -0400"
      },
      "message": "Remove unnecessary NO_COLOR checks, condense checks for CLICOLOR_FORCE and FORCE_COLOR\n"
    },
    {
      "commit": "0d57a90b5d956faeaca3635e01342bcbd217b758",
      "tree": "790a82039e3f011352f8f3355b52c5dd35fa49b8",
      "parents": [
        "2a8ddccd35fbe9cd235fbda192cc941dcdb3efcf"
      ],
      "author": {
        "name": "scivision",
        "email": "scivision@users.noreply.github.com",
        "time": "Fri May 15 19:34:14 2026 -0400"
      },
      "committer": {
        "name": "scivision",
        "email": "scivision@users.noreply.github.com",
        "time": "Fri May 15 19:34:14 2026 -0400"
      },
      "message": "remove noop CMake policy - always new already\n\ncmake_minimum_required(VERSION 3.9) and higher already set this\npolicy. Further, the canonical way for projects to set individual\npolicies is as done for CMP0135 in this project.\n"
    },
    {
      "commit": "23a6827a4593e12527b5d5b33be7d5dd58d6c924",
      "tree": "c77a4c97904addb78748e136cb3f5371706e767c",
      "parents": [
        "2a8ddccd35fbe9cd235fbda192cc941dcdb3efcf"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed May 13 22:16:03 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed May 13 22:16:26 2026 +0200"
      },
      "message": "Allow to change order of description in --status\n\nReplacement for #1045.\n"
    },
    {
      "commit": "2a8ddccd35fbe9cd235fbda192cc941dcdb3efcf",
      "tree": "95710f41f90dda6daafb8361091af7afd4d41a6b",
      "parents": [
        "166d02307de7d38a6c953c7ef3a0b5f9c956119d",
        "0f555577288a1c4a672bc7121904dfc092b390f0"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed May 13 22:12:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 22:12:35 2026 +0200"
      },
      "message": "Merge pull request #2772 from jhasse/status-cmd-line\n\nAdd --status flag with Ninja-style variable expansion"
    },
    {
      "commit": "0f555577288a1c4a672bc7121904dfc092b390f0",
      "tree": "05a6137fdd970854d97f9604125aea461488357e",
      "parents": [
        "aa4c15c20f0eab33b1beb189d6b6b5585dc06586"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed May 13 21:06:00 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Wed May 13 21:06:00 2026 +0200"
      },
      "message": "Add --status flag with Ninja-style variable expansion\n\nIntroduces a `--status FMT` command-line flag that configures the\nprogress status using Ninja\u0027s regular `$var`/`${var}` syntax with\ndescriptive variable names ($finished, $total, $progress, $elapsed,\netc.) instead of the `%`-escapes used by `NINJA_STATUS`. When passed,\nit takes precedence over `NINJA_STATUS`; the env-var path is left\nunchanged for backwards compatibility.\n"
    },
    {
      "commit": "166d02307de7d38a6c953c7ef3a0b5f9c956119d",
      "tree": "9e01389c70c2078604d34e41f78303af9382238f",
      "parents": [
        "aa4c15c20f0eab33b1beb189d6b6b5585dc06586",
        "28d54089829808f5b8760eafaa312781c11acd60"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Mon May 11 15:56:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 15:56:37 2026 +0200"
      },
      "message": "Merge pull request #2771 from jhasse/test_issue_2621\n\nMake test_issue_2621 resistence against different ordering"
    },
    {
      "commit": "28d54089829808f5b8760eafaa312781c11acd60",
      "tree": "9e01389c70c2078604d34e41f78303af9382238f",
      "parents": [
        "aa4c15c20f0eab33b1beb189d6b6b5585dc06586"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat May 09 22:00:37 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat May 09 22:00:37 2026 +0200"
      },
      "message": "Make test_issue_2621 resistence against different ordering\n\nSee #2621.\n"
    },
    {
      "commit": "aa4c15c20f0eab33b1beb189d6b6b5585dc06586",
      "tree": "cdf3bbc85ba6d5b53c49e055688bb657c13de669",
      "parents": [
        "68398e170d63abdeddaedc5d439f39c91a9f8ea2",
        "0d3b9f16b376b1e31c94e60180dacb1f336ebe31"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat May 09 00:04:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 00:04:15 2026 +0200"
      },
      "message": "Merge pull request #2722 from elliotgoodrich/small-string-utils\n\nAdd `StringPiece::substr` method"
    },
    {
      "commit": "68398e170d63abdeddaedc5d439f39c91a9f8ea2",
      "tree": "cb8fee7f85bc0e65e45a7fe253c9b7e8c353025a",
      "parents": [
        "b7b5d3183a5c6cd817ab1bd3c9511fe6ff7d2b6a",
        "8a2d5fb340934050a4b42224265360eb7b37cc7b"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat May 09 00:02:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 00:02:23 2026 +0200"
      },
      "message": "Merge pull request #2738 from ninja-build/dependabot/github_actions/actions/upload-artifact-7\n\nBump actions/upload-artifact from 6 to 7"
    },
    {
      "commit": "b7b5d3183a5c6cd817ab1bd3c9511fe6ff7d2b6a",
      "tree": "78387e4c09e524544922353e05b567704b077653",
      "parents": [
        "02e3fd228b526b97c58f0d48ee945f627daf401c",
        "389d044d93c11ab18b8231af0c06888037994b4e"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sat May 09 00:00:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 00:00:58 2026 +0200"
      },
      "message": "Merge pull request #2744 from braydenkrus/patch-1\n\nDocument `pool` option under \"Rule Variables\""
    },
    {
      "commit": "02e3fd228b526b97c58f0d48ee945f627daf401c",
      "tree": "dd607bd0cdf148b49e599020a0abfe629fb1189a",
      "parents": [
        "a830ae5b156f899b6c42043a8d8d284120c0a893",
        "f19dc4a4e253444fafc75cca5abfae9c011f6d39"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Fri May 08 11:27:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 11:27:48 2026 +0200"
      },
      "message": "Merge pull request #2765 from jhasse/builddir-target\n\nFall back to $builddir/target when target lookup fails"
    },
    {
      "commit": "044656d45d0e56e082d9361df229254a183d1fff",
      "tree": "fa942aebaa59b07ff89aca6f2c10b375908847ca",
      "parents": [
        "6aa47db2a3509b990f34e5ed5ca538bfafd2f1b6"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Mon May 04 15:26:59 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Mon May 04 15:26:59 2026 -0400"
      },
      "message": "Add a check for NO_COLOR for UNIX that was included for Windows\n"
    },
    {
      "commit": "6aa47db2a3509b990f34e5ed5ca538bfafd2f1b6",
      "tree": "70cdcc05d23ee2324c4b5b874a791beb84c0aa02",
      "parents": [
        "d4f11df90f7211a399625948254b2c8536da5a82"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Mon May 04 12:21:08 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Mon May 04 12:21:08 2026 -0400"
      },
      "message": "Use anonymous namespace for helper functions, uncomment NO_COLOR code\n"
    },
    {
      "commit": "d4f11df90f7211a399625948254b2c8536da5a82",
      "tree": "8e1ac61d7768916d942e0d1b94cf9fcfd7ab61bb",
      "parents": [
        "61b029a1f387ed054f9bcf2d0870414153d3990d"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Thu Apr 30 10:04:57 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Thu Apr 30 10:04:57 2026 -0400"
      },
      "message": "Remove ansi_color, move its implementation to line_printer\n"
    },
    {
      "commit": "61b029a1f387ed054f9bcf2d0870414153d3990d",
      "tree": "ce1be08381a69ee6059e6ad542a5df26d7ee3825",
      "parents": [
        "14fa2b7df0f826f03cd7bf9fba77b783ce75e73a"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Tue Apr 28 10:20:59 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Tue Apr 28 10:20:59 2026 -0400"
      },
      "message": "Switch to getenv and _putenv_s for Windows ansi_color\n"
    },
    {
      "commit": "f19dc4a4e253444fafc75cca5abfae9c011f6d39",
      "tree": "32fdd3bc26de462c50e09ae847a9cd1a5af79eb5",
      "parents": [
        "93e431abd3e8bad89f076a2beab7b1e4598985c7"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Tue Apr 28 08:11:46 2026 +0200"
      },
      "committer": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Tue Apr 28 08:11:46 2026 +0200"
      },
      "message": "Address comments\n"
    },
    {
      "commit": "a830ae5b156f899b6c42043a8d8d284120c0a893",
      "tree": "1131af2c25753cdca10a501c151187860d2c3e29",
      "parents": [
        "def9560a0b6d755936e615ce443a0aec45c39bdb",
        "1a7da2b33abfca8c75467deac82c726c9ff6dcfc"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Tue Apr 28 07:51:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 07:51:10 2026 +0200"
      },
      "message": "Merge pull request #2726 from jamesl-10/ninja-parallelism\n\nMake full use of parallelism in jobserver mode"
    },
    {
      "commit": "14fa2b7df0f826f03cd7bf9fba77b783ce75e73a",
      "tree": "693f73846e94870eab1c756dedcc9cb9a92365b6",
      "parents": [
        "1e6c96fd03aa12f7e203bb368c03c67c5279dcc4"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Thu Apr 23 10:45:25 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Thu Apr 23 10:45:25 2026 -0400"
      },
      "message": "Fix AnsiColorTest on Windows, remove Windows line endings\n"
    },
    {
      "commit": "1e6c96fd03aa12f7e203bb368c03c67c5279dcc4",
      "tree": "08a0967211409d60dd13bbc6862b83aac5914c87",
      "parents": [
        "201c9b944a8700ddfad2f5199d763206bb052532",
        "27e4b60d831107140cdc15cbad82350d8a701647"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Fri Apr 17 15:11:06 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Fri Apr 17 15:11:06 2026 -0400"
      },
      "message": "Implement ansi_color\n"
    },
    {
      "commit": "201c9b944a8700ddfad2f5199d763206bb052532",
      "tree": "08a0967211409d60dd13bbc6862b83aac5914c87",
      "parents": [
        "e1707b46db6d77a3f95e32c52e4a67ca549b0c94"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Fri Apr 17 15:05:56 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Fri Apr 17 15:05:56 2026 -0400"
      },
      "message": "Implement ansi_color\n"
    },
    {
      "commit": "27e4b60d831107140cdc15cbad82350d8a701647",
      "tree": "ed5e5b1ea840d49bb86f9453d9c27d9696071dea",
      "parents": [
        "e1707b46db6d77a3f95e32c52e4a67ca549b0c94"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Mon Apr 13 08:54:39 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 08:54:39 2026 -0400"
      },
      "message": "Simplify helper functions"
    },
    {
      "commit": "def9560a0b6d755936e615ce443a0aec45c39bdb",
      "tree": "f1c071efeb8666292627875a689eb1bb1070cce9",
      "parents": [
        "cedf78d68a9fd1a3233e59569455e1f3f8c19680",
        "93d37d0cb101ad6e51875b86417feb99f94fc3d4"
      ],
      "author": {
        "name": "Nico Weber",
        "email": "thakis@chromium.org",
        "time": "Sun Apr 12 12:45:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 12:45:24 2026 -0400"
      },
      "message": "Merge pull request #2764 from skeeto/fix-recovery\n\nFix deps log recovery failing to remove corrupt records"
    },
    {
      "commit": "e1707b46db6d77a3f95e32c52e4a67ca549b0c94",
      "tree": "af2df4231fb22ec462ca5fc18a7d86dec0ded000",
      "parents": [
        "54ce433b09aaa59051c3ad24d3310734f382cd1d"
      ],
      "author": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Sun Apr 12 10:26:56 2026 -0400"
      },
      "committer": {
        "name": "Brayden Krus",
        "email": "151576863+braydenkrus@users.noreply.github.com",
        "time": "Sun Apr 12 10:26:56 2026 -0400"
      },
      "message": "Add support for FORCE_COLOR. (For now) comment out NO_COLOR logic\n"
    },
    {
      "commit": "cedf78d68a9fd1a3233e59569455e1f3f8c19680",
      "tree": "f20cd22708f95b6ef62e1b5004a149281f35e3f0",
      "parents": [
        "947aade8495004d5b0911a19d27433c57225a94c",
        "f7da4459d0b4163084523d7815f401c35bcb1d6e"
      ],
      "author": {
        "name": "Jan Niklas Hasse",
        "email": "jhasse@bixense.com",
        "time": "Sun Apr 12 15:33:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 15:33:53 2026 +0200"
      },
      "message": "Merge pull request #2739 from jhasse/exclude-validation-edges-from-compdb\n\ncompdb: Exclude validation-only edges from compile_commands.json"
    }
  ],
  "next": "93e431abd3e8bad89f076a2beab7b1e4598985c7"
}
