)]}'
{
  "log": [
    {
      "commit": "7e0d4b675a64ff6b048f171636e68350a96944d8",
      "tree": "18ac0b8460b42cfe2ac60011918490404b70352f",
      "parents": [
        "7b58997a7b8a200325f41d74b45881524af29887"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Sep 04 17:14:11 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Mon Sep 14 20:02:17 2026 +0200"
      },
      "message": "rust: add support for probing no_std via b_freestanding\n\nRust always adds the outcome of --print native-static-libs to build\ntargets linked with Rust code. Use the b_freestanding option to drive\nhow to retrieve native-static-libs and (if supplied globally\nrather than per-project) how to perform the sanity check.\n\nFixes: #14375\nFixes: #15505\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "7b58997a7b8a200325f41d74b45881524af29887",
      "tree": "cbc33505f7c38e40475bf6c80d1b51ae0ef6ed06",
      "parents": [
        "df7c8375f4936b46ba45ff785b88bce66c372a9f"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Sep 04 12:32:04 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Mon Sep 14 20:02:17 2026 +0200"
      },
      "message": "compilers: add and implement b_freestanding\n"
    },
    {
      "commit": "df7c8375f4936b46ba45ff785b88bce66c372a9f",
      "tree": "737f9268c7f61227ca5377be0cbca76951c2d812",
      "parents": [
        "1d2410274cb5c6101f009c955eed3ecb89891aaf"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Jul 13 23:00:08 2026 +0000"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Sep 14 10:30:06 2026 -0700"
      },
      "message": "interpreterbase: delete unused noKwargs\n"
    },
    {
      "commit": "1d2410274cb5c6101f009c955eed3ecb89891aaf",
      "tree": "4cf37b12c691fd421e4f07434a3a73ba565eebe9",
      "parents": [
        "d6b600fbb7efe0c0f5794acb8ead2ea0684a6408"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Jul 13 22:52:54 2026 +0000"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Sep 14 10:30:06 2026 -0700"
      },
      "message": "replace noKwargs with TypedArgs\n"
    },
    {
      "commit": "d6b600fbb7efe0c0f5794acb8ead2ea0684a6408",
      "tree": "30fb412d9c050c3389b3aedc69e47bac0cb9e129",
      "parents": [
        "13a05a895ba63a8ee1d73b329acbdcefe907c010"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Jul 13 22:27:06 2026 +0000"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Sep 14 10:30:06 2026 -0700"
      },
      "message": "decorators: Teach TypedArgs to handle the job of noKwargs\n"
    },
    {
      "commit": "13a05a895ba63a8ee1d73b329acbdcefe907c010",
      "tree": "2a484cff282aafe0d5d71d3ea363fb811c2ba7f8",
      "parents": [
        "6e548a338e1c40237f44e6dd6dd9dd13c94f9069"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Jul 13 22:28:22 2026 +0000"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Sep 14 10:30:06 2026 -0700"
      },
      "message": "interpreterbase: delete typed_kwargs\n"
    },
    {
      "commit": "6e548a338e1c40237f44e6dd6dd9dd13c94f9069",
      "tree": "606fa3a4f03116f0d91c64a993a3e1f7ffe0eed2",
      "parents": [
        "cdbdd5968292f0528f52c7d9a337c754f3cde035"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Tue Sep 01 16:12:46 2026 +0000"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Sep 14 10:30:06 2026 -0700"
      },
      "message": "interpreter: convert typed_kwargs calls to TypedArgs\n"
    },
    {
      "commit": "cdbdd5968292f0528f52c7d9a337c754f3cde035",
      "tree": "876939b62b7ce24077a72576e9f303026c8dd3b3",
      "parents": [
        "45bfeba3858e71b9c229190622e7b41204ba72dd"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Jul 13 21:19:09 2026 +0000"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Mon Sep 14 10:30:06 2026 -0700"
      },
      "message": "interpreterbase: implement a TypedArgs class\n\nThis will eventually take over for both typed_kwargs and typed_pos_args,\nbut for now it implements just the typed_kwarg info.\n"
    },
    {
      "commit": "45bfeba3858e71b9c229190622e7b41204ba72dd",
      "tree": "891198f3a8fe8424898a01c7a8b2bae2465468db",
      "parents": [
        "782cf324ceacef2768024cd9d5251c6a7371662c"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Sat Sep 12 09:12:49 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Sun Sep 13 09:33:58 2026 +0200"
      },
      "message": "tests: remove files created by clear_transitive_files\n\nThey were committed by mistake as part of commit\n67d7ddb36c0057eeb046cf18ea585bb4b91b9fce.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "782cf324ceacef2768024cd9d5251c6a7371662c",
      "tree": "638265bb9a3ca5b9e516f644feec348ea0b5e688",
      "parents": [
        "b0ae6949d6954dbbf9df74eed582ca87c11b7bec"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Sep 10 19:54:38 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Fri Sep 11 07:13:06 2026 +0200"
      },
      "message": "compilers: add /permissive to cl/clang-cl compiler checks\n\nMatch what GNU-like compiler does, helping with c++NN std.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "b0ae6949d6954dbbf9df74eed582ca87c11b7bec",
      "tree": "5b0e945b404aa9c09c4627e9410678f90e5f1f02",
      "parents": [
        "84234e6223b9ec4b7585b6d33bdd13b9eca93049"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Sep 10 19:54:00 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Fri Sep 11 07:13:06 2026 +0200"
      },
      "message": "compilers: move -fpermissive from CPPCompiler to individual superclasses or mixins\n\nThis is indicated as a problem in comments, and it causes problem with\nrecent changes to the sanity check command lines.  Get -fpermissive\nfrom a separate method, and implement it where it was used before.\n\nFixes: #16203\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "84234e6223b9ec4b7585b6d33bdd13b9eca93049",
      "tree": "407f4633be4fa0f1e7b0bf4f35fe39d335e53b48",
      "parents": [
        "5317d5ac75f8f5247b988c25b1752346eec29276"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Thu Sep 10 22:03:11 2026 +0000"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Fri Sep 11 01:06:00 2026 +0200"
      },
      "message": "unittests: Use TestCase.fail instead of .assertTrue(False)\n\nThis gives clearer code and clearer test outputs.\n"
    },
    {
      "commit": "5317d5ac75f8f5247b988c25b1752346eec29276",
      "tree": "e167998ff690fb6abfca585b9bbef3eacfc70226",
      "parents": [
        "000020b9fdc3303353356b8638ebb67fd6e0f6eb"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 13:16:24 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "mypy: list all strict_optional\u003dFalse modules\n\nThere are roughly 70 modules that fail mypy without implicit optional,\nversus 200 that do.  mesonbuild.compilers is the only one that is uniformly\npretty bad; mesonbuild.dependencies comes close but a lot of modules\nhave only 1-2 failures.  List everything else in .mypy.ini one by one.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "000020b9fdc3303353356b8638ebb67fd6e0f6eb",
      "tree": "4e430d3f98ba01fdf8ac7e0801895303b14efd11",
      "parents": [
        "8b264e8772078487b4f406a6e1908d3c7f65dc24"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 10:57:19 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "envconfig: do not leave cpu_family/cpu as None\n\nThey can be returned by the interpreter\u0027s machine objects.\nDetected by mypy strict optional.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "8b264e8772078487b4f406a6e1908d3c7f65dc24",
      "tree": "6a312d81411c85fe9845e7ba23f76c5878170266",
      "parents": [
        "ad5e4d9229e239668de7371b997e89b0a2b15d17"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 11:11:51 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "interpreterbase: make messages not None\n\nThe message is only checked for truthyness, therefore an empty string\nworks just as well.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "ad5e4d9229e239668de7371b997e89b0a2b15d17",
      "tree": "58f94ce58313960a199df667aad44feeed64c19f",
      "parents": [
        "1295931e354df887967a830620040773df3a26d9"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 11:11:21 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "interpreter: fix trivial strict_optional issues\n\nMissing None annotations, or known cases in which the value is not None.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "1295931e354df887967a830620040773df3a26d9",
      "tree": "4090e5144c758f11fa301327c4e52d6fc85e3fc8",
      "parents": [
        "c05c5150f6d93f8175146d3f7a638d90228860a7"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 11:09:40 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "interpreterbase, interpreter: methods can return None\n"
    },
    {
      "commit": "c05c5150f6d93f8175146d3f7a638d90228860a7",
      "tree": "3a68c7676f646de42eb89eea0847166d8f15d139",
      "parents": [
        "b3ec748ded95cf0bbba8b95cd35345ea13221c1f"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 10:37:13 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "interpreterbase: operators do not reach get_callee_args\n\nThis simplifies the function and makes args/kwargs non-optional in the\nreturn type.\n\nWhile at it, remove a dead None check.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "b3ec748ded95cf0bbba8b95cd35345ea13221c1f",
      "tree": "ffe9b1d556e3e3dd972b90834533fa4882d25bea",
      "parents": [
        "9f0008315b29024c961c411f86e9ac26183b7b0a"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Jun 23 21:00:55 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "interpreter: simplify and export env validator/convertor\n\nmypy is now able to deal with extra optional arguments.\nAlso export env_validator instead of fishing it out of ENV_KW.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "9f0008315b29024c961c411f86e9ac26183b7b0a",
      "tree": "00d55e0ea64cb132dcba16d97cf08b56f58b92ff",
      "parents": [
        "62e95b8d3c84e776e309ee78379301ab7fe3a199"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Jun 23 20:17:23 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "fix random strict_optional issues\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "62e95b8d3c84e776e309ee78379301ab7fe3a199",
      "tree": "d47f3b7868134b96a9579d34afac74c0923e0d3c",
      "parents": [
        "a99ea9781f30f1dc0738c4d6260ee12029e20b96"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Jun 23 20:11:59 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "modules: fix easy strict optional issues\n"
    },
    {
      "commit": "a99ea9781f30f1dc0738c4d6260ee12029e20b96",
      "tree": "e4cb3c6a8652bde6f6aecfa37ac5b05c230994be",
      "parents": [
        "904bfd222cf7c2cccf98d2b9bd3d51b3b2c2a71d"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Jun 23 20:11:49 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "linkers: fix strict optional errors\n"
    },
    {
      "commit": "904bfd222cf7c2cccf98d2b9bd3d51b3b2c2a71d",
      "tree": "715f0283495f49028b1a7c98f32642efe5a7f905",
      "parents": [
        "be6575c1a0557bb246ec5edf2f2c92e383a6680e"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Jun 23 19:51:56 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "modules: external_project: fix InstallDir creation\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "be6575c1a0557bb246ec5edf2f2c92e383a6680e",
      "tree": "9d4309dc252922b49de452d9c47f02d7c92ea495",
      "parents": [
        "443970004df71e1686c5b2e288340b9675100b3f"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Jun 23 19:48:19 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 19:28:22 2026 +0200"
      },
      "message": "scripts: fix easy strict_optional errors\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "443970004df71e1686c5b2e288340b9675100b3f",
      "tree": "69199deb2c6f6d71146962fee4dd5fd39b08406b",
      "parents": [
        "ca33cdbce59cab69c8d1e468ab464be707fb1e99"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Fri Sep 04 16:33:53 2026 +0000"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 10:38:19 2026 +0200"
      },
      "message": "unittests: Replace use of `from X import *` with explicit imports\n\n`*` imports that do not also make use of `__all__` are dangerous, they\nallow things to leak in that weren\u0027t inteded. An example of this is that\nwe use `unittest` from the `*` import in several places. This not only\nmakes the code cleaner, but helps analysis tools like mypy and flake8 to\ngenerate better warnings.\n"
    },
    {
      "commit": "ca33cdbce59cab69c8d1e468ab464be707fb1e99",
      "tree": "1119061d1067084e6159223cb23c0299db1f8fb1",
      "parents": [
        "73a36944362e89dfdb82db89c29537e29c800bf8"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Sep 04 10:44:11 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 10:35:37 2026 +0200"
      },
      "message": "cargo: add tests for nested workspaces\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "73a36944362e89dfdb82db89c29537e29c800bf8",
      "tree": "91d749773ddf04858727383f7221b522833e2276",
      "parents": [
        "7804d03a88841c3afb701b48312ad38cba71da23"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Sep 04 10:37:25 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 10:35:37 2026 +0200"
      },
      "message": "cargo: implement workspace.exclude\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "7804d03a88841c3afb701b48312ad38cba71da23",
      "tree": "c547548260679df6d176a7a7c482a8a27373e8fb",
      "parents": [
        "c509192185e644ff188fa801b7ac4b667bbdbc59"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Sep 04 16:41:39 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 10:35:37 2026 +0200"
      },
      "message": "cargo: list \u0027.\u0027 explicitly in ws.members\n\nMake things more explicit; CargoInterpreter creates a Workspace with\nmembers\u003d\u0027.\u0027 for a bare Manifest, but when [workspace] is found \u0027.\u0027 is\nnot added for the root package.\n\nThis fixes rust.workspace(extra_members: [\u0027.\u0027]), which works for a\nnon-workspace Cargo.toml, for a workspace with a root package.\n"
    },
    {
      "commit": "c509192185e644ff188fa801b7ac4b667bbdbc59",
      "tree": "68e4d8233f40311b5984ba4858ad8713b253424d",
      "parents": [
        "7b449063851dab78ee6db033aff00e486ab32e68"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Sep 04 11:13:12 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 10:35:37 2026 +0200"
      },
      "message": "cargo: replace assertion on nested workspaces with MesonException\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "7b449063851dab78ee6db033aff00e486ab32e68",
      "tree": "e298b062193d6ea1224707d2c0233861d181c5a6",
      "parents": [
        "00f1a2d197f3a16839b3c39d9324e9781a04a18a"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Sep 04 10:40:48 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 10:35:37 2026 +0200"
      },
      "message": "cargo: detect missing package and raise MesonException\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "00f1a2d197f3a16839b3c39d9324e9781a04a18a",
      "tree": "bd4c2c4a3dd7b69fdaf44853361dda2f61021726",
      "parents": [
        "b8d0ce196d4bf8e8e8a4b87768f802529d45a321"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 13:14:57 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "mypy: enable warn_unreachable\n\nThis is important in order to detect missing None annotations.\n"
    },
    {
      "commit": "b8d0ce196d4bf8e8e8a4b87768f802529d45a321",
      "tree": "23126620ba350fcc542a4fe4ef17120dafdee0df",
      "parents": [
        "a5089f2cb65567d9191f8681b8c17d82a95f489b"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:33:52 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "minit, templates: add missing None annotations\n"
    },
    {
      "commit": "a5089f2cb65567d9191f8681b8c17d82a95f489b",
      "tree": "9a4cef3fb9dc30bf453c61679584376df8be6897",
      "parents": [
        "81c998f7d78fbbd93fc5d8d1edd5caba64de7130"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:30:58 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "adjust incorrect None checks for mypy strict_optional\n\nRemove them, or convert isinstance checks to \"is not None\".\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "81c998f7d78fbbd93fc5d8d1edd5caba64de7130",
      "tree": "f4ffd6217f61336d6c11b3ccf36a3bdd079229c3",
      "parents": [
        "11b0e79dca0df28c631287eb5e20456eed5fefcd"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 14:31:25 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "hotdoc: move None check to caller of set_arg_value\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "11b0e79dca0df28c631287eb5e20456eed5fefcd",
      "tree": "62aa3fce08b8b64a46f83b835ee10c1b714dc5c0",
      "parents": [
        "394fe96890a822ad71281a1a2ad9156e6e37eb9d"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:24:27 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "add None to actually optional values\n"
    },
    {
      "commit": "394fe96890a822ad71281a1a2ad9156e6e37eb9d",
      "tree": "775d318c456f7432ef4b651070c9fe1ec485ab5c",
      "parents": [
        "3959dc9e8ed856eacb074baa7cc7f55bf453fcab"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 11:59:56 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "interpreter: add None to defaulted elements\n\nThere are probably a lot more, these were found via mypy strict-optional\nor warn-unreachable checks.\n"
    },
    {
      "commit": "3959dc9e8ed856eacb074baa7cc7f55bf453fcab",
      "tree": "1ad45210bbca374e22cf2456ffe4b107a42fe794",
      "parents": [
        "77befa9bc8923941b0014045c76f2a87de77a828"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 11:45:51 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "mparser: fix strict_optional issue\n\nThis allows reporting as dead code any checks for None in the interpreter.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "77befa9bc8923941b0014045c76f2a87de77a828",
      "tree": "b38661ccb8d752483712eeaee4d47d05e853d1f0",
      "parents": [
        "b4dcd40e213c19adc3d2267da72ea9db4bfa4c29"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 13:02:38 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "mtest: add _wait_for_exit\n\nThis has also the side effect that \"p.returncode is not None\" is not seen\nby mypy as a restriction on the type, and therefore it does not cause\nsubsequent warn_unreachable errors.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "b4dcd40e213c19adc3d2267da72ea9db4bfa4c29",
      "tree": "842eeb6c0a3899c2a16745de9626d12f1d0e55d0",
      "parents": [
        "a3471c754d88683111559dc73e8d3447d3cfc02c"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 13:12:10 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "mesonlib: split implementation of windows_detect_native_arch\n\nAvoid a mypy warn-unreachable report.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "a3471c754d88683111559dc73e8d3447d3cfc02c",
      "tree": "329038e576a4c62fa39fbe139034a2490105167c",
      "parents": [
        "3dc8ba1a4d0471f3e87d1b61307bcc3231ac909c"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:38:28 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "compiler: do not use lambda for convertor\n\nmypy does not infer the type of the argument correctly and is confused\nwhen --warn-unreachable is enabled.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "3dc8ba1a4d0471f3e87d1b61307bcc3231ac909c",
      "tree": "25490b81a82e1a80491077388967011c16398218",
      "parents": [
        "65dc6de6e7b0332ad55909867e3690edccb0ea88"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 11:40:31 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "options: add missing None return value\n"
    },
    {
      "commit": "65dc6de6e7b0332ad55909867e3690edccb0ea88",
      "tree": "fa1bd6845f708b3d37303411a5553c6e794553c3",
      "parents": [
        "67a69588401effe656ccd2772e3f18cce2ecd3ab"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Jun 23 19:40:41 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "templates: add missing check for None\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "67a69588401effe656ccd2772e3f18cce2ecd3ab",
      "tree": "faa9c8580b93963619e2fd262b67641f668a2bea",
      "parents": [
        "c5ff783d72b71260f2a01edac8019b6a62e3fa77"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 11:54:47 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "interpreterbase: fix incorrect validator type\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "c5ff783d72b71260f2a01edac8019b6a62e3fa77",
      "tree": "676ae656d5dedf52cb3feabd046cde13fd71023f",
      "parents": [
        "dea2d31b919f99073423ee9d2e4d20f65eac27ba"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:31:41 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "fix incorrect annotations\n"
    },
    {
      "commit": "dea2d31b919f99073423ee9d2e4d20f65eac27ba",
      "tree": "44c15992ee5f40f9ed9b7ec1c215d66ff6b83623",
      "parents": [
        "143c62de60d81e8aaa71106a1025d9728dc6f2f1"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:31:28 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "xcodebackend: remove dead code\n"
    },
    {
      "commit": "143c62de60d81e8aaa71106a1025d9728dc6f2f1",
      "tree": "2f3f4024bd9a65581e97efef7926f37f1d76f222",
      "parents": [
        "9805e7a65d49d489e6ac79be97a0145d60de8e22"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:29:58 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "remove or assertify dead isinstance checks\n"
    },
    {
      "commit": "9805e7a65d49d489e6ac79be97a0145d60de8e22",
      "tree": "59a883915f6372883af64f50113e3f1bc43b0974",
      "parents": [
        "febaafac675dabbca164dfacef4e84d9d2ac7879"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:28:46 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "remove dead (de)listification code\n"
    },
    {
      "commit": "febaafac675dabbca164dfacef4e84d9d2ac7879",
      "tree": "a898b0cd6bba43f9121ce0553dcdfe219978d905",
      "parents": [
        "bf1acf949d1f7ee43908cd37deaa0b8f5d9236a5"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 14:03:31 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "rewriter: generify MTypeList\n\nRemove Any and explicitly note that new_node can take a single element.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "bf1acf949d1f7ee43908cd37deaa0b8f5d9236a5",
      "tree": "192fe2a11304787ee730a7e57a44647218ee35b9",
      "parents": [
        "7ba1e8087d7843ce61d2e7160d62195bed43e0f8"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 12:57:43 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "ast/introspection: add more TYPE_nvar/TYPE_nkwargs casts\n\nDetected by --warn-unreachable.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "7ba1e8087d7843ce61d2e7160d62195bed43e0f8",
      "tree": "3987a1d9275e7b26243e3a700262b30014f896ea",
      "parents": [
        "217224064f66592c4697c7be24b24f217b3ee2df"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Aug 27 11:07:16 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "build: pass list to _extract_link_*\n\nThis will help with resolving BothLibraries recursively.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "217224064f66592c4697c7be24b24f217b3ee2df",
      "tree": "303853746cb25c10575e5d2d86a55a563d1cf7f0",
      "parents": [
        "ef8a5cd3031b6b7b5cf69489e90a027927c048e7"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Aug 27 10:23:24 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "build, interpreter: catch Jars being linked into a non-Java target\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "ef8a5cd3031b6b7b5cf69489e90a027927c048e7",
      "tree": "1cbfd470c9869ad17edc1b2c0ac7ac5efd526d50",
      "parents": [
        "6748f656560488c7964aef99622bf51824b44b07"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Mon Jun 15 22:09:51 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "vs2010backend: replace AnyTargetType with classes\n\n... where CustomTargetIndexes or even CustomTargets are not possible.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "6748f656560488c7964aef99622bf51824b44b07",
      "tree": "b0968ed348334212babc214cf3a7dc6e1875e9eb",
      "parents": [
        "0b29b16f8a5276d5c5ecb24600afb7fa122c8f86"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Aug 27 09:47:45 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "backends: remove dead CustomTargetIndex case\n"
    },
    {
      "commit": "0b29b16f8a5276d5c5ecb24600afb7fa122c8f86",
      "tree": "8fc251ce260b2b445504a1f1fd9d9eaeba2a529f",
      "parents": [
        "c2b34a6b529feb1930c40d1fd983f307f2470e1a"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Aug 26 14:58:01 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "interpreter: fix type of RunTarget.depends\n\nIt cannot include GeneratedList, but it can include other RunTargets.\nWhile not allowed by the front-end, it is allowed by the RunTarget\nclass and used by modules.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "c2b34a6b529feb1930c40d1fd983f307f2470e1a",
      "tree": "dd7b2ed1d581b3d77b3e1535126f35bbe261797e",
      "parents": [
        "d0c4695c5c8f050700049e3edd1f452179f500d6"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Aug 26 12:26:13 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "build: commonize the tail of flatten_command\n\nAfter the previous change, the only change made to the\ncommand is the resolution of LocalPrograms, which in turn\nis necessary to properly add their underlying Files to\ndepend_files or dependencies.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "d0c4695c5c8f050700049e3edd1f452179f500d6",
      "tree": "61717c53f6eda7af9c3e28ca6ff6b8831920889b",
      "parents": [
        "3d2c7a3d1820c0a1faef26875f8fad4651818f1b"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Aug 26 11:05:39 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "build: simplify handling of CustomTargetIndex in custom_target commands\n\nIt can be handled simply like CustomTarget in eval_custom_target_command.  This\nmeans that flatten_command does little more than collecting dependencies now.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "3d2c7a3d1820c0a1faef26875f8fad4651818f1b",
      "tree": "e76aa70faa1a3890daade9b82b8911dd07ca4a72",
      "parents": [
        "0b6dbbf90183a172edbdea5f01b47be26811f63c"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Aug 26 11:06:38 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "build: remove dead case\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "0b6dbbf90183a172edbdea5f01b47be26811f63c",
      "tree": "382bad1eb986a1eb560f1ba384618cfb85598a75",
      "parents": [
        "b0ca1a3bcc2a19a88ef8a22ecd9679031f91d900"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Aug 26 10:44:49 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 10 08:32:38 2026 +0200"
      },
      "message": "backends: remove dead case\n"
    },
    {
      "commit": "b0ca1a3bcc2a19a88ef8a22ecd9679031f91d900",
      "tree": "b25ea1e76c4220d953da202693ecb03ef3a55222",
      "parents": [
        "2266a206f3dad420d5f0b77149737bfc48d5f899"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Sep 09 18:50:34 2026 +0200"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Wed Sep 09 11:41:46 2026 -0700"
      },
      "message": "test cases: d: do not require libxml-2.0\n\nIt is not available in the Windows environments.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "2266a206f3dad420d5f0b77149737bfc48d5f899",
      "tree": "0a150596b5fa6b23a4527965ca52b21e7d194577",
      "parents": [
        "2b650f48452f5f11be9faeaded7b592a81e85705"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Sep 08 10:30:52 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 12:05:55 2026 +0200"
      },
      "message": "compilers: use get_object_suffix for TASKING\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "2b650f48452f5f11be9faeaded7b592a81e85705",
      "tree": "11c205159076894a9c34322c1c89184100165db8",
      "parents": [
        "4094f1bb212eeb46e2462b51b5aa0072a3dcaf75"
      ],
      "author": {
        "name": "Karolis Stasaitis",
        "email": "contact@carlossless.io",
        "time": "Sat Sep 05 13:54:50 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 12:05:55 2026 +0200"
      },
      "message": "compilers: add support for SDCC\n"
    },
    {
      "commit": "4094f1bb212eeb46e2462b51b5aa0072a3dcaf75",
      "tree": "3827435dafdd60e73427460a8ae1110e81421250",
      "parents": [
        "f6190271bc0332a39d920f216a2786ccda0ccc9b"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Aug 28 15:35:13 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "clike: cleanup find_library\n\nShare the duplicate assignments between the two tests.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "f6190271bc0332a39d920f216a2786ccda0ccc9b",
      "tree": "c793a406d50d9b7ff94507f97bd41370575fb8fa",
      "parents": [
        "b3c56104325fa22054b39839dc0354b68b5f6fe3"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Sat Aug 29 08:29:37 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "compilers: choose the output argument based on the compile mode\n\nMSVC-style compilers name an object file with /Fo and an executable with\n/Fe.  get_output_args() does not know which one is being produced, so it\nguessed from the file name suffix, but this is brittle and already broke\nbecause Cython linked a shared library instead of an executable.\n\nNow that there is Compiler._sanity_check_mode(), introduce\nCompiler.get_output_args_for_mode() and use them together\nto pick the right option instead of the .exe/.dll hack.\n\nNote that this raises an exception for masm.links() instead of silently\ndoing an assemble-only check.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "b3c56104325fa22054b39839dc0354b68b5f6fe3",
      "tree": "133e8c5b61b5c48180b7d0b34cdcecab2f69e7b7",
      "parents": [
        "b1ee9f1b56a3f3bd8338cf7c1cafd596d8fcce4c"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Aug 28 19:51:19 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "compilers: flip Compilers._sanity_check_mode to take into account cross compilation\n\nThis flips D\u0027s behavior to what everyone else now does.  The\nprevious default behavior to always link is now reserved for\nCsCompiler and JavaCompiler (though the latter does not use\n_sanity_check_mode() at all) via BasicLinkerIsCompilerMixin.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "b1ee9f1b56a3f3bd8338cf7c1cafd596d8fcce4c",
      "tree": "5ad41e17fac701961add78a6d432d28c06bd8c57",
      "parents": [
        "c8d93fa360bb6c50822d38715f837da33b6b6d9b"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Aug 28 19:43:28 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "compilers: rust: do compile-only sanity check when cross-compiling\n\nInstead of trying -nostartfiles, use the same strategy as almost\neveryone else and do a compile-only (--crate-type lib) check\nwhen cross-compiling.\n\nThis uses exactly the same flags for the sanity check that are used later;\n-nostartfiles, if needed, would belong either in get_linker_always_args()\nor (more likely) in a cross file.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "c8d93fa360bb6c50822d38715f837da33b6b6d9b",
      "tree": "9711095e3e81b05edb71d632e18588a125c07fb2",
      "parents": [
        "034286c42f200f515e3558e1bf1d213e3a5974f8"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Aug 28 19:13:41 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "compilers: swift, cuda: reuse common _sanity_check_compile_args\n\nAdd external compile and link args, as well as linker_always_args to\nthe sanity check.  For CUDA all external flags are now added to the\nprobe, for Swift the swift_args are.\n\nThe Swift sanity check used get_compile_only_args() to emulate what\nthe superclass does with the return value of _sanity_check_mode().\nMake Swift consistent with other compiler subclasses, taking into\naccount the exe wrapper when cross compiling.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "034286c42f200f515e3558e1bf1d213e3a5974f8",
      "tree": "78a4c6dc439225a975238686a9a6b1e171ac6361",
      "parents": [
        "85f04d5179ff97ab783cb6a7143952aea44ff908"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Aug 28 19:04:30 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "compilers: pass self.get_compile_only_args() to compile-only sanity checks\n\nThis is the remaining difference between Compiler and the Swift/CUDA\nimplementations of _sanity_check_compile_args().  Add it in the\nsuperclass to allow using the generic _sanity_check_compile_args()\neven when _sanity_check_mode() returns CompileCheckMode.COMPILE.\n\nThis also matches the last line in CLikeCompiler._get_basic_compiler_args:\n\n        cargs +\u003d self.get_compiler_args_for_mode(mode)\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "85f04d5179ff97ab783cb6a7143952aea44ff908",
      "tree": "dd1d0ba4262ecf3fae3323f1f558ae5d31b2239c",
      "parents": [
        "096e4867caf123855f5beda3b8a42e4123d5fc31"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Aug 28 18:32:43 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "compilers: pass self.get_linker_always_args() to the sanity check\n\nA final change to sanity check linker args, ensuring that the sanity\ncheck is consistent with what comes later.  It will catch a D install\nwith a missing shared phobos.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "096e4867caf123855f5beda3b8a42e4123d5fc31",
      "tree": "0cc275e1b8b4ad2e1ee85da968dc2280e1479929",
      "parents": [
        "1f575fdb1a499f8a0b74762220ff78a8bd6d4bb6"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Fri Aug 28 18:51:30 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 09:43:44 2026 +0200"
      },
      "message": "compilers: cs: drop get_linker_always_args()\n\nCsCompiler is a \"compiler is linker\" class, so it will always\ninclude get_linker_always_args() together with get_always_args().\nThere is no need to include /nologo twice, so drop\nget_linker_always_args() and leave the [] default from\nBasicLinkerIsCompilerMixin.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "1f575fdb1a499f8a0b74762220ff78a8bd6d4bb6",
      "tree": "c69ee01c2f8c0d251e9db1ec0b1207141a4c402d",
      "parents": [
        "6ba8c4d628a763981703a6949cb789bb98edfff9"
      ],
      "author": {
        "name": "André Apitzsch",
        "email": "git@apitzsch.eu",
        "time": "Mon Sep 07 23:58:33 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 08:06:55 2026 +0200"
      },
      "message": "minstall: Don\u0027t raise an exception in do_copyfile() if already existing destination is a link\n"
    },
    {
      "commit": "6ba8c4d628a763981703a6949cb789bb98edfff9",
      "tree": "32460bd523fc02f100411da9e5fe0e88a8f12c68",
      "parents": [
        "c6cbfbbf68798d00cefdef090cff6696fdd5c20d"
      ],
      "author": {
        "name": "André Apitzsch",
        "email": "git@apitzsch.eu",
        "time": "Fri Sep 04 22:45:07 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Tue Sep 08 08:06:55 2026 +0200"
      },
      "message": "minstall: Treat symlinks to directories as directories if follow_symlinks is enabled in do_copydir()\n\nFix the installation of a subdirectory that contains a symlink to a\ndirectory, when follow_symlinks is enabled.\n\nCurrently, the following error is thrown in that case:\n\n\u003e IsADirectoryError: [Errno 21] Is a directory: \u0027\u003cpath to symlink to directory\u003e\u0027\n"
    },
    {
      "commit": "c6cbfbbf68798d00cefdef090cff6696fdd5c20d",
      "tree": "574883837a7dbcb4506dbef71525b813790ebe7f",
      "parents": [
        "b4b39dee4ad539fa5a7b0ffbeace5ba17bb258aa"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Jun 24 13:03:59 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Mon Sep 07 18:48:51 2026 +0200"
      },
      "message": "cargo: apply profile to targets, via override_options\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "b4b39dee4ad539fa5a7b0ffbeace5ba17bb258aa",
      "tree": "952e36f6f3a6158a65d4368aee8089f15c95b968",
      "parents": [
        "e0fb97ab274569501f223b842b4b74ebe331f246"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Jun 24 12:43:02 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Mon Sep 07 18:48:51 2026 +0200"
      },
      "message": "cargo: parse profile section\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "e0fb97ab274569501f223b842b4b74ebe331f246",
      "tree": "14543cef300833d2fd27486e6325dbfa9517ed63",
      "parents": [
        "da1a2ffb9d8ffee710cf086663d32e4e4df1db53"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Jun 24 12:19:21 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Mon Sep 07 18:48:51 2026 +0200"
      },
      "message": "modules: rust: default rust_panic to none for tests and procedural macros\n\nThis is not supported for tests, so do it unconditionally.  For procedural\nmacros just set a default value similar to how edition is handled wrt\nthe value in Cargo.toml.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "da1a2ffb9d8ffee710cf086663d32e4e4df1db53",
      "tree": "2bfe836a93cfa7eb71eaf6f03fa1335c61372e58",
      "parents": [
        "539225f49f14333975c4956c17b0b5b59f35bc4b"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Jun 24 12:05:35 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Mon Sep 07 18:48:51 2026 +0200"
      },
      "message": "rust: add compiler options matching Cargo [profile] keys\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "539225f49f14333975c4956c17b0b5b59f35bc4b",
      "tree": "d47000e67815b5a6b3ce03d49c811b00269ae360",
      "parents": [
        "084d965d00240686d70133754e2d8c66e3d643b9"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 25 20:17:17 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Mon Sep 07 18:48:51 2026 +0200"
      },
      "message": "docs: fix typo\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "084d965d00240686d70133754e2d8c66e3d643b9",
      "tree": "ceb355c3c70d4f6252c11c49f208c5dab58bcd35",
      "parents": [
        "2848dd92c4797f2ba9b367267fff634eddd5c072"
      ],
      "author": {
        "name": "Yury Benesh",
        "email": "yurybdev@gmail.com",
        "time": "Mon Aug 31 11:07:23 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Sat Sep 05 16:45:22 2026 +0200"
      },
      "message": "unit test and test case for d\n"
    },
    {
      "commit": "2848dd92c4797f2ba9b367267fff634eddd5c072",
      "tree": "bb2650ed8c2229b27e9023af7e109b8878b90e75",
      "parents": [
        "ac6dccc7237b50008fe20e799a7e74d77765458c"
      ],
      "author": {
        "name": "Yury Benesh",
        "email": "yurybdev@gmail.com",
        "time": "Sat Aug 29 16:27:12 2026 +0300"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Sat Sep 05 16:45:22 2026 +0200"
      },
      "message": ".so file is passed with a linker flag to ldc2\n"
    },
    {
      "commit": "ac6dccc7237b50008fe20e799a7e74d77765458c",
      "tree": "50c69a0de6116bb80c4a731e430e05ebe6fd9f25",
      "parents": [
        "305a0f410371bfd1f7e9eb7923a5b3c2f40f73b3"
      ],
      "author": {
        "name": "Yury Benesh",
        "email": "yurybdev@gmail.com",
        "time": "Sat Sep 05 09:43:28 2026 +0300"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Sat Sep 05 16:45:22 2026 +0200"
      },
      "message": "add is_lib_filename into universal\n"
    },
    {
      "commit": "305a0f410371bfd1f7e9eb7923a5b3c2f40f73b3",
      "tree": "ceded3e70b71c166f837389c3a119de497b74ed9",
      "parents": [
        "4d5484cedfd694a363377c9b4140e0fd2f84738b"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Fri Sep 04 17:01:49 2026 +0000"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Sat Sep 05 12:14:50 2026 +0200"
      },
      "message": "unittests: fix tests that don\u0027t actually test what they meant to\n\nAlso add subtests to help with nested failures\n\nWhen unittest.assertRaises is used, the checking must be outside of the\ncontext manager, i.e.:\n\n```python\nwith self.assertRaises(RuntimeError) as cm:\n    func()\nself.assertEqual(str(cm.exception), \u0027An error!\u0027)\n```\n"
    },
    {
      "commit": "4d5484cedfd694a363377c9b4140e0fd2f84738b",
      "tree": "08292d11bb006c69c6e5b85c919c8639914faa2b",
      "parents": [
        "673e5fe5e7d18256908dbd575f54c3f087117751"
      ],
      "author": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Fri Sep 04 18:39:14 2026 +0000"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Fri Sep 04 21:35:11 2026 +0200"
      },
      "message": "backends/vs: fix potential infinite loop\n\nWe would just run a loop of `x \u003d y while x exists { x \u003d f\u0027{y}0\u0027 }`\nwhich... means if `f\u0027{y}0` exists we\u0027ll loop forever.\n"
    },
    {
      "commit": "673e5fe5e7d18256908dbd575f54c3f087117751",
      "tree": "31170d10920c66bca19326f6d9417107983355f4",
      "parents": [
        "8b19ea0c09c6bb49009d694c6029f3c300c8afc8"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Sep 03 15:03:05 2026 +0200"
      },
      "committer": {
        "name": "Dylan Baker",
        "email": "dylan@pnwbakers.com",
        "time": "Thu Sep 03 09:14:12 2026 -0700"
      },
      "message": "remove dead dedup1_suffixes override\n\nThe definitions in CLikeCompilerArgs and CompilerArgs are the same,\ndrop the one in the subclass.\n"
    },
    {
      "commit": "8b19ea0c09c6bb49009d694c6029f3c300c8afc8",
      "tree": "47b4d835120c20a96b2b3b92efcb8e8f3dc3fa3b",
      "parents": [
        "eee4e18c913408d2b7138b08da6086c68221082e"
      ],
      "author": {
        "name": "L. E. Segovia",
        "email": "amy@centricular.com",
        "time": "Thu Aug 27 23:50:28 2026 -0300"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 15:34:52 2026 +0200"
      },
      "message": "cmake/traceparser: Add missing handling for BYPRODUCTS\n\nFixes the CMake module missing the output of libjxl\u0027s `tool_version_git` (because it\u0027s generated by an execute_process, and not by the target itself).\n"
    },
    {
      "commit": "eee4e18c913408d2b7138b08da6086c68221082e",
      "tree": "136056e5438bc7abd0dc7178c21ee1a92854e8bc",
      "parents": [
        "74a26d31716440fd695ea5a0c17e31a8bb7fc895"
      ],
      "author": {
        "name": "L. E. Segovia",
        "email": "amy@centricular.com",
        "time": "Thu Aug 27 23:03:03 2026 -0300"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 15:34:52 2026 +0200"
      },
      "message": "ninjabackend: fix TOCTOU in deciding custom response file on Nasm\n\nThe length calculation and threshold checks depend on self.elems being completely populated (specifically by ARGS), which is pointless *after* the check is performed.\n"
    },
    {
      "commit": "74a26d31716440fd695ea5a0c17e31a8bb7fc895",
      "tree": "6451bbbd7a888349271d8f4ba3f0b23a42dc96de",
      "parents": [
        "b28cd2132d860b308ac84353f7eb852b481795c0"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Sep 03 14:12:00 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 15:34:52 2026 +0200"
      },
      "message": "ninjabackend: change NinjaBuildElement.elems to a dictionary\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "b28cd2132d860b308ac84353f7eb852b481795c0",
      "tree": "840593aa63f3ca56a342a193bab6f0f324418c7b",
      "parents": [
        "8e4e33dfbfab07a09bf3d930366ff39adae7fb5e"
      ],
      "author": {
        "name": "L. E. Segovia",
        "email": "amy@centricular.com",
        "time": "Thu Aug 27 20:30:00 2026 -0300"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 15:34:52 2026 +0200"
      },
      "message": "ninjabackend: properly define rule as a late property\n\nLater error checking test `if self.rule`, which won\u0027t work if rule is unset to begin with.\n"
    },
    {
      "commit": "8e4e33dfbfab07a09bf3d930366ff39adae7fb5e",
      "tree": "63cd3b418ffa9e2ced8e085b60d68e630da9792a",
      "parents": [
        "03076aa8e7d9f2d327970a2a47bc077d8d10be2f"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 17:06:52 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: make types closer to the truth\n\nreduce_arguments and flatten_args operate on values that are TYPE_var\n| mparser.BaseNode | some other types, but this is hidden behind Any.\nIntroduce TYPE_ivar and TYPE_ikwargs to make the representation a bit\ncloser to the truth, even if the non-genericness of ArrayHolder and\nDictHolder, and possibly of interpreterbase/ in general, requires\nthe introduction of casts.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "03076aa8e7d9f2d327970a2a47bc077d8d10be2f",
      "tree": "dcaae221ac81782f256e72922b88259ae6ce6ce5",
      "parents": [
        "f7647891dc7c7f723c55c03bd55379a0b00dcbab"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Sep 03 10:36:02 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: validate types of operator operands\n\nCheck before applying Python operators.  This ensures that the proper\nexception is raised instead of TypeError, and prevents mypy from\ncomplaining when Any is removed.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "f7647891dc7c7f723c55c03bd55379a0b00dcbab",
      "tree": "0d04e83946d080d0695dbb9a33cd938ce9d7933a",
      "parents": [
        "f35664e47f64f8202654d812801cc0b920a6f3c1"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Aug 18 11:47:29 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "rewriter: give more precise type to old_src_list\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "f35664e47f64f8202654d812801cc0b920a6f3c1",
      "tree": "bcaf6a20d77782f111f9f0a3ea80d660d5d2bbb7",
      "parents": [
        "c4ffbb1e159c7bfb2877c02e3b18f7c408826f35"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 17:07:38 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "rewriter: give precise type to potential_deps\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "c4ffbb1e159c7bfb2877c02e3b18f7c408826f35",
      "tree": "aca89310c8e9d93a0288ec912b04afc5dabbbd2a",
      "parents": [
        "d2678f1cfad199e515dc339df2afc81d850fc7cf"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 16:13:56 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: make node_to_runtime_value() more precise for dicts\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "d2678f1cfad199e515dc339df2afc81d850fc7cf",
      "tree": "52b556a7a11a4318c903f2abe0394065fd6e2e62",
      "parents": [
        "48c5f14d99dd41a1982b40c35afe3eee623d9d28"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 15:56:35 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: do short circuit evaluation\n\nThe return value of \"and\" and \"or\" might be known even if one of the\noperands is unknown.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "48c5f14d99dd41a1982b40c35afe3eee623d9d28",
      "tree": "09cdfcb44337349fefb7af301ab8d87585319714",
      "parents": [
        "879e644bb35d74d7c1377e02ca2896973faf35c4"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Tue Aug 18 11:32:01 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter, rewriter: make flatten_args() recursive\n\nThis also enables using it instead of flatten().\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "879e644bb35d74d7c1377e02ca2896973faf35c4",
      "tree": "d85c9b0824bd46f61107ad27045077f7f90da382",
      "parents": [
        "98d4098809577be60ae409f61c1f9581a509f4cb"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Sat Jul 25 07:48:00 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: pass more values through flatten_args\n\nIntrospection* objects and dictionaries can be handled without doing anything.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "98d4098809577be60ae409f61c1f9581a509f4cb",
      "tree": "d2ad1868b567a546b276a7b77e792856cd5f0860",
      "parents": [
        "ccd1739737590e4a7ecf9a7baeb9c22f8c9d06f2"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 16:16:15 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: call out cases in which Any is needed by flatten_args\n\nThe return type of flatten_args can actually be described more precisely\nthan T.Any, but in some cases it is used to operate on variables\ndescribed as T.List[TYPE_var] specifically and erroneously (because\nthey can be Unknownvalue, etc.).  Call those out specifically.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "ccd1739737590e4a7ecf9a7baeb9c22f8c9d06f2",
      "tree": "3b10af21ad7d58406bfdafbacd639500111d82e5",
      "parents": [
        "7c68caf7995a04ddba569b068a4b7facf51a4272"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 15:49:02 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: simplify flatten_args\n\nRemove unused argument as well as the non-list case.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "7c68caf7995a04ddba569b068a4b7facf51a4272",
      "tree": "cb4ac58f5c175faa3c8f1788f66905d3513c4706",
      "parents": [
        "039860467fb4f79181bf391db1d131a4a6ac5e38"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 15:06:49 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "interpreter: use TYPE_var and TYPE_kwargs, not nvar/nkwargs\n\nFollow what is specified by TYPE_method_func.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "039860467fb4f79181bf391db1d131a4a6ac5e38",
      "tree": "ea0269bb35c74e0ae91b9f81f5064f6ede82450f",
      "parents": [
        "0e5d1e0f0314c23f39af9f19d9cb692c94fe91ee"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 15:09:16 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "ast/interpreter: remove dead conditional\n\nWhile the typing annotations in ast/interpreter.py are a mess, the calls\nto reduce_arguments() are all from evaluate_* functions.  These have no\nusage of Any or casts that could obscure the type of the argument, so there\nis no way that the args argument is a list instead of an ArgumentNode.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "0e5d1e0f0314c23f39af9f19d9cb692c94fe91ee",
      "tree": "8b45eaed22eec358d617f0025598565a239ed511",
      "parents": [
        "d8eb8662d2c757c2df8166a96084105e5564f236"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 15:13:05 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "mparser: remove unnecessary asserts\n\nThese are now guaranteed by typing annotations.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "d8eb8662d2c757c2df8166a96084105e5564f236",
      "tree": "f2f2df17f4618a6e1e0d18068e8209fcb4a0f710",
      "parents": [
        "a94ed3e261391d59fca9099199c610d7cd512b34"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jun 18 15:05:02 2026 +0200"
      },
      "committer": {
        "name": "Paolo Bonzini",
        "email": "bonzini@gnu.org",
        "time": "Thu Sep 03 14:06:54 2026 +0200"
      },
      "message": "interpreterbase, modules: remove dead field\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    }
  ],
  "next": "a94ed3e261391d59fca9099199c610d7cd512b34"
}
