)]}'
{
  "log": [
    {
      "commit": "e24eecf97b0c9a6dbac67191098204dc8a190aaa",
      "tree": "32722a837e7cadb6442897ee34f853feb5c29a5a",
      "parents": [
        "7ae610927cd744e9fe8a8d661a2a71d8fb297faf",
        "c49c5600a4403b070c99ea6806a3d1fe9d08e123"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Wed Sep 02 04:25:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 04:25:27 2026 +0000"
      },
      "message": "Merge pull request #2348 from ehuss/fix-more-comments\n\nFix nested block comment grammar\n"
    },
    {
      "commit": "c49c5600a4403b070c99ea6806a3d1fe9d08e123",
      "tree": "32722a837e7cadb6442897ee34f853feb5c29a5a",
      "parents": [
        "6cdb81d7c9cc18fea6628e189acfb83cc36f3d1c"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Sep 01 20:29:49 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Wed Sep 02 02:52:38 2026 +0000"
      },
      "message": "Remove unreachable alternative in `OUTER_BLOCK_DOC`\n\nThe only way to match the `NESTED_BLOCK_DOC_COMMENT` rule is for the\nstring to start with `/`, but we\u0027ve already ruled that out with a\nnegative lookahead, making this alternative dead.  Let\u0027s remove it.\n"
    },
    {
      "commit": "6cdb81d7c9cc18fea6628e189acfb83cc36f3d1c",
      "tree": "ac3a135ad7140111a5222f3bf643a708c3a08dd1",
      "parents": [
        "1ca96671f17201b3f2fd4d81d4eddab414d6f8ea"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Sep 01 20:28:47 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Wed Sep 02 02:51:35 2026 +0000"
      },
      "message": "Add test cases for deeper nesting and inner doc CRs\n\nBefore the fix in this branch, our grammar disagreed with rustc on\ncomments nested three layers deep.  Let\u0027s add tests for that and for\nan inner block doc variant of the CR-starting case.\n"
    },
    {
      "commit": "1ca96671f17201b3f2fd4d81d4eddab414d6f8ea",
      "tree": "458cdc85b3b1b4ce0892dc858469d3229ee1658f",
      "parents": [
        "231f77165d94c827408d2840c0a96233dcd2e574"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Sep 01 20:27:57 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Wed Sep 02 02:45:00 2026 +0000"
      },
      "message": "Fix spacing in `NESTED_BLOCK_DOC_COMMENT` rule\n\nIn the grammar rules, we put spaces between parentheses and what comes\ninside; let\u0027s do that here.\n"
    },
    {
      "commit": "231f77165d94c827408d2840c0a96233dcd2e574",
      "tree": "9fc260958c6c4db54dfc84769c750d8cf38f2048",
      "parents": [
        "0078db3f45a9748b60f184d59f29a327174efade"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:49:56 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:49:56 2026 -0700"
      },
      "message": "Also include the hard-coded test cases for grammar check\n\nThis includes the tests from the `cases` module. Eventually this should\nbe changed in some way. Either these tests should be moved to\nrust-lang/rust, or there should be separate files that contain the\ntests. For now it doesn\u0027t hurt to run some of these that don\u0027t show up\nin either the permutation or the rust-lang/rust tests.\n"
    },
    {
      "commit": "0078db3f45a9748b60f184d59f29a327174efade",
      "tree": "ae09ba2ecfb8508a5e4225c976f99c9d7980fb28",
      "parents": [
        "54298a58f6db5c78c8ddf526a6be610e04161b33"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:47:03 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:47:36 2026 -0700"
      },
      "message": "Fix nested comments with respect to carriage returns\n\nThis fixes some issues with nested block comments when they contain\ncarriage returns.\n\nThe old logic was that a block comment could contain nested block\ncomments of the form of either regular block comments or doc-block\ncomments. This wasn\u0027t correct, though, because when inter-mixing regular\nblock comments and doc-block comments, the rules are different with\nrespect to things like carriage returns. However, in reality, when rustc\nencounters a regular block comment, it just eats everything that looks\nblock-like without any validation. And conversely, for a doc-block\ncomment, it requires that everything inside does not contain a carriage\nreturn, even if it is a nested regular block comment.\n\nThe logic for how nested comments are handled is at\nhttps://github.com/rust-lang/rust/blob/a4330234a776684c36428d001721d0320d24dd77/compiler/rustc_lexer/src/lib.rs#L783-L815.\n"
    },
    {
      "commit": "54298a58f6db5c78c8ddf526a6be610e04161b33",
      "tree": "2ad1bbaca854873b03b05906a4fcda17df20b531",
      "parents": [
        "1c79291c5979e5e5dd234e3e79088d24ab769129"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:42:12 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:47:36 2026 -0700"
      },
      "message": "Revert BLOCK_COMMENT change for shebang support\n\nThis reverts https://github.com/rust-lang/reference/commit/5b328bcf7e5e56c5cd3c660655348c2d85dea5cf\nwhich is no longer needed due to https://github.com/rust-lang/reference/pull/2331\nchanging shebang to use its own dedicated comment rule.\n"
    },
    {
      "commit": "1c79291c5979e5e5dd234e3e79088d24ab769129",
      "tree": "fdbffefc35a8b6d1685f593e0fcf426c75fc712d",
      "parents": [
        "721395442167d284fbdf4c993f21cf7ce1e51e52"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:38:28 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:47:36 2026 -0700"
      },
      "message": "Add separate BLOCK_CHAR and DOC_BLOCK_CHAR productions\n\nThis adds a BLOCK_CHAR rule so that both block comments and doc-block\ncomments match each other. This is just done for aesthetics.\n"
    },
    {
      "commit": "721395442167d284fbdf4c993f21cf7ce1e51e52",
      "tree": "297575586aa304012e4a5e2ddb480f4803729fc7",
      "parents": [
        "a2f45cf4845f769ca1155c09ac86e60c24551130"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:10:44 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:47:36 2026 -0700"
      },
      "message": "Add some tests for nested CR in comments\n\nThese are some problems identified in\nhttps://github.com/rust-lang/reference/issues/2333.\n"
    },
    {
      "commit": "a2f45cf4845f769ca1155c09ac86e60c24551130",
      "tree": "0604a39983a1bb223c1dea06ddadaff4aa1b0e89",
      "parents": [
        "4771618573f233d04ff9d30964565cf27a095b61"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:10:12 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:47:36 2026 -0700"
      },
      "message": "Make it easier to see CR output in test errors\n\nWhen the grammar check fails, it prints the input on the screen.\nHowever, when there are embedded CRs, it disrupts the output. This\nreplaces it with the Unicode character for CR Symbol.\n"
    },
    {
      "commit": "4771618573f233d04ff9d30964565cf27a095b61",
      "tree": "c1466b5581a1d76e3e08b593c02f8669c3d57d45",
      "parents": [
        "7ae610927cd744e9fe8a8d661a2a71d8fb297faf"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 11:35:29 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 12:47:36 2026 -0700"
      },
      "message": "Add some test cases\n\nThese were identified by matheww in\nhttps://github.com/rust-lang/reference/pull/2325#issuecomment-5309031418\nand we should have captured them when they were fixed.\n"
    },
    {
      "commit": "7ae610927cd744e9fe8a8d661a2a71d8fb297faf",
      "tree": "7c0e1d9dd82bb9ccbecadf5e14efe104a5db62a4",
      "parents": [
        "9e185a2d5f0491b84f3f146fc3958fd0e630ed9e",
        "42163cfd888fe8e0b4a0ded1659d5eade3c9988f"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Sep 01 19:37:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 19:37:48 2026 +0000"
      },
      "message": "Merge pull request #2336 from RalfJung/dangling\n\ndangling pointers: turn some consequences of the definition into notes\n"
    },
    {
      "commit": "42163cfd888fe8e0b4a0ded1659d5eade3c9988f",
      "tree": "e91c74617f8943abd391e3da72315b8803ab5efa",
      "parents": [
        "9ae00ff864027966a58a965bdf9f2118baafd676"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Sep 01 19:18:42 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Sep 01 19:29:42 2026 +0000"
      },
      "message": "Use an intra-doc path for the allocation link\n\nOur tooling supports link reference definitions of the form\n`core::ptr#allocation`, so let\u0027s use that.\n"
    },
    {
      "commit": "9e185a2d5f0491b84f3f146fc3958fd0e630ed9e",
      "tree": "80b1c8a4bebd17ca014987859f7813aa8470069b",
      "parents": [
        "d03701c90b2fc801b48d6b58684556eeafbc99d0",
        "a219e886bcb1c900991dda5754095e25b88715ff"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Sep 01 18:45:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 18:45:43 2026 +0000"
      },
      "message": "Merge pull request #2347 from ehuss/fix-nightly-check\n\nFix the nightly grammar validation job\n"
    },
    {
      "commit": "a219e886bcb1c900991dda5754095e25b88715ff",
      "tree": "80b1c8a4bebd17ca014987859f7813aa8470069b",
      "parents": [
        "b0f06ab260062418c59d57961320bfee79b4cf57"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 11:24:11 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 11:24:11 2026 -0700"
      },
      "message": "Include the ThreeIterator permutation checks\n\nThis adds the 3-character Token validation checks. It checks every\npermutation of characters in the range 0..\u003d0x7F for length one, two, and\nthree. This results in 4,227,328 checks which on my system takes about\n22 seconds. On CI it will be much longer, but should be tolerable on a\nnightly job.\n"
    },
    {
      "commit": "b0f06ab260062418c59d57961320bfee79b4cf57",
      "tree": "7ac5a7f1fc6224d100504ecd6be6454041ea107f",
      "parents": [
        "d03701c90b2fc801b48d6b58684556eeafbc99d0"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 11:20:54 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Sep 01 11:20:54 2026 -0700"
      },
      "message": "Fix nightly Token check\n\nThis fixes the scheduled job when it was trying the Token permutation.\nThe problem is that proc-macro2 is failing for some inputs. In\nparticular it was having problems with CR in string continuations\n(https://github.com/dtolnay/proc-macro2/issues/540).\n\nThere probably should be a better mechanism for identifying inputs that\nare known to fail and to allow them. This can be difficult with\ngenerated inputs since keeping that list up-to-date can be a challenge.\nIt would likely be best to have some automated tooling to help with\nthat.\n\nFor now, this just disables the proc-macro2 validation for generated\nToken inputs.\n"
    },
    {
      "commit": "d03701c90b2fc801b48d6b58684556eeafbc99d0",
      "tree": "edee25fa62981df0cc918ab7648c7a74cda715f1",
      "parents": [
        "3a380bc9f827e67b40b9dd6fb7dae5e12856a01f",
        "a9b6a3c4926f182638d359e3bd28b697f19f1717"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Mon Aug 31 07:43:46 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 07:43:46 2026 +0000"
      },
      "message": "Merge pull request #2346 from rust-lang/TC/sort-grammar-file-walk\n\nOrder grammar summary deterministically\n"
    },
    {
      "commit": "a9b6a3c4926f182638d359e3bd28b697f19f1717",
      "tree": "edee25fa62981df0cc918ab7648c7a74cda715f1",
      "parents": [
        "3a380bc9f827e67b40b9dd6fb7dae5e12856a01f"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 17:08:25 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Mon Aug 31 07:37:11 2026 +0000"
      },
      "message": "Order grammar summary deterministically\n\nIn `load_grammar`, we were walking files in directory-entry order.\nThis may not be the same order in two places, leading to sections and\nrules sorted in different orders in the grammar summary.  Let\u0027s sort\nby file name so as to produce deterministic results.\n"
    },
    {
      "commit": "3a380bc9f827e67b40b9dd6fb7dae5e12856a01f",
      "tree": "4262b62f769f9bf15b7d573d5d958fedd968eb9b",
      "parents": [
        "f0939b82095a8d5cfa08dfd315f16ec850cbab52",
        "e66bfc1780f911e89029946f883fc8f699a89c5f"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 17:00:36 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 17:00:36 2026 +0000"
      },
      "message": "Merge pull request #2345 from rust-lang/TC/remove-stale-textual-file\n\nRemove leftover `types/textual.md` file\n"
    },
    {
      "commit": "e66bfc1780f911e89029946f883fc8f699a89c5f",
      "tree": "4262b62f769f9bf15b7d573d5d958fedd968eb9b",
      "parents": [
        "f0939b82095a8d5cfa08dfd315f16ec850cbab52"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 15:00:33 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 16:57:32 2026 +0000"
      },
      "message": "Remove leftover `types/textual.md` file\n\nWhen we split the textual types chapter into the `char` and `str`\nchapters, we neglected to delete the old file and to repoint a\nredirect away from the old chapter.  Let\u0027s do those things.\n"
    },
    {
      "commit": "f0939b82095a8d5cfa08dfd315f16ec850cbab52",
      "tree": "7d5be92b7a4674de84879a0ec838dbd1a5f906c4",
      "parents": [
        "f4915998f9c3ab396e4532f51b911cac9322cbba",
        "2f428f7cd3bb879f056611dca6c06b9e53d60aed"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 13:37:14 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 13:37:14 2026 +0000"
      },
      "message": "Merge pull request #2344 from rust-lang/TC/fix-non-leaf-rules-with-bodies\n\nFix non-leaf rules with bodies\n"
    },
    {
      "commit": "2f428f7cd3bb879f056611dca6c06b9e53d60aed",
      "tree": "7d5be92b7a4674de84879a0ec838dbd1a5f906c4",
      "parents": [
        "19330a51e1437f23a9379339902c735093c5b296"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 11:17:01 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 13:30:47 2026 +0000"
      },
      "message": "Fix `edition2024` rule IDs in patterns chapter\n\nSome of the edition admonitions in the patterns chapter have rule\nidentifiers that mark them as subrules when they should be siblings.\nLet\u0027s fix that.\n"
    },
    {
      "commit": "19330a51e1437f23a9379339902c735093c5b296",
      "tree": "b0e145965ea21fb47836e5e093384465f1d4e716",
      "parents": [
        "2a73462dc228b4a36c5bf8ec9a35e55ebd2447d7"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 10:35:05 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 13:30:16 2026 +0000"
      },
      "message": "Make stray subrules into siblings\n\nSome rules that qualify other rules are identified as subrules rather\nthan as siblings (as they should be).  Let\u0027s fix that.\n"
    },
    {
      "commit": "2a73462dc228b4a36c5bf8ec9a35e55ebd2447d7",
      "tree": "bd0ccc3b871f3454044ac963086bb3fd685b4542",
      "parents": [
        "a772111e53420ff82024c1dcdcdfc5d9938905c5"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 10:34:28 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 13:30:16 2026 +0000"
      },
      "message": "Add rule ID for variadic function syntax\n\nWe\u0027re missing a rule identifier above the description of the syntax\nfor variadic functions.  Let\u0027s add that.\n"
    },
    {
      "commit": "a772111e53420ff82024c1dcdcdfc5d9938905c5",
      "tree": "5f6c9956d624afa9531d69fba4d8c240b79a20ba",
      "parents": [
        "9150fd2c29abe3e10f67e09d643afcd8cc0321ae"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 10:34:02 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 13:30:16 2026 +0000"
      },
      "message": "Split lint group rules\n\nWe had combined the introduction for lint groups with a specific claim\nthat using a named lint group is equivalent to listing out the lints\nwithin that group.  Let\u0027s separate out that claim into its own rule,\nand let\u0027s add a `.intro` rule for the introduction.\n"
    },
    {
      "commit": "9150fd2c29abe3e10f67e09d643afcd8cc0321ae",
      "tree": "49b04f25ec50a293d6cf377588e2d71c66ef49d1",
      "parents": [
        "d335131ed0cfe76f8a94d24445f7582cfa0c772d"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 22:41:10 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 13:30:16 2026 +0000"
      },
      "message": "Split drop-order sentence out from nesting rule\n\nWe have a set of rules that describe how drop scopes are nested.\nThere\u0027s a rule that provides a lead-in for this.  That rule also\ncontained a claim about the drop order when multiple scopes are left\nat once.  Let\u0027s break that claim out into its own rule so that we can\ncite it separately.\n"
    },
    {
      "commit": "d335131ed0cfe76f8a94d24445f7582cfa0c772d",
      "tree": "15d6f274ec359093f93539509153fcfdcaa01097",
      "parents": [
        "fad35e1a40c2bad9c20f54de5995c2867131ce2b"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 22:40:37 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 13:30:10 2026 +0000"
      },
      "message": "Fix macro textual scope shadowing link target\n\nIn name resolution, we say that one way in which names introduced by\n`use` declarations can be shadowed within a single scope is by macro\ntextual scope shadowing.  We then linked to a rule that says it\u0027s not\nan error to define a macro multiple times, but that\u0027s discussing only\ntextual-scope matters.  A `use` declaration creates a path-based scope\nbinding, so let\u0027s point instead to the rule that says that textual\nscope name bindings shadow path-based scope bindings.\n"
    },
    {
      "commit": "fad35e1a40c2bad9c20f54de5995c2867131ce2b",
      "tree": "258cfdafa5f1ba68260998373e07a4cc83a312cb",
      "parents": [
        "8bb6d4e0f26c47612d35ea439cec3cfe1e099704"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 22:40:18 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 09:05:19 2026 +0000"
      },
      "message": "Add rule ID for function-local macro declarations\n\nWe say that macros can be declared and used locally, but we were\nmissing a rule identifier for this.  Let\u0027s add one.\n"
    },
    {
      "commit": "8bb6d4e0f26c47612d35ea439cec3cfe1e099704",
      "tree": "d5f8c035eac2406be5afb3cb357e3b0c68ee19cc",
      "parents": [
        "29418627f6a537c7b206a07f72f7d060c2d186b4"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 10:31:15 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 09:04:30 2026 +0000"
      },
      "message": "Fix too-nested `items.generics.syntax` rules\n\nWe had rules under `items.generics.syntax` that should instead be its\nsiblings.  Let\u0027s promote these.\n"
    },
    {
      "commit": "29418627f6a537c7b206a07f72f7d060c2d186b4",
      "tree": "fe0b1ff20507643c46930b7b7448c6a4deb5900b",
      "parents": [
        "95081a7162313a3199b5ede7bfdc7799b0f5c52c"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 10:29:26 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 09:04:30 2026 +0000"
      },
      "message": "Move `.intro` rules to cover leading notes and examples\n\nIn some cases, the `.intro` rule fell below a leading admonition or\nexample.  This left text under a non-leaf rule, which we want to\navoid.  This leading text is logically part of the introduction, so\nlet\u0027s move the rule identifiers where needed to cover this text.\n"
    },
    {
      "commit": "95081a7162313a3199b5ede7bfdc7799b0f5c52c",
      "tree": "4abb8e01338f1a6e472ff39bcea50c800247a6db",
      "parents": [
        "f4915998f9c3ab396e4532f51b911cac9322cbba"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 10:28:40 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 09:04:30 2026 +0000"
      },
      "message": "Add `.intro` rules where missing\n\nWe want all body text to fall under a leaf rule.  We put intro text\nunder `.intro` rules, but we were missing some.  Let\u0027s add `.intro`\nrule identifiers where these were missing.\n"
    },
    {
      "commit": "f4915998f9c3ab396e4532f51b911cac9322cbba",
      "tree": "a43d3b5827d5b5b8138833ed24ca54e5a180fea0",
      "parents": [
        "41a163d07491e667a3a2c310e711803c2e0cad7b",
        "8ec0e611cebe01307c5116c72be94ac9629f3c7b"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 07:53:34 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 07:53:34 2026 +0000"
      },
      "message": "Merge pull request #2343 from rust-lang/TC/fix-rule-ids-not-following-header-hierarchy\n\nFix rule IDs not following the header hierarchy\n"
    },
    {
      "commit": "8ec0e611cebe01307c5116c72be94ac9629f3c7b",
      "tree": "a43d3b5827d5b5b8138833ed24ca54e5a180fea0",
      "parents": [
        "41a163d07491e667a3a2c310e711803c2e0cad7b"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 22:39:51 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 07:47:18 2026 +0000"
      },
      "message": "Fix rule IDs not following the header hierarchy\n\nFor rule identifiers, we follow the header hierarchy.  Where there are\nrelated rules but no header, we use a dash rather than a dot as the\nseparator.  There were some rule identifiers that used a dot instead.\nAside from consistency, this is a problem for how we cite rules in\n`rustc` tests.  We lint against citations of interior rules; misusing\ndot separation creates interior rules that still need to be cited.\n\nLet\u0027s fix these.\n"
    },
    {
      "commit": "41a163d07491e667a3a2c310e711803c2e0cad7b",
      "tree": "ccc45586bd992ba45286d736bafd250a1f49b8d4",
      "parents": [
        "360522cc6b0ebe78894e2f9982d98a8b25c7ba47",
        "1db6a846aa3f13307c155cce4ee09f7e7f40e953"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 00:25:07 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 00:25:07 2026 +0000"
      },
      "message": "Merge pull request #2342 from rust-lang/TC/fix-verbatim-modifier-heading-level\n\nFix heading level of the `verbatim` modifier section\n"
    },
    {
      "commit": "1db6a846aa3f13307c155cce4ee09f7e7f40e953",
      "tree": "ccc45586bd992ba45286d736bafd250a1f49b8d4",
      "parents": [
        "360522cc6b0ebe78894e2f9982d98a8b25c7ba47"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 00:03:52 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 30 00:15:00 2026 +0000"
      },
      "message": "Fix heading level of the `verbatim` modifier section\n\nThe section for the `verbatim` linking modifier is h3 when it should\nbe h4 (as its siblings are).  Let\u0027s fix that.\n"
    },
    {
      "commit": "360522cc6b0ebe78894e2f9982d98a8b25c7ba47",
      "tree": "2427c27f1bb6f180f6e2a2d1cce237f65f266c93",
      "parents": [
        "b7d024acc3497dfb4e7cf293cafcb39905e1e5fa",
        "32f6c0f778fbba73e267d9d61831c118a1f582cc"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 01:45:31 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 01:45:31 2026 +0000"
      },
      "message": "Merge pull request #2341 from rust-lang/TC/fix-diagnostics-deprecated-allowed-positions-rule-id\n\nFix `...diagnostics.deprecated...` rule ID\n"
    },
    {
      "commit": "32f6c0f778fbba73e267d9d61831c118a1f582cc",
      "tree": "2427c27f1bb6f180f6e2a2d1cce237f65f266c93",
      "parents": [
        "b7d024acc3497dfb4e7cf293cafcb39905e1e5fa"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 01:10:30 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 29 01:30:48 2026 +0000"
      },
      "message": "Fix `...diagnostics.deprecated...` rule ID\n\nIn rust-lang/reference#1560, in commit 4ef5f5d93607f, we\nrenamed the rule IDs in the diagnostics chapter, except\nthose for the `diagnostic` tool attribute namespace, to the\nplural form, `attributes.diagnostics.*`.  But we missed one,\n`attributes.diagnostics.deprecated.allowed-positions` (as\ncorrected).  Let\u0027s fix that.\n"
    },
    {
      "commit": "b7d024acc3497dfb4e7cf293cafcb39905e1e5fa",
      "tree": "9933aa917d32c4f38d0574a660aaa4a10feda18c",
      "parents": [
        "9bcd30c0add5a85c099bb955d7fcd8a96800c5e3",
        "852079ce0ab75e7262b4edabe72fa5ea9fcf40b7"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:45:39 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 19:45:39 2026 +0000"
      },
      "message": "Merge pull request #2283 from ehuss/stabilize-never\n\nUpdate for stabilization of the never type\n"
    },
    {
      "commit": "852079ce0ab75e7262b4edabe72fa5ea9fcf40b7",
      "tree": "9933aa917d32c4f38d0574a660aaa4a10feda18c",
      "parents": [
        "d9abf6bf072be15c2cc8bc03db1262104abf255c"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Jun 23 11:55:19 2026 -0700"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:33:13 2026 +0000"
      },
      "message": "Add a comment explaining the FromStr example\n"
    },
    {
      "commit": "d9abf6bf072be15c2cc8bc03db1262104abf255c",
      "tree": "d0d483dbea8c38f13d9e02f2d85b399dbd83a21d",
      "parents": [
        "6a6ec86df54df8b57e31c0da6907c5652bab6206"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Mon Jun 15 12:46:36 2026 -0700"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:33:13 2026 +0000"
      },
      "message": "Link to divergence in never type intro\n\nThis tries to punch up the never type intro by linking to the divergence\nchapter.\n"
    },
    {
      "commit": "6a6ec86df54df8b57e31c0da6907c5652bab6206",
      "tree": "6a8d17912eed6502bbb4d89de83e4a74accc1185",
      "parents": [
        "a513d0519ce935812774613e9aa50e446a949b53"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Mon Jun 15 12:30:35 2026 -0700"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:33:13 2026 +0000"
      },
      "message": "Remove \"other\" on never type coercion\n\nNever can coerce to itself.\n"
    },
    {
      "commit": "a513d0519ce935812774613e9aa50e446a949b53",
      "tree": "ca0cb8100ed77c853f13fb4ffd51d6a39efa2482",
      "parents": [
        "40cd49ac3e650ee4f02a87e37af976ac18288713"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Fri Jun 12 09:41:32 2026 -0700"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:33:13 2026 +0000"
      },
      "message": "Move never type example, and update for stabilization\n\nThis moves the never example to the intro to match our layout style, and\nadds an example showing a type expression using `!`.\n"
    },
    {
      "commit": "40cd49ac3e650ee4f02a87e37af976ac18288713",
      "tree": "588e1baf435805129407bca9b4529daa35ff580e",
      "parents": [
        "d9d9ed57a120e3c87033fd598f191bbb84aad097"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Fri Jun 12 09:12:49 2026 -0700"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:33:13 2026 +0000"
      },
      "message": "Move type.never.intro to the top\n\nThis moves type.never.intro to the top of the chapter to match the style\nwhere the intro should always come first in a section.\n"
    },
    {
      "commit": "d9d9ed57a120e3c87033fd598f191bbb84aad097",
      "tree": "ca9c4b310335a29ab25a94be6e292014489d6fab",
      "parents": [
        "5899ca3819ecaa453b3fb4422ef6688e97ce2b66"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Wed Apr 22 05:55:25 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:33:13 2026 +0000"
      },
      "message": "Simplify examples that worked around unstable `!`\n\nIn various places, we had worked around the never type being unstable\nwhen writing examples.  Now that it is stable, let\u0027s clean those\nexamples up.\n"
    },
    {
      "commit": "5899ca3819ecaa453b3fb4422ef6688e97ce2b66",
      "tree": "83065367942219d43dcadd2dcf110a8834e8d092",
      "parents": [
        "9bcd30c0add5a85c099bb955d7fcd8a96800c5e3"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Wed Apr 22 05:54:03 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:33:13 2026 +0000"
      },
      "message": "Document stabilization of the never type\n\nStabilizing the never type means making `!` available in all positions\nand changing the never-to-any coercion fallback type to `!` in older\neditions.  Let\u0027s make the updates needed for that.\n"
    },
    {
      "commit": "9bcd30c0add5a85c099bb955d7fcd8a96800c5e3",
      "tree": "18ab07b8b90adcd132066b67696f703301d08da7",
      "parents": [
        "a6102f99d715e9c06cf6e85f6959fea4901b7822",
        "0002ca2474baa1e51776dcc435eb14775ac90191"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 19:11:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 19:11:51 2026 +0000"
      },
      "message": "Merge pull request #2339 from Wilfred/patch-1\n\nAdd missing punctuation\n"
    },
    {
      "commit": "0002ca2474baa1e51776dcc435eb14775ac90191",
      "tree": "18ab07b8b90adcd132066b67696f703301d08da7",
      "parents": [
        "a6102f99d715e9c06cf6e85f6959fea4901b7822"
      ],
      "author": {
        "name": "Wilfred Hughes",
        "email": "me@wilfred.me.uk",
        "time": "Tue Aug 25 11:46:24 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 11:46:24 2026 +0100"
      },
      "message": "Add missing punctuation\n\nTrivial fix spotted whilst reading."
    },
    {
      "commit": "a6102f99d715e9c06cf6e85f6959fea4901b7822",
      "tree": "5b010e0851e0ee708f1d3a952f4472c2de8072de",
      "parents": [
        "3b38834b39f732c64686f7c64aa29dcf3cd83ba5",
        "30b36b59fa605536b8bb5bd7abbbff553f0c5393"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 07:52:18 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 07:52:18 2026 +0000"
      },
      "message": "Merge pull request #2018 from RalfJung/repr-c-enum\n\nfix field-less `repr(C)` enum docs\n"
    },
    {
      "commit": "30b36b59fa605536b8bb5bd7abbbff553f0c5393",
      "tree": "5b010e0851e0ee708f1d3a952f4472c2de8072de",
      "parents": [
        "835307d5d1661d139a16a11344b78b71ff7203d5"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 07:08:00 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 07:42:57 2026 +0000"
      },
      "message": "Remove parens from nonparenthetical clause\n\nIn the `items.enum.discriminant.type` rule, we had a clause in\nparentheses that isn\u0027t parenthetical, as without it, the rule would be\nwrong.  Let\u0027s remove these parentheses.\n"
    },
    {
      "commit": "835307d5d1661d139a16a11344b78b71ff7203d5",
      "tree": "bee8cf334c5dc89b7b1246bdb8de469f68f8edc6",
      "parents": [
        "3eca88fdbe4041c953e42218bf08c02f651cb8b7"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Mon Aug 24 22:14:19 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 07:42:57 2026 +0000"
      },
      "message": "Add examples for the `enum` layout rules\n\nLet\u0027s add examples for the rules about the size and alignment of\ncertain `enum`s.\n"
    },
    {
      "commit": "3eca88fdbe4041c953e42218bf08c02f651cb8b7",
      "tree": "4e13cfe8cea96d7dd77af1edf1986d0d402ddf88",
      "parents": [
        "88ca38a5e2498ebd014321be453cebd4686633b7"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Mon Aug 24 03:23:51 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 07:39:23 2026 +0000"
      },
      "message": "Add examples for the discriminant type rules\n\nLet\u0027s add examples to make clear what it means for the discriminant to\nhave a type.  This makes a \"for example\" sentence redundant, so let\u0027s\ndrop that.\n"
    },
    {
      "commit": "88ca38a5e2498ebd014321be453cebd4686633b7",
      "tree": "e90d0f22db13881ddd2e4cc0bfdf676ec707ce89",
      "parents": [
        "f5dc40c814902260982756b5faed3bd92ff627a9"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 22 14:33:44 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 06:57:24 2026 +0000"
      },
      "message": "Consolidate discriminant typing in the `enum` chapter\n\nWe had split where we were defining the type for `enum` discriminants\nbetween the enumerations chapter and the layout chapter.  Let\u0027s fully\ndefine this within the enumerations chapter.\n"
    },
    {
      "commit": "f5dc40c814902260982756b5faed3bd92ff627a9",
      "tree": "01a5ce35bfb16724f642f357052d4f4d08aa0b5f",
      "parents": [
        "f9c7e98a4b9d915a0047851a41c87450de07377a"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 22 14:32:41 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 06:57:24 2026 +0000"
      },
      "message": "Add parenthetical about C23 and fixed underlying types\n\nWe tell the reader to use a fixed underlying type in C. Let\u0027s mention\nthe revision of C in which this was introduced.\n"
    },
    {
      "commit": "f9c7e98a4b9d915a0047851a41c87450de07377a",
      "tree": "de2a34c52e4e3cc459de89bcac9392a1e7a9a2fc",
      "parents": [
        "1724ca88e9831d4cfff5b3e82e3a200465a740e7"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 22 14:31:55 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 06:57:24 2026 +0000"
      },
      "message": "Reword `enum` portability note into the imperative mood\n\nThe portability note for enumerations was in the passive voice.\nAdvice is best given in the imperative mood, so let\u0027s adjust it.\n\nWhile here, let\u0027s drop an unneeded comma.\n"
    },
    {
      "commit": "1724ca88e9831d4cfff5b3e82e3a200465a740e7",
      "tree": "91215adf37142a0af52e6e8fa764547e027d51f0",
      "parents": [
        "99ff55e01b6494590ade5674e435ab8dfb08f8bb"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 23 20:11:04 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 06:57:24 2026 +0000"
      },
      "message": "Drop inline link target in the portability note\n\nThere\u0027s already a link reference definition for \"primitive\nrepresentation\", so let\u0027s use that.\n"
    },
    {
      "commit": "99ff55e01b6494590ade5674e435ab8dfb08f8bb",
      "tree": "0fc3640498d7827cd9de76572a602f210eb661bb",
      "parents": [
        "4e4a6ab220855fa2537400483581cb03837002b0"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 22 14:31:17 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 06:57:24 2026 +0000"
      },
      "message": "Note that `rustc` accepts bad discriminant values\n\nWe\u0027re stating a rule about discriminant values here that `rustc` does\nnot enforce today other than with an FCW; let\u0027s make a note of that.\n"
    },
    {
      "commit": "4e4a6ab220855fa2537400483581cb03837002b0",
      "tree": "ea432c0876964a58f8fec651599cb3e84c390a90",
      "parents": [
        "40ca6c4804afdf95552838910857b49987b23d2e"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 22 14:30:46 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 25 06:57:24 2026 +0000"
      },
      "message": "Refactor fieldless `repr(C)` enum rules\n\nThe revised `layout.repr.c.enum` rule was doing a bit too much.  Let\u0027s\nsplit it up.\n"
    },
    {
      "commit": "40ca6c4804afdf95552838910857b49987b23d2e",
      "tree": "037aec366be91030c54c8ecbc8bc5d4f0ca661ff",
      "parents": [
        "0e004a66d04da2bf9475f1c8eaf21e7c36e96cc3"
      ],
      "author": {
        "name": "Ralf Jung",
        "email": "post@ralfj.de",
        "time": "Fri Oct 03 14:01:47 2025 +0200"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Mon Aug 24 06:55:26 2026 +0000"
      },
      "message": "emphasize that the isize values matter\n"
    },
    {
      "commit": "0e004a66d04da2bf9475f1c8eaf21e7c36e96cc3",
      "tree": "7d4a0201aa8bc76c1e49d99001129ddd79b2e2eb",
      "parents": [
        "57360f2ce1ea1a1622c8543835bc5e1eec6dcf72"
      ],
      "author": {
        "name": "Ralf Jung",
        "email": "post@ralfj.de",
        "time": "Fri Oct 03 13:43:56 2025 +0200"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Mon Aug 24 06:55:26 2026 +0000"
      },
      "message": "also allow enums where all discriminant values fit an unsigned int\n"
    },
    {
      "commit": "57360f2ce1ea1a1622c8543835bc5e1eec6dcf72",
      "tree": "ecc978ec1c8abe1b353862a316b72321eebaef28",
      "parents": [
        "3b38834b39f732c64686f7c64aa29dcf3cd83ba5"
      ],
      "author": {
        "name": "Ralf Jung",
        "email": "post@ralfj.de",
        "time": "Thu Sep 25 12:25:04 2025 +0200"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Mon Aug 24 06:55:26 2026 +0000"
      },
      "message": "fix field-less repr(C) enum docs\n"
    },
    {
      "commit": "9ae00ff864027966a58a965bdf9f2118baafd676",
      "tree": "c4cfc02d6d8a7a8e3ec864738463b983eedd838f",
      "parents": [
        "3b38834b39f732c64686f7c64aa29dcf3cd83ba5"
      ],
      "author": {
        "name": "Ralf Jung",
        "email": "post@ralfj.de",
        "time": "Sun Aug 23 23:12:12 2026 +0200"
      },
      "committer": {
        "name": "Ralf Jung",
        "email": "post@ralfj.de",
        "time": "Sun Aug 23 23:14:29 2026 +0200"
      },
      "message": "dangling pointers: turn some consequences of the definition into notes\n"
    },
    {
      "commit": "3b38834b39f732c64686f7c64aa29dcf3cd83ba5",
      "tree": "7e718551bfa35decdc18069115c23ab5343ed236",
      "parents": [
        "d39edf2fc0ebcc894e713cf9c6e68e117e786ee6",
        "853831a06e30e72ea14054e0bce14505be56e8d7"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 23:36:42 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 23:36:42 2026 +0000"
      },
      "message": "Merge pull request #2331 from rust-lang/TC/fix-shebang-grammar\n\nTolerate malformed comments in shebang lookahead\n"
    },
    {
      "commit": "853831a06e30e72ea14054e0bce14505be56e8d7",
      "tree": "7e718551bfa35decdc18069115c23ab5343ed236",
      "parents": [
        "d39edf2fc0ebcc894e713cf9c6e68e117e786ee6"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 23:07:25 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 23:24:53 2026 +0000"
      },
      "message": "Tolerate malformed comments in shebang lookahead\n\nOur `SHEBANG` rule did not accept `#!/*`, even though that\u0027s a valid\nshebang per `rustc`.  The trouble is the interaction between the\nnegative lookahead and the cut within `BLOCK_COMMENT`: the cut forces\nan immediate error even within the context of a negative lookahead.\nWe rely on that semantic elsewhere.\n\nTo fix this, let\u0027s add a `SHEBANG_BLOCK_COMMENT` rule that accepts\nwhat `rustc` does.\n"
    },
    {
      "commit": "d39edf2fc0ebcc894e713cf9c6e68e117e786ee6",
      "tree": "71f5b6c3ed5a29473b4e770e1e213662d09c2bcc",
      "parents": [
        "64c5bef03647976e3f4c0bd8705e39d4ca431325",
        "5b328bcf7e5e56c5cd3c660655348c2d85dea5cf"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 22:47:18 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 22:47:18 2026 +0000"
      },
      "message": "Merge pull request #2330 from ehuss/fix-some-lexer-grammar\n\nFix some lexer rules\n"
    },
    {
      "commit": "64c5bef03647976e3f4c0bd8705e39d4ca431325",
      "tree": "5e1f964212f016ddd4d58c54274da3896e06bcc4",
      "parents": [
        "eda708334abad285d63bc1f3558a51e8b790346e",
        "508c53c649c00fb59f6d2e5a68252884ab24e152"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 21:58:44 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 21:58:44 2026 +0000"
      },
      "message": "Merge pull request #2325 from ehuss/lexer4\n\nAdd grammar validation tool\n"
    },
    {
      "commit": "508c53c649c00fb59f6d2e5a68252884ab24e152",
      "tree": "e521fbd38fefd329afc7a0dcaa1251398b6213a8",
      "parents": [
        "1621a640c4495026155bf35a37c6f288d0f513c4"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 21:56:14 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 21:56:14 2026 +0000"
      },
      "message": "Fix typo\n"
    },
    {
      "commit": "5b328bcf7e5e56c5cd3c660655348c2d85dea5cf",
      "tree": "7ab5f2e37e57c7d17f36dd75665c1a8c03b0ddb1",
      "parents": [
        "3befb8bdf6a90f6ca5896c532e8618f7f23fddb7"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 14:55:47 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 14:55:47 2026 -0700"
      },
      "message": "Fix BLOCK_COMMENT in the context of SHEBANG\n\nThis fixes an issue with the BLOCK_COMMENT grammar as it is used within\nthe SHEBANG rule. The problem is that BLOCK_COMMENT was changed in\nhttps://github.com/rust-lang/reference/pull/2191 so that it relied on\nthe order of how the comments were handled in the COMMENT rule to avoid\nambiguity with OUTER_BLOCK_DOC. However, because SHEBANG is using the\nBLOCK_COMMENT rule directly, we need BLOCK_COMMENT to be able to stand\non its own without relying on the order in COMMENT.\n\nThis fixes an issue with shebang such as:\n\n\t#! /** doc */ [attr]\n\nHere this should be treated as a shebang (because it is a doc block\ncomment).\n\nThe solution is to do the appropriate negative lookahead to exclude\nOUTER_BLOCK_DOC and INNER_BLOCK_DOC.\n"
    },
    {
      "commit": "3befb8bdf6a90f6ca5896c532e8618f7f23fddb7",
      "tree": "2d570de3bc31cf3cf138f2ab41531d38af940aff",
      "parents": [
        "afeea28243b62936c7913ba29d5fc8cc5d607c0f"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 14:44:47 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 14:44:47 2026 -0700"
      },
      "message": "Fix the grammar for OUTER_BLOCK_DOC and bare CR\n\nThis fixes an issue where OUTER_BLOCK_DOC was allowing bare CR as the\nfirst character when it shouldn\u0027t have.\n\nThis fixes an issue with comments such as:\n\n\t$\u0027/**\\r CR starting block doc comment */\u0027\n\n(using shell escaping to illustrate newlines and carriage returns).\n\nThere the bare CR should not be allowed and should result in a parse\nerror.\n"
    },
    {
      "commit": "afeea28243b62936c7913ba29d5fc8cc5d607c0f",
      "tree": "c660cd8803129568430934944ddc1e913aff0ebc",
      "parents": [
        "eda708334abad285d63bc1f3558a51e8b790346e"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 14:42:07 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 14:42:07 2026 -0700"
      },
      "message": "Fix the grammar for string continuation\n\nString continuation includes all of the following TAB/LF/CR/SP\ncharacters immediately following the next line. This was clarified and\ndocumented in https://github.com/rust-lang/reference/pull/1042, but we\ndidn\u0027t update the grammar at the same time. This corrects that to\ninclude those spaces.\n\nThis fixes an issue with strings such as:\n\n\t$\u0027 \"string\\\\\\n\\n\\r\\tcontinuation\"\u0027\n\n(using shell escaping to illustrate newlines and carriage returns).\n\nThere the bare CR should be allowed due to this special-casing for\ncontinuations.\n"
    },
    {
      "commit": "eda708334abad285d63bc1f3558a51e8b790346e",
      "tree": "f1819e52f5b7f8da5838b32146446a88a6ac655c",
      "parents": [
        "8f8f7d618fea28700bb091182befec3d8e15e935",
        "71bc0a230d0eb23c3f45268648ec597b234bc674"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 19:47:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 19:47:06 2026 +0000"
      },
      "message": "Merge pull request #2329 from rust-lang/TC/revert-risc-def\n\nRevert \"Document RISC-V d, e, and f extensions\"\n"
    },
    {
      "commit": "71bc0a230d0eb23c3f45268648ec597b234bc674",
      "tree": "2c9ae6c2e4a8e68678382286f2204a0639c491fc",
      "parents": [
        "9df7eb8878ce5cc82d4da172e2b39e9d8d4f7f65"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 19:39:10 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 18 19:39:10 2026 +0000"
      },
      "message": "Revert \"Document RISC-V d, e, and f extensions\"\n\nThis stabilization was reverted in rust-lang/rust#161064.  Let\u0027s\nrevert the Reference changes.\n\nThis reverts commit a61431c116d6d050613a6dd6b80997f3d27e8fd2.\n"
    },
    {
      "commit": "1621a640c4495026155bf35a37c6f288d0f513c4",
      "tree": "4f44c303a2123dbd10e63f190a4f2538bcdb8976",
      "parents": [
        "a1de0dc1cda076e700f9caa64ef894613bbd1401"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 20:10:53 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:51:15 2026 -0700"
      },
      "message": "Add grammar validation tool\n\nThis adds a tool that validates the grammar by testing it against other\nparsers such as rustc and proc-macro2.\n\nThere are two new crates:\n\n- `parser` is an interpreter that takes a source input and generates a\n  tree of nodes based on the Reference grammar.\n- `grammar-check` is a CLI program for checking the grammar against\n  other parsers. It includes several different subcommands and\n  utilities.\n\nThis is not entirely complete, but should be sufficient for validating\nthe lexer.\n"
    },
    {
      "commit": "a1de0dc1cda076e700f9caa64ef894613bbd1401",
      "tree": "ebb19aa217118a0c6027779dd30f72ab605adbb2",
      "parents": [
        "ea0bdaffc3475399a230184fd7a69f38c6a0c82d"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 16:30:52 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Minor code cleanup in grammar\n\nSome basic cleanup as suggested by clippy.\n"
    },
    {
      "commit": "ea0bdaffc3475399a230184fd7a69f38c6a0c82d",
      "tree": "20f2e28452a753a677b90bd124a8c8434dbd32f6",
      "parents": [
        "b438ef4457d97176f9f25f304ed19699733f7853"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 16:25:16 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Add a unique ID to each Expression node\n\nThis adds a unique ID to each Expression node so that the\ngrammar-checker\u0027s coverage analysis can track individual expressions.\n"
    },
    {
      "commit": "b438ef4457d97176f9f25f304ed19699733f7853",
      "tree": "5bbc5c5f68e62d63fe6bae4950efff416c6b361c",
      "parents": [
        "6fc2917a0246e0d3c6f4d2d41e04190aa3c0c9d1"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 16:08:16 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Derive Debug for grammar::parser::Error\n\nThis is intended to help with debugging.\n"
    },
    {
      "commit": "6fc2917a0246e0d3c6f4d2d41e04190aa3c0c9d1",
      "tree": "c6a5f419c78304fcad7f22edea0918676d513b5e",
      "parents": [
        "6332b0a6de79ec343a5c875c1011bc37c6d1fa6a"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 16:04:39 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Clarify ExpressionKind::Unicode doc comment\n"
    },
    {
      "commit": "6332b0a6de79ec343a5c875c1011bc37c6d1fa6a",
      "tree": "56f10ba561d80bf48c5a4b18a29a345ee6c91212",
      "parents": [
        "05de2fbf6a0093469777a18eafe2de1c11e74811"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 16:03:41 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Add a Display impl for Expression\n\nThis helps with debugging to be able to easily see the Expression in the\noriginal syntax.\n"
    },
    {
      "commit": "05de2fbf6a0093469777a18eafe2de1c11e74811",
      "tree": "435c542c53cd0cae6af6266f230e7282b6cad16a",
      "parents": [
        "7243cade24f9203b6a559096575eea1ebcc2f577"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 15:57:37 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Change keywords list to be part of the grammar\n\nThis changes the keyword list so that it is written using the grammar\nsyntax. This helps with the grammar validation because the\nNON_KEYWORD_IDENTIFIER rule needs to refer to these.\n"
    },
    {
      "commit": "7243cade24f9203b6a559096575eea1ebcc2f577",
      "tree": "3d1a06254f9ee50be3165ab7a93f93ab1efe6679",
      "parents": [
        "f8a3bd406f75a9993a4dbc139588a99705d5791a"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 11 15:49:08 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Update C_STRING_LITERAL to help with parsing\n\nThis removes the `_except_` notation on C_STRING_LITERAL and uses\nnegative lookahead instead. This is easier for the parser to handle\nbecause otherwise it has to special-case the informal notation.\n"
    },
    {
      "commit": "f8a3bd406f75a9993a4dbc139588a99705d5791a",
      "tree": "36a8ebe40798386ac9bd8e55b58b94ff2becb5d1",
      "parents": [
        "4c1538f93a2e34185addddd9f6ffe437a425350a"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Sun Feb 22 19:19:02 2026 -0800"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Add last_expr and is_break helper methods\n"
    },
    {
      "commit": "4c1538f93a2e34185addddd9f6ffe437a425350a",
      "tree": "09307abbaa36c7cf9fb237dc4c783e59417109b2",
      "parents": [
        "8f8f7d618fea28700bb091182befec3d8e15e935"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Feb 24 12:36:12 2026 -0800"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 09:50:47 2026 -0700"
      },
      "message": "Rewrite Charset so that it uses Expression\n\nThis removes the `Characters` type, and instead uses `Expression`. There\nwas a lot of overlap with `Expression`, and this simplifies things a\nlittle bit and removes some duplication.\n\nThis also helps with some future changes I am working on that do\ncoverage analysis, and this makes it easier to track coverage data for\nthe different character values.\n\nThe downside is that without the enum it isn\u0027t clear from the code what\nlimitations there are with `ExpressionKind::Charset`, or that\n`ExpressionKind::CharacterRange` should only be in a `Charset`. These\nare implicit based on how the parser works. I\u0027m willing to make that\ntradeoff.\n\nThe `Characters` map as:\n\n- `Characters::Named` to `ExpressionKind::Nt`\n- `Characters::Terminal` to `ExpressionKind::Terminal`\n- `Characters::Range` to the NEW `ExpressionKind::CharacterRange`\n\nThis incidentally fixes a small oversight where `Characters::Named` was\nmissing span with the `grammar-text` class.\n"
    },
    {
      "commit": "8f8f7d618fea28700bb091182befec3d8e15e935",
      "tree": "b7f72f6003c0f4eb984bc5b3c1774400f0940cf3",
      "parents": [
        "9df7eb8878ce5cc82d4da172e2b39e9d8d4f7f65",
        "aa11837e57a6b5f87df5ba6a6ce4d60031f95ac3"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Aug 18 16:42:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 16:42:23 2026 +0000"
      },
      "message": "Merge pull request #2328 from lukaslueg/railroad39\n\nBump railroad-dependency; themed syntax diagrams\n"
    },
    {
      "commit": "aa11837e57a6b5f87df5ba6a6ce4d60031f95ac3",
      "tree": "b7f72f6003c0f4eb984bc5b3c1774400f0940cf3",
      "parents": [
        "9df7eb8878ce5cc82d4da172e2b39e9d8d4f7f65"
      ],
      "author": {
        "name": "lukaslueg",
        "email": "lukas.lueg@gmail.com",
        "time": "Sun Aug 16 14:19:56 2026 +0200"
      },
      "committer": {
        "name": "lukaslueg",
        "email": "lukas.lueg@gmail.com",
        "time": "Sun Aug 16 14:19:56 2026 +0200"
      },
      "message": "Bump railroad-dependency; themed syntax diagrams\n"
    },
    {
      "commit": "9df7eb8878ce5cc82d4da172e2b39e9d8d4f7f65",
      "tree": "636ebbf5557144cc97827990a96f106ee2fbce1c",
      "parents": [
        "e6402cf5b2a719dcf5145b251d243f878a373ef0",
        "4063aaf1858ea91f53dffc8bf33b652ed21075d5"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:47:34 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 09:47:34 2026 +0000"
      },
      "message": "Merge pull request #2321 from folkertdev/c-variadic-naked-functions\n\ndocument naked c-variadic functions\n"
    },
    {
      "commit": "4063aaf1858ea91f53dffc8bf33b652ed21075d5",
      "tree": "636ebbf5557144cc97827990a96f106ee2fbce1c",
      "parents": [
        "bbc12452d59035d37ee7e194d7e91978875b1b77"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 09 09:21:37 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:44:21 2026 +0000"
      },
      "message": "Cover the `-unwind` variants in the naked ABI rule\n\nThe rule says a naked function\u0027s ABI string must be \"listed in\"\nanother rule.  But that rule lists some ABI strings and then\nseparately accepts their `-unwind` variants.  We mean to accept\neverything the other rule accepts.  Let\u0027s say \"accepted under\"\ninstead.\n"
    },
    {
      "commit": "bbc12452d59035d37ee7e194d7e91978875b1b77",
      "tree": "bb5112964e4a01769a39335dd80ff164300adf30",
      "parents": [
        "ce76b349794ebf3b1e81b0617cc51cb122e72ada"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 08 23:00:17 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:44:21 2026 +0000"
      },
      "message": "Rework the naked C-variadic example\n\nFor this example, rather than showing raw compiler output, which\ncontains a spill-and-reload sequence that is hard to follow, let\u0027s\nwrite some assembly by hand.  And let\u0027s pick an example that motivates\nthe use of variadics.  We\u0027ll compute the dot product of a vector with\na projected scalar.  We\u0027ll support vector dimensions up to what can be\npassed in with the `xmm` registers.\n"
    },
    {
      "commit": "ce76b349794ebf3b1e81b0617cc51cb122e72ada",
      "tree": "2d2ebd291f500e39980e4453b3565fe0d4461ae0",
      "parents": [
        "9912c1462b7d3ad7abbb33fcca8218cd4db32b78"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 09 01:40:42 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:44:21 2026 +0000"
      },
      "message": "Clarify the ABI rule for naked variadic functions\n\nLet\u0027s restate this sentence in the active voice.  This is clearer and\nbetter parallels the preceding rule.\n"
    },
    {
      "commit": "9912c1462b7d3ad7abbb33fcca8218cd4db32b78",
      "tree": "87e44f8a414c75da88719b0263ceb33803bae39f",
      "parents": [
        "9724a4fc590281e2008b47848fd31077af58eb8c"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 09 08:48:10 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:44:21 2026 +0000"
      },
      "message": "Link the first use of \"naked functions\" in the rule\n\nWe use \"naked functions\" twice in a single rule.  Let\u0027s link the first\nuse of this rather than the second.  (There would be some logic, here,\nin linking the second since the first use is an exclusion while the\nsecond is defining something for these, but it\u0027s better to follow our\nconvention.)\n"
    },
    {
      "commit": "9724a4fc590281e2008b47848fd31077af58eb8c",
      "tree": "abcd76c259bbed61476395b01a850df7b50e0764",
      "parents": [
        "1ee6aaa0ea10009d829af10fc06e9670b218b6a6"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 08 22:59:53 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:44:19 2026 +0000"
      },
      "message": "Use rule links for the naked C-variadic references\n\nFor the link definition for \"naked functions\", let\u0027s use the rule\nidentifier.  For `items.extern.variadic.conventions`, we don\u0027t need a\nlink definition since the link text is the full rule identifier.\n"
    },
    {
      "commit": "1ee6aaa0ea10009d829af10fc06e9670b218b6a6",
      "tree": "f368a4e46e2129c01d385202b0103f1c374e6677",
      "parents": [
        "45726cead2a71e80fd71911ae692a5826255d5f1"
      ],
      "author": {
        "name": "Folkert de Vries",
        "email": "folkert@folkertdev.nl",
        "time": "Sun Aug 09 00:39:10 2026 +0200"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:43:30 2026 +0000"
      },
      "message": "carve out space for naked functions\n"
    },
    {
      "commit": "45726cead2a71e80fd71911ae692a5826255d5f1",
      "tree": "e94d7a19421b88405c2bf699f82212fd475f022b",
      "parents": [
        "7c012d9751944447f7882051dcb426e2929831d9"
      ],
      "author": {
        "name": "Folkert de Vries",
        "email": "folkert@folkertdev.nl",
        "time": "Sun Aug 09 00:36:37 2026 +0200"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:43:30 2026 +0000"
      },
      "message": "use sysv64 (generated with gcc https://godbolt.org/z/5nvjvzx8n)\n"
    },
    {
      "commit": "7c012d9751944447f7882051dcb426e2929831d9",
      "tree": "249737f85f95717171932a2d93a7c34749a6c646",
      "parents": [
        "e6402cf5b2a719dcf5145b251d243f878a373ef0"
      ],
      "author": {
        "name": "Folkert de Vries",
        "email": "folkert@folkertdev.nl",
        "time": "Sun Aug 09 00:18:15 2026 +0200"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:43:29 2026 +0000"
      },
      "message": "document naked c-variadic functions\n"
    },
    {
      "commit": "e6402cf5b2a719dcf5145b251d243f878a373ef0",
      "tree": "258c5a9008eacb38583f24168c16a69b3e2ff017",
      "parents": [
        "6a5392a7d2e429766a9e128d3bebcd981514f29e",
        "4956ce90d65da00d62659f8a6f1fb299557f8dd0"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sun Aug 16 09:33:49 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 09:33:49 2026 +0000"
      },
      "message": "Merge pull request #2300 from folkertdev/extern-custom\n\nAdd `extern \"custom\"`\n"
    },
    {
      "commit": "4956ce90d65da00d62659f8a6f1fb299557f8dd0",
      "tree": "b5a2c54cee6e45881f572f97a73d06a1208990f0",
      "parents": [
        "2a4f50f72c0c817ee4dc0d9229203576a08e0750"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Fri Aug 14 20:21:49 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 15 08:24:51 2026 +0000"
      },
      "message": "Add example for non-unit return with `extern \"custom\"`\n\nLet\u0027s add an example to show that we do not allow an `extern \"custom\"`\nfunction to have a type alias as its return type, even if that type\nalias is defined to be the unit type.\n"
    },
    {
      "commit": "2a4f50f72c0c817ee4dc0d9229203576a08e0750",
      "tree": "3b403ebe7b0edbc4afa43bae6361ea293116e536",
      "parents": [
        "0a7b870704bf81c8ab9497f786ed2f3549db9c68"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 15 07:25:06 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 15 08:24:18 2026 +0000"
      },
      "message": "Add example for `cold` on `extern \"custom\"` functions\n\nLet\u0027s add an example to show that we do not allow applying the `cold`\nattribute to an `extern \"custom\"` function.\n"
    },
    {
      "commit": "0a7b870704bf81c8ab9497f786ed2f3549db9c68",
      "tree": "84655ddaf22269d738787d9ea07181d652d413e1",
      "parents": [
        "99dfffa6b1a3cbe90a9dd4cffd9293f2aa9b8551"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Fri Aug 14 20:21:20 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 15 08:23:54 2026 +0000"
      },
      "message": "Move `extern \"custom\"` `cold` rule to `cold` attribute\n\nRather than putting the rule that the `cold` attribute may not be\napplied to `extern \"custom\"` functions in the functions chapter, let\u0027s\ndocument it with the `cold` attribute.  This is what we do in other\ncases where an attribute has restrictions on where it may be used.\n"
    },
    {
      "commit": "99dfffa6b1a3cbe90a9dd4cffd9293f2aa9b8551",
      "tree": "b65cc7d6e3d38a6ac27daae825f8e57eef8b82cc",
      "parents": [
        "217edc5ab288e5a93a89ac657a8b55ebd2b2605c"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Fri Aug 14 19:58:34 2026 +0000"
      },
      "committer": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Sat Aug 15 08:22:30 2026 +0000"
      },
      "message": "Revise the new `extern \"custom\"` rules\n\nOn lang, we decided that an `extern \"custom\"` function must\nsyntactically have a return type of unit and that the `cold` attribute\nmay not be applied to these functions.  Let\u0027s revise the text for\nthese new rules.\n"
    },
    {
      "commit": "217edc5ab288e5a93a89ac657a8b55ebd2b2605c",
      "tree": "8fa3d02eda936b8b8b2eceb0d6308050cb28dea0",
      "parents": [
        "7474a513b7c6bac620d89a8fb084ba32ef41b09c"
      ],
      "author": {
        "name": "Folkert de Vries",
        "email": "folkert@folkertdev.nl",
        "time": "Fri Aug 14 11:51:32 2026 +0200"
      },
      "committer": {
        "name": "Folkert de Vries",
        "email": "folkert@folkertdev.nl",
        "time": "Fri Aug 14 11:54:21 2026 +0200"
      },
      "message": "note that the cold attribute is rejected\n"
    },
    {
      "commit": "7474a513b7c6bac620d89a8fb084ba32ef41b09c",
      "tree": "6010743d5603c3a14976dbb445ba396222ff3723",
      "parents": [
        "66b3bc5b868839206f675b2c54416f89c1098a60"
      ],
      "author": {
        "name": "Folkert de Vries",
        "email": "folkert@folkertdev.nl",
        "time": "Fri Aug 14 11:51:22 2026 +0200"
      },
      "committer": {
        "name": "Folkert de Vries",
        "email": "folkert@folkertdev.nl",
        "time": "Fri Aug 14 11:51:22 2026 +0200"
      },
      "message": "note that the unit return type is syntactic: aliases are not resolved\n"
    },
    {
      "commit": "6a5392a7d2e429766a9e128d3bebcd981514f29e",
      "tree": "8197f005e29a8aae7e2dbfb44c3b6d7cda07f4f4",
      "parents": [
        "3e0fcf9babdf5c98e4fcd93a7138e78882b7560f",
        "477afc0bc634b66e7d01b0069ced680b896b4673"
      ],
      "author": {
        "name": "Travis Cross",
        "email": "tc@traviscross.com",
        "time": "Tue Aug 11 18:27:01 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 11 18:27:01 2026 +0000"
      },
      "message": "Merge pull request #2293 from zachs18/zst-empty-enum\n\nEmpty repr(Rust) enums are ZSTs\n"
    }
  ],
  "next": "477afc0bc634b66e7d01b0069ced680b896b4673"
}
