)]}'
{
  "log": [
    {
      "commit": "f675d40d11576889472dbbbf3cc2cab278c8f706",
      "tree": "6d25e52ead7cdcab9553e488c3ccd9bcf059bc4e",
      "parents": [
        "65395c0a6dd00767acecc5a722d58171a7e8e808"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Sat Oct 24 00:33:22 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sat Oct 24 00:33:22 2026 -0700"
      },
      "message": "CQ. Remove nonPackageLanguageVersion and nonPackageFeatureSet.\n\nFiles outside of any package use the language version of the host SDK,\nso `AnalysisOptionsImpl.nonPackageLanguageVersion` and the corresponding\nparameter of `FeatureSetProvider.getFeatureSetAndLanguageVersion` were\nnot used. And `nonPackageFeatureSet` was always the same as\n`contextFeatures`: the `contextFeatures` setter of\n`AnalysisOptionsBuilder` copied it, and other writers set both to the\nsame value. So, files outside of any package now use `contextFeatures`\ndirectly.\n\nBug: https://github.com/dart-lang/sdk/issues/64693\nChange-Id: I8a6647d9c3f82e6d7cd2de1c4d8b9f0a87010469\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567660\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\n"
    },
    {
      "commit": "65395c0a6dd00767acecc5a722d58171a7e8e808",
      "tree": "9d3d99c299d0258a23882faee724cc07f87be439",
      "parents": [
        "966de0e522d4a1af6045c706343f5dd3c59c209b"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Fri Oct 23 19:46:48 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 19:46:48 2026 -0700"
      },
      "message": "[modular_aot] dart:ffi::_abi recognized method\n\nIssue: https://github.com/dart-lang/sdk/issues/61635\nChange-Id: I6d39082849944483395f20db0c47b6d77787d1f9\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568800\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\n"
    },
    {
      "commit": "966de0e522d4a1af6045c706343f5dd3c59c209b",
      "tree": "eda8112b913104f64944aa86ff4af75848924106",
      "parents": [
        "ec734ad538de5f6b5e1eb5217aff56fcf2decf50"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Fri Oct 23 18:48:36 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 18:48:36 2026 -0700"
      },
      "message": "AST. Preserve token types of names in serialized ASTs.\n\nNames in serialized ASTs were read back as `TokenType.STRING` tokens.\nThe V1 projection decides between `PrefixedIdentifier` and\n`PropertyAccess` by the token type of the name, so `A.zero` in a\nconstant initializer projected as `PrefixedIdentifier` when the library\nwas linked, but as `PropertyAccess` when it was read from a bundle.\n\nNow the type of each name token is written together with its lexeme,\nand the reader restores a token of the same type, a `KeywordToken` for\nkeywords. So keyword names, such as `A.when`, and reserved words kept\nby recovery, such as `A.class`, also round-trip.\n\nThe token type mapping was missing `augment`, `base`, `extension`,\n`sealed`, `when`, the literal types with digit separators, `BAD_INPUT`,\nand `RECOVERY`, so these are added, with a test that every token type\ncan be serialized. Synthetic name tokens built by `ElementBuilder` are\nnow `TokenType.IDENTIFIER`, so that a round trip doesn\u0027t restore them as\nstring literal tokens.\n\nThe SDK summary grows by 0.24%; stable_analysis instructions: local +0.009%, Golem presubmit +0.17%.\n\nChange-Id: Ida01b1aa5d43041042efc4151914126f5fb3c0e2\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568801\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\n"
    },
    {
      "commit": "ec734ad538de5f6b5e1eb5217aff56fcf2decf50",
      "tree": "2424696736abb429ee50709a7d2ebbb84d40cc18",
      "parents": [
        "c89e591d6af2d46debb3c690572a5beb5088251c"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Fri Oct 23 17:46:40 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 17:46:40 2026 -0700"
      },
      "message": "Issue 64687. Resolve constant initializers of augmenting enum constants.\n\n`ConstantInitializersResolver._resolveVariable` returned early for enum\nconstants, because `TopLevelInference` had already resolved their\ninitializers. But it resolves only the first fragment, so the\nsynthesized `ConstructorInvocation` of an augmenting enum constant, such\nas `augment v1(zero)`, was never resolved. An identifier argument made\n`AstBinaryWriter` throw on `ParsedUnqualifiedName` or `ParsedNameAccess`,\nand the element\u0027s constant value was computed from the unresolved\nexpression, because it is taken from the last fragment.\n\nThe early return is removed. The loop over fragments already skips the\nfirst fragment when its initializer was resolved by type inference.\nOther fragments are resolved with the type of the element as the\ncontext, so in a generic enum `augment v1(\u0027a\u0027)` resolves as `A\u003cint\u003e`\nwhen the type of `v1` was inferred as `A\u003cint\u003e`.\n\nAlso adds summary tests for explicitly typed field initializers: `this`\nin a `late` field, and a primary constructor parameter in a non-late\nfield.\n\nBug: https://github.com/dart-lang/sdk/issues/64687\nChange-Id: I120a06bbe3cac56235eb83f4c0bbee125084d4b4\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568823\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "c89e591d6af2d46debb3c690572a5beb5088251c",
      "tree": "11b917c5a34a45eef14eb2e196ded59f91689079",
      "parents": [
        "1baa555433130f1df0971e8e920786907eff740e"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Fri Oct 23 17:45:58 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 17:45:58 2026 -0700"
      },
      "message": "[build] Fix Android create_sdk target under Siso.\n\nBug: https://github.com/dart-lang/sdk/issues/64715\nChange-Id: I4c4f600688418d327c66493d3120ae293be648f5\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568940\nReviewed-by: Nate Biggs \u003cnatebiggs@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "1baa555433130f1df0971e8e920786907eff740e",
      "tree": "b09ca9c045edb2a2caa878b04a6af1a82c984299",
      "parents": [
        "4b7749999efd94a5a7b756a2239ad29f6ba525b2"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Fri Oct 23 17:38:29 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 17:38:29 2026 -0700"
      },
      "message": "Issue 64687. Read formal parameter fragment resolution on demand.\n\nWhen an executable is read from a summary, the default values and\nmetadata of its formal parameter fragments are read together with the\nresolution of their enclosing executable fragment, but\n`FormalParameterFragmentImpl` did not trigger that read. They were\navailable only if something had already read the enclosing fragment,\nusually `ExecutableElementImpl.formalParameters`, which reads only the\nfirst fragment.\n\nSo a formal parameter reached in another way had no default value or\nmetadata:\n- a default value or annotation specified on an augmentation, which\n  the element combines from all fragments via `nextFragment`;\n- the annotations of the introductory declaration, when the element is\n  reached via an augmentation fragment;\n- a field declared by a primary constructor parameter, because\n  `FieldElementImpl.declaringFormalParameter` uses\n  `formalParametersIncludingRecovery`, so the field had no metadata,\n  and `computeConstantValue()` of the parameter returned `null`.\n\n`FormalParameterFragmentImpl` now reads the resolution of its enclosing\nfragment before returning `constantInitializer2` or `metadata`, like\n`FieldFragmentImpl` and `ExecutableFragmentImpl` do for themselves.\n\nThe new `ElementTextConfiguration.withCombinedFragmentData` writes,\nbefore the library, data that an element combines from its fragments,\nthe constant initializer or the metadata, first as the element combines\nit, and then for each fragment, with resolution. Because the combined\ndata is the first thing accessed, the text shows whether the fragments\nare read on demand. It is used to specify, for formal parameters, each\ncombination of the executable kind (constructor, method, setter,\ntop-level function), where the default value or annotation is specified\n(the introductory declaration, the augmentation, or both), and default\nvalues vs. metadata, plus primary constructor parameters and the fields\nthey declare. Getters are not covered yet, because getter augmentations\nwith formal parameters currently crash.\n\nBug: https://github.com/dart-lang/sdk/issues/64687\nChange-Id: I7a032cac34fb329c495501f332a7a3dbd7d9a2e6\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568820\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "4b7749999efd94a5a7b756a2239ad29f6ba525b2",
      "tree": "86d6a7186ee999585115e282ae8511977457dbda",
      "parents": [
        "be0ad6c0542e5d49715323c4ee17d234aeb18eb6"
      ],
      "author": {
        "name": "Nate Biggs",
        "email": "natebiggs@google.com",
        "time": "Fri Oct 23 16:33:43 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 16:33:43 2026 -0700"
      },
      "message": "[ddc] Skip unavailable scope variables in expression eval tests\n\nStarting with V8 15.7 (Chrome 157), the debugger scope chain includes\nouter lexical scopes even when they don\u0027t need a context [1].\nStack-allocated variables of such scopes, e.g. variables of an enclosing\nfunction that the paused closure doesn\u0027t capture, are reported as\nproperties without a value.\n\nThe expression evaluation test driver mapped these to their own names,\nso the expression compiler passed them as arguments to the compiled\nexpression, which then failed with a ReferenceError. Skip properties\nwithout a value, matching what dwds already does.\n\nThis also drops variables that are in their TDZ (Temporal Dead Zone:\nwhen a variable is in scope but it\u0027s declaration has not run), e.g.\nnamed parameters before DDC unpacks them at the start of a constructor\n(see https://github.com/dart-lang/sdk/issues/63842). Update the Dart\n3.12 expectations: such parameters are now reported as unavailable by\nthe expression compiler, or resolve the same way they do in the body,\ninstead of failing in V8 with \"Cannot access \u0027x\u0027 from debugger\".\n\n[1]\nhttps://chromium.googlesource.com/v8/v8/+/e58e145c8c8f6a38923ac36d06eafe0777e8ad36\n\nChange-Id: I5e87face8984161ba2ece5570740e8c7dd64687b\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568380\nReviewed-by: Mark Zhou \u003cmarkzipan@google.com\u003e\nCommit-Queue: Nate Biggs \u003cnatebiggs@google.com\u003e\nReviewed-by: Nicholas Shahan \u003cnshahan@google.com\u003e\n"
    },
    {
      "commit": "be0ad6c0542e5d49715323c4ee17d234aeb18eb6",
      "tree": "5efa295f523cfd9ed37f25fbe653cabcdaf8c101",
      "parents": [
        "b08017fb3f71170e55d00a384f73678b608d2645"
      ],
      "author": {
        "name": "Srujan Gaddam",
        "email": "srujzs@google.com",
        "time": "Fri Oct 23 16:04:44 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 16:04:44 2026 -0700"
      },
      "message": "[dart:js_interop] Handle recursive gets, constants, and concatenation in annotations\n\nJS interop annotation values may come from fields which\nthemselves can be evaluated, recursive, or concatenated.\n\nSo, we should check for `StringConcatenation`,\n`ConstantExpression`s, and `StaticGet`s, where we recurse\non the initializer of the field.\n\nModular tests are added to test these cases. Our existing\ntest suite covers the `StringLiteral` case.\n\nChange-Id: Iaa79987125662040b5326d5192857244ac9ac60e\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568862\nAuto-Submit: Srujan Gaddam \u003csrujzs@google.com\u003e\nCommit-Queue: Nate Biggs \u003cnatebiggs@google.com\u003e\nReviewed-by: Nate Biggs \u003cnatebiggs@google.com\u003e\n"
    },
    {
      "commit": "b08017fb3f71170e55d00a384f73678b608d2645",
      "tree": "68cc8e82e504daf9bb21f2a4bcfdbdd60f2a1fd0",
      "parents": [
        "18e5788d7b389a2e33b52baf7f41fec06bf2786d"
      ],
      "author": {
        "name": "Fedor Shcheglov",
        "email": "fedor.scheglov@gmail.com",
        "time": "Fri Oct 23 15:57:07 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 15:57:07 2026 -0700"
      },
      "message": "[analyzer] Add one-shot and streaming BLAKE3-256 hashing\n\nPrepare a faster replacement for the MD5 hashes used for file contents\nand API signatures. Computing these hashes remains significant work even\nwhen cached analysis avoids parsing and resolution. A pure Dart\nimplementation avoids native-library packaging and loading requirements.\n\nAdd ScalarBlake3 for one-shot hashing and ScalarBlake3Sink for\nincremental input, finalization, and reset. Both produce full 32-byte\ndigests.\n\nAdd Blake3ApiSignature with a fixed 4 KiB staging buffer. Small\nsignatures use one-shot hashing; larger signatures stream through the\nsink without accumulating the entire message. Preserve ASCII string\nspecialization and split values across buffer boundaries without\npadding. Reading a digest finalizes the signature.\n\nThis CL adds the implementations and tests. Switching the analyzer\u0027s\nexisting MD5 call sites remains a follow-up.\n\nAn integration experiment used Blake3ApiSignature for API signatures and\nScalarBlake3 for file-content hashing. On an Apple M3 Max with Dart\n3.15.0-edge ARM64 AOT, analyzing a frozen pkg/analyzer corpus of 1,630\nDart files (40.1 MB) produced these median times:\n\n                         All MD5    All BLAKE3-256    Time reduction\n  Populated disk cache:\n    Wall                   1.604 s         1.472 s              8.2%\n    Total CPU              1.635 s         1.500 s              8.3%\n  Empty disk cache:\n    Wall                  12.722 s        12.448 s              2.2%\n    Total CPU             24.845 s        23.990 s              3.4%\n\nUse scalar compression initially, with a planned upgrade to SIMD once\nthe analyzer\u0027s minimum SDK moves to Dart 3.14.\n\nChange-Id: I7a172efd591b1da5d6871104b9287bdd55868f70\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/562480\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Phil Quitslund \u003cpquitslund@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\nReviewed-by: Jens Johansen \u003cjensj@google.com\u003e\n"
    },
    {
      "commit": "18e5788d7b389a2e33b52baf7f41fec06bf2786d",
      "tree": "5651268f02602085d3db6b46abe58bc3b6b974ab",
      "parents": [
        "be4a467edd1dbf2c79fc75f1e4c9ceb3aa9e2346"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Fri Oct 23 14:31:25 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 14:31:25 2026 -0700"
      },
      "message": "Issue 64687. Resolve default values and constant initializers of all fragments.\n\nThe default value of every formal parameter fragment, and the constant\ninitializer of every variable fragment, is written into the bundle,\nincluding fragments of augmentations. Previously at most one fragment\nper element was resolved (the first, or for typed constants the last one\nwith an initializer), so the others were written unresolved, e.g. with\n`staticType: null`.\n\n`DefaultValueResolver` now resolves the formal parameters of all\nfragments of each executable, and also visits getters and setters, whose\nformal parameters can exist in recovered code.\n`ConstantInitializersResolver` now resolves the initializers of all\nfragments, skipping only the first fragment\u0027s initializer when\n`TopLevelInference` already resolved it to infer the type.\n\nThe context of a variable initializer during linking is now computed in\none place, `AstResolver.resolveVariableInitializerForLinking`, used by\nboth type inference and `ConstantInitializersResolver`: the enclosing\ninterface, whether `this` is accessible (late instance fields), and the\nin-scope primary constructor parameters (non-late instance fields).\nPreviously `ConstantInitializersResolver` passed no enclosing class and\nnever made `this` accessible, so `this` and implicit `this` references\nin typed initializers resolved to `InvalidType`, unlike the same\ninitializers without a type annotation.\n\nAs a result, typed field initializers that reference instance members\nnow get the same constant evaluation diagnostics as untyped ones,\n`invalidConstant` and `constInitializedWithNonConstantValue`, in\naddition to `implicitThisReferenceInInitializer`.\n\nBug: https://github.com/dart-lang/sdk/issues/64687\nChange-Id: I291e98bc5ed0f6d63ebd52fc8f1fcdb7ce05d5ad\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568162\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "be4a467edd1dbf2c79fc75f1e4c9ceb3aa9e2346",
      "tree": "8e7b861142a1a007bd17e871f137de581f728d48",
      "parents": [
        "ee959583e4ccbd04de3b3f78ebf8363b46fe28e7"
      ],
      "author": {
        "name": "paulberry",
        "email": "paulberry@google.com",
        "time": "Fri Oct 23 14:11:25 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 14:11:25 2026 -0700"
      },
      "message": "[flow analysis] Enable promotion-chain-intersection-join in Dart 3.15.\n\nThis enables the enhanced promotion chain join algorithm\n(https://github.com/dart-lang/language/issues/4757) for libraries with\na language version of 3.15 or later.\n\nPreviously, when two branches of the control flow promoted a variable\nto the same type, but did so by way of different intermediate types,\nall promotions were discarded at the join point. Now, the promotions\nthat are common to both branches are preserved. For example, given\n`class D implements B, C` (where `B` and `C` are unrelated), a\nvariable that is promoted to `B` and then `D` in one branch, and to\n`C` and then `D` in the other branch, is now promoted to `D` after the\njoin, rather than losing its promotion entirely.\n\nSince the feature is now enabled by default, the flow analysis test\nharness and `PromotionModel.joinPromotedTypes` default to the new\nalgorithm, and the language test for the enabled behavior no longer\nneeds `--enable-experiment\u003dpromotion-chain-intersection-join`. The\nlanguage test for the old behavior now opts out using a `3.14`\nlanguage version comment.\n\nA description of the change has also been added to CHANGELOG.md.\n\nBug: https://github.com/dart-lang/language/issues/4757\n\nTAG\u003dagy\nCONV\u003d85422cc3-0ada-4ae8-9eb1-788bcab8d995\n\nTested: trybots\nChange-Id: I6afb282b66fa1e48f6e726390936aa2f6a6a6964\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567221\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Brian Quinlan \u003cbquinlan@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n"
    },
    {
      "commit": "ee959583e4ccbd04de3b3f78ebf8363b46fe28e7",
      "tree": "bfef5ea9cb9b93fb82b45c50f7d03b5596e8edcb",
      "parents": [
        "bf0b1bb60362b4800b8dbd57ff9a95a644d5ebb5"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Fri Oct 23 13:05:45 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 13:05:45 2026 -0700"
      },
      "message": "Issue 64693. Enable experiments from analysis options for the SDK version.\n\nExperiments from the analysis options file were enabled for the\nanalyzer\u0027s `ExperimentStatus.currentVersion`, while files outside of any\npackage use the language version of the host SDK, and libraries in\npackages cannot have a language version newer than the SDK. So, when the\nanalyzer from pub runs with an SDK of a different version, for example\nthe 3.13 SDK and analyzer at 3.15, these experiments were silently\ndisabled for all files.\n\nEnable them for the language version of the host SDK instead, as the\nclient\u0027s `enabledExperiments` already are. For experiments, the analyzer\nused as a library then behaves as the analyzer bundled with this SDK,\nfor which the SDK language version is the latest one. The analyzer still\ndecides what each experiment means; the version only selects which\nlibraries opt in to experiments.\n\nThe options parser gets the SDK language version from its\n`SourceFactory`, and falls back to `ExperimentStatus.currentVersion`\nwhen there is no SDK.\n\nTest both experiment sources with the 3.13 SDK, for a file outside of\nany package and for a library in a package. Make the\n`FeatureSetProvider` unit test use the 3.13 SDK, so that it checks that\nfiles outside of any package use the SDK language version.\n\nBug: https://github.com/dart-lang/sdk/issues/64693\nChange-Id: I57845ba582484fccf281d26b925edf071b2079e5\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567640\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "bf0b1bb60362b4800b8dbd57ff9a95a644d5ebb5",
      "tree": "a99f2621e856377642b75ebfe10f4bfb4a1191c8",
      "parents": [
        "bbce540ef98795b8511de675fd34c9de12b6538a"
      ],
      "author": {
        "name": "Nicholas Shahan",
        "email": "nshahan@google.com",
        "time": "Fri Oct 23 12:51:51 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 12:51:51 2026 -0700"
      },
      "message": "[dart2wasm] CFG support for named parameters\n\nAdds lowering for direct calls with named arguments.\n\nTEST\u003dtests/web/wasm/cfg/direct_call_test.dart\n\nChange-Id: Iac6f414d5dcebf64121753ed45969a3b052c7081\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568203\nCommit-Queue: Nicholas Shahan \u003cnshahan@google.com\u003e\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "bbce540ef98795b8511de675fd34c9de12b6538a",
      "tree": "f546ec300f647475ba9b1110238db48d913033c0",
      "parents": [
        "25f58144a3b840ae13a5cf0df929704557d7551c"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Fri Oct 23 12:42:49 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 12:42:49 2026 -0700"
      },
      "message": "[build] Enable Siso by default.\n\nChange-Id: I7ae4a97df5ebdde3de4c13f3b2ddd454420a87ca\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568180\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "25f58144a3b840ae13a5cf0df929704557d7551c",
      "tree": "3800ba221351f7a98f137d116bfcecca83cde641",
      "parents": [
        "a0250126ff3f0791bb053880e421356b41716731"
      ],
      "author": {
        "name": "Alexander Aprelev",
        "email": "aam@google.com",
        "time": "Fri Oct 23 12:23:01 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 12:23:01 2026 -0700"
      },
      "message": "[gardening] Roll Fuchsia SDK to 33.20261023.4.1\n\nChange-Id: Ia695d512602bd963b815ada2fd49571e6a8bf4fc\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568641\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nCommit-Queue: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "a0250126ff3f0791bb053880e421356b41716731",
      "tree": "89b13011b8aa22fe8a434ae073274d1db3b2b13a",
      "parents": [
        "6737c30cab789cfd76a1f3e0ddf2871b321a768e"
      ],
      "author": {
        "name": "Alexander Aprelev",
        "email": "aam@google.com",
        "time": "Fri Oct 23 11:40:52 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 11:40:52 2026 -0700"
      },
      "message": "Revert \"Roll Clang from 32e6b5082d00 to 61aea712077a\"\n\nThis reverts commit 64cc292efdc498abb8eb8f851929e7d179d46c9a.\n\nReason for revert: ..\\..\\buildtools\\win-x64\\clang\\lib\\clang\\24\\include\\arm_vector_types.h(63,67): error: declaration of \u0027__arm_set_fpm_lscale2\u0027 has a different language linkage\n\nFailure Link: https://ci.chromium.org/ui/p/dart-internal/builders/ci/dart-sdk-win-arm64-main/17560/overview\n\nOriginal change\u0027s description:\n\u003e Roll Clang from 32e6b5082d00 to 61aea712077a\n\u003e\n\u003e If this roll has caused a breakage, revert this CL and set the roller\n\u003e to dry run mode using the controls here:\n\u003e https://autoroll.skia.org/r/clang-dart-sdk\n\u003e Please CC dart-engprod@google.com,dart-vm-gardener@rotations.google.com,dart-vm-team@google.com on the revert to ensure that a human\n\u003e is aware of the problem.\n\u003e\n\u003e To file a bug in Clang: https://bugs.fuchsia.dev/p/fuchsia/issues/list?q\u003dcomponent%3AToolchain\n\u003e To file a bug in Dart SDK: https://github.com/dart-lang/sdk/issues\n\u003e\n\u003e To report a problem with the AutoRoller itself, please file a bug:\n\u003e https://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\u003e\n\u003e Documentation for the AutoRoller is here:\n\u003e https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\u003e\n\u003e Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try;luci.dart.try:dart-sdk-linux-arm64-try;luci.dart.try:dart-sdk-mac-try;luci.dart.try:dart-sdk-mac-arm64-try;luci.dart.try:dart-sdk-win-try;luci.dart.try:vm-asan-mac-release-arm64-try\n\u003e Change-Id: I32bf6b7e9d33778828623d2bb110b72a9d2cd717\n\u003e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/568300\n\u003e Reviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n\u003e Reviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\n\u003e Commit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n\nCq-Include-Trybots: luci.dart.try:dart-sdk-linux-try;luci.dart.try:dart-sdk-linux-arm64-try;luci.dart.try:dart-sdk-mac-try;luci.dart.try:dart-sdk-mac-arm64-try;luci.dart.try:dart-sdk-win-try;luci.dart.try:vm-asan-mac-release-arm64-try\nNo-Presubmit: true\nNo-Tree-Checks: true\nNo-Try: true\nChange-Id: Iedbe54856a407431704472ca1cbba5e55df5eb0e\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568701\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nCommit-Queue: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "6737c30cab789cfd76a1f3e0ddf2871b321a768e",
      "tree": "ebadc507ce91fc5d3b61e21aacf54972a2c38be0",
      "parents": [
        "64cc292efdc498abb8eb8f851929e7d179d46c9a"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Fri Oct 23 11:12:55 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 11:12:55 2026 -0700"
      },
      "message": "Also fetch Siso on riscv64.\n\nBug: https://github.com/dart-lang/sdk/issues/48545\nChange-Id: I1b438d90865f9e32fa07e02f6ff858419a545182\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568680\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "64cc292efdc498abb8eb8f851929e7d179d46c9a",
      "tree": "e615f33cba062cba0cf29291c1faefa110582bbf",
      "parents": [
        "91d759383552049aa94413965481627c703f421f"
      ],
      "author": {
        "name": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Oct 23 10:22:15 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 10:22:15 2026 -0700"
      },
      "message": "Roll Clang from 32e6b5082d00 to 61aea712077a\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/clang-dart-sdk\nPlease CC dart-engprod@google.com,dart-vm-gardener@rotations.google.com,dart-vm-team@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Clang: https://bugs.fuchsia.dev/p/fuchsia/issues/list?q\u003dcomponent%3AToolchain\nTo file a bug in Dart SDK: https://github.com/dart-lang/sdk/issues\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nCq-Include-Trybots: luci.dart.try:dart-sdk-linux-try;luci.dart.try:dart-sdk-linux-arm64-try;luci.dart.try:dart-sdk-mac-try;luci.dart.try:dart-sdk-mac-arm64-try;luci.dart.try:dart-sdk-win-try;luci.dart.try:vm-asan-mac-release-arm64-try\nChange-Id: I32bf6b7e9d33778828623d2bb110b72a9d2cd717\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568300\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "91d759383552049aa94413965481627c703f421f",
      "tree": "8e02dcf4620fd0331d158312df27a9fab65dab19",
      "parents": [
        "f37502b65a4e062cf7f7c78ba9868d2a742d510f"
      ],
      "author": {
        "name": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Oct 23 10:16:25 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 10:16:25 2026 -0700"
      },
      "message": "Roll gn from 3ef636ac7c21 to 938087829fcb\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/gn-dart-sdk\nPlease CC dart-engprod@google.com,dart-vm-gardener@rotations.google.com,dart-vm-team@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in gn: https://bugs.chromium.org/p/gn/issues/list\nTo file a bug in Dart SDK: https://github.com/dart-lang/sdk/issues\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nCq-Include-Trybots: luci.dart.try:dart-sdk-linux-try;luci.dart.try:dart-sdk-linux-arm64-try;luci.dart.try:dart-sdk-mac-try;luci.dart.try:dart-sdk-mac-arm64-try;luci.dart.try:dart-sdk-win-try\nChange-Id: I8e70a0874f47062370cf1278ba1820e497a85018\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568400\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "f37502b65a4e062cf7f7c78ba9868d2a742d510f",
      "tree": "c87359141ca176ee2317a8a02b727608553303aa",
      "parents": [
        "af44020031795d78bad266d3758d722fe6944d91"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Fri Oct 23 10:05:55 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 10:05:55 2026 -0700"
      },
      "message": "[build] Update Siso to pick up riscv64 support.\n\nBug: https://github.com/dart-lang/sdk/issues/48545\nChange-Id: Ie140c3bc8f82b94d6dc3cffa6918ce5fddcd9973\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568620\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "af44020031795d78bad266d3758d722fe6944d91",
      "tree": "fb3e28f775073eb9a33702b9854b05f691334d1a",
      "parents": [
        "65f307c434a249f5234938c9eda380367050ef1f"
      ],
      "author": {
        "name": "Jake Macdonald",
        "email": "jakemac@google.com",
        "time": "Fri Oct 23 09:10:18 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 09:10:18 2026 -0700"
      },
      "message": "[dtd] Test that DTD respects DASH__SUPPRESS_ANALYTICS\n\nDTD\u0027s UnifiedAnalyticsService proxies analytics calls through real\n`Analytics` instances, which already respect DASH__SUPPRESS_ANALYTICS\nfrom DTD\u0027s own process environment (package:unified_analytics 8.1.0+).\n\nThis makes the fake analytics instances used with `--fakeAnalytics`\nalso follow DTD\u0027s environment, so the behavior can be tested, and adds\na test verifying that no events are sent when it is set. The DTD test\nhelper now always sets DASH__SUPPRESS_ANALYTICS explicitly so tests are\nnot affected by the environment they run in.\n\nNote that other packages spawning DTD with --fakeAnalytics in testing, may need an update or else local tests could start inheriting the users environment and failing erroneously. I think this is worth doing regardless, and CI environments should be stable.\n\nBug: https://github.com/flutter/dash-devexp-internal/issues/103\nChange-Id: I2ed02ac109f66cc9384e2e97eaf2253aab821564\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567620\nCommit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\nAuto-Submit: Jake Macdonald \u003cjakemac@google.com\u003e\nReviewed-by: Ben Konyi \u003cbkonyi@google.com\u003e\nReviewed-by: Phil Quitslund \u003cpquitslund@google.com\u003e\n"
    },
    {
      "commit": "65f307c434a249f5234938c9eda380367050ef1f",
      "tree": "d02130f5039575aa062c21f21a833cd78c7b43d4",
      "parents": [
        "056a930666d102235265dffe2325722cc3f7a8d2"
      ],
      "author": {
        "name": "bkonyi",
        "email": "bkonyi@google.com",
        "time": "Fri Oct 23 08:58:45 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 08:58:45 2026 -0700"
      },
      "message": "[dart_runtime_service] Fix DevTools memory profile JSON format\n\nFlutter devicelab benchmarks\n(complex_layout_scroll_perf__devtools_memory and\nlarge_image_changer_perf_android) broke with FormatException:\nUnexpected character (at line 2, character 1) because MemoryJsonFile\nwas writing newline-delimited JSON (NDJSON) rather than the DevTools\nSamplesMemoryJson schema.\n\nRestore the RandomAccessFile-based writer using SamplesMemoryJson and\nMemoryJson from package:devtools_shared so the output file is a valid\nmemory profile after every sample.\n\nFixes https://github.com/flutter/flutter/issues/195163\n\nTEST\u003dpkg/dart_runtime_service/test/devtools/memory_profile_test.dart\n\nBug: https://github.com/flutter/flutter/issues/195163\nChange-Id: I6a1d76436be64332aa278ca81b0a64a1afb63430\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568560\nCommit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\nReviewed-by: Mark Zhou \u003cmarkzipan@google.com\u003e\n"
    },
    {
      "commit": "056a930666d102235265dffe2325722cc3f7a8d2",
      "tree": "8bfb7fd43af874e81a603fb8c4941abdfe881236",
      "parents": [
        "b380ff24ae8409e245908f27da5422550756847d"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@google.com",
        "time": "Fri Oct 23 08:51:38 2026 -0700"
      },
      "committer": {
        "name": "Samuel Rawlins",
        "email": "srawlins@google.com",
        "time": "Fri Oct 23 08:51:38 2026 -0700"
      },
      "message": "[analysis_server] Fix ElementMatcher target names and supertype walks\n\nData-driven fixes missed members declared on a supertype of a property\naccess target (`div.style.oldGetter`), and lost the target name for\nimport-prefixed statics, extension overrides, and unresolved types, so\n`fix_data.yaml` entries for those shapes never matched.\n\nChange-Id: I0631773e3fb204ceb8a1111938517c6eb144c277\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568266\nAuto-Submit: Kevin Moore \u003ckevmoo@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "b380ff24ae8409e245908f27da5422550756847d",
      "tree": "e44b1cfcebfa1d0e5c670c3d565b5cfdcf96c4ea",
      "parents": [
        "b4db4d13147ac113058a404610ad1928825f3f53"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@google.com",
        "time": "Fri Oct 23 08:20:19 2026 -0700"
      },
      "committer": {
        "name": "Samuel Rawlins",
        "email": "srawlins@google.com",
        "time": "Fri Oct 23 08:20:19 2026 -0700"
      },
      "message": "[analysis_server] Support data-driven fixes on @docImport URIs\n\nBroken `/// @docImport` directives emit `uriDoesNotExistInDocImport`\nrather than `uriDoesNotExist`, so `replacedBy` library transforms in\n`fix_data.yaml` skipped `@docImport` URIs in both IDE quick fixes and\n`dart fix --apply`.\n\nChange-Id: I134f6b142776e8f701e8305f7db54619f8f393c3\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568267\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "b4db4d13147ac113058a404610ad1928825f3f53",
      "tree": "4b602bd15dbe86f7b9ca650bea47865c63063fd8",
      "parents": [
        "41dcfa67a7b7160655c4b5920e627366bd1c2a68"
      ],
      "author": {
        "name": "Brian Quinlan",
        "email": "bquinlan@google.com",
        "time": "Fri Oct 23 07:46:55 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 07:46:55 2026 -0700"
      },
      "message": "[io] Fix HEAD/GET requests used chunked transfer encoding.\n\nThis would be significantly less complex if we simple disallowed request bodies for GET/HEAD requests. Or even if we disallowed streamed bodies for those request types.\n\nBut we have multiple conformance tests that verify that those scenarios are supported:\nhttps://github.com/dart-lang/co19/blob/5ee9bb9617e7d12ce64969c6f02ead6686ac2910/LibTest/io/HttpClientRequest/addError_A02_t01.dart#L54\n\n\n\nTEST\u003dtests/standalone/io/http_headers_content_length_test.dart\nIssue: https://github.com/dart-lang/sdk/issues/60333\nChange-Id: Ic3bb9b8ec20f5b585c0ab122ce9f5b1263a6bf6f\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/549120\nCommit-Queue: Brian Quinlan \u003cbquinlan@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "41dcfa67a7b7160655c4b5920e627366bd1c2a68",
      "tree": "33b8e60b4389b820a8e78ab90c5f7e6d52f1af6b",
      "parents": [
        "34ad85bb335f3e0d7317bea1b5720caa3bd101ca"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Fri Oct 23 07:01:42 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 07:01:42 2026 -0700"
      },
      "message": "[modular_aot] Save R15 across leaf runtime calls\n\nIssue: https://github.com/dart-lang/sdk/issues/61635\nChange-Id: Ibec51380e716c1949d01a09767fd86003c98c8a7\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568520\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "34ad85bb335f3e0d7317bea1b5720caa3bd101ca",
      "tree": "aa5fb8d302157cb4d0c3731810dbf1f65c97a2f0",
      "parents": [
        "fef8103365f99017ad290211b50d2050e79532a2"
      ],
      "author": {
        "name": "Vasiliy Ditsyak",
        "email": "v.ditsyak@gmail.com",
        "time": "Fri Oct 23 04:02:19 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 04:02:19 2026 -0700"
      },
      "message": "[dart2wasm] Fix hashCode of records with 20 fields\n\nThe generated `hashCode` of a record class calls `Object.hash` with\nthe shape id and the fields. Thus the argument list holds\n1 + fields.length entries. The old guard compared `fields.length`\nwith 20. A record of 20 fields thus passed 21 arguments to\n`Object.hash`, which has 20 positional parameters.\n\nThe type flow analysis then crashed for each program that creates a\nrecord of 20 fields (positional or named), also when the program does\nnot call `hashCode`:\n\n  type \u0027Call\u0027 is not a subtype of type \u0027Parameter\u0027 in type cast\n  #0 Summary.apply (package:vm/transformations/type_flow/summary.dart)\n\nThe new guard compares the length of the argument list itself with\nthe limit of `Object.hash`. Thus it stays correct if the argument list\nchanges. Records of 20 fields now use `Object.hashAll`.\n\nThe new test makes records of 19, 20 and 21 fields, positional and\nnamed. It checks `\u003d\u003d`, `hashCode` and the use of the records as keys\nof a map and as elements of a set.\n\nTEST\u003dtests/language/records/hash_code_many_fields_test.dart\nR\u003dnatebiggs@google.com\n\nChange-Id: I712b808ab68e133103355c93b6f4d3edf7b131bc\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568461\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "fef8103365f99017ad290211b50d2050e79532a2",
      "tree": "b3c8ccd38d26e99f9e3b385ada5badd8009ce7c9",
      "parents": [
        "152d7238beb7d6aaea16e88ecfd7335bfeb00d68"
      ],
      "author": {
        "name": "Harshit Kumar",
        "email": "harshit7kr@gmail.com",
        "time": "Fri Oct 23 03:24:56 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 03:24:56 2026 -0700"
      },
      "message": "[vm, regexp] Guard backreference bounds checks against overflow\n\nCloses https://github.com/dart-lang/sdk/pull/64544\n\nGitOrigin-RevId: 0a6e5e662843d160b8f4a450091ff4d26c7f3bc6\nChange-Id: I2d81e0b0d13572355ea446f2cc96b099e619ab11\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/562220\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\n"
    },
    {
      "commit": "152d7238beb7d6aaea16e88ecfd7335bfeb00d68",
      "tree": "3c33365fe6442b39b706c9a982e03319f40967b9",
      "parents": [
        "f383acb837ba1e8e4c389681c104882d3cc62752"
      ],
      "author": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Fri Oct 23 02:17:19 2026 -0700"
      },
      "committer": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Fri Oct 23 02:17:19 2026 -0700"
      },
      "message": "[dart2wasm/dev] Add new dart2wasm-dev-linux-d8 running cfg_{dev,shared} tests\n\nChange-Id: I5f3e77c751ea652a18343debcbcc6f34581c01a9\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567400\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\nReviewed-by: Nicholas Shahan \u003cnshahan@google.com\u003e\n"
    },
    {
      "commit": "f383acb837ba1e8e4c389681c104882d3cc62752",
      "tree": "d7068dfdb62986cf4970072f8f07d7d76c7d2889",
      "parents": [
        "841463cec4412a2e8fda3e01af0fbeb0588267a8"
      ],
      "author": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Fri Oct 23 01:54:53 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 01:54:53 2026 -0700"
      },
      "message": "[dart2wasm/dev] Add testing infra for wasm dev compiler\n\nWe can build \u0026 run now via\n```\n% tools/build.py -m release dart2wasm_dev\n% tools/test.py -n wasm-dev-linux-d8 web/wasm/cfg_shared/greetings_test\n```\n(or pass `--build` to `tools/test.py`)\n\nWe put cfg tests into:\n\n* `tests/web/wasm/cfg`: dart2wasm using cfg\n* `tests/web/wasm/cfg_shared`: dart2wasm \u0026 dart2wasm_dev\n* `tests/web/wasm/cfg_dev`: dart2wasm_dev\n\nThis allows implementing CFG features (e.g. instance calls)\nin dart2wasm and test it (while the dev compiler doesn\u0027t\nsupport instance calls yet)\n\nWe delete the scaffolding `pkg/dart2wasm/test/dev_test.dart` test\nand add that tests/web/wasm/cfg_shared/greetings_test.dart\n\nChange-Id: I65bf055d0585a2dfd29c57995507c360e66aa1ba\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567340\nReviewed-by: Mark Zhou \u003cmarkzipan@google.com\u003e\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "841463cec4412a2e8fda3e01af0fbeb0588267a8",
      "tree": "841e950d001f04b6a129196760a7381aec444c42",
      "parents": [
        "93c13c2072a5c1e837ebe4a97c6380be7bb885ca"
      ],
      "author": {
        "name": "Slava Egorov",
        "email": "vegorov@google.com",
        "time": "Fri Oct 23 01:48:51 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 01:48:51 2026 -0700"
      },
      "message": "Update PR template.\n\nWe are preparing to disable PRs altogether.\n\nChange-Id: I3f2d365aae14846dabe030f0f9d307166a6a6964\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568460\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\n"
    },
    {
      "commit": "93c13c2072a5c1e837ebe4a97c6380be7bb885ca",
      "tree": "cf985772309f338d97401c3498da9cdd56231838",
      "parents": [
        "8d93617c38e8e183ecccb55c5cc702b32e4eb91d"
      ],
      "author": {
        "name": "Slava Egorov",
        "email": "vegorov@google.com",
        "time": "Fri Oct 23 01:34:32 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 01:34:32 2026 -0700"
      },
      "message": "Update CONTRIBUTING.md\n\nWe are preparing to disable PRs in the SDK repo.\n\nChange-Id: I302d508858893797560d5fdcd9a3629e6a6a6964\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568440\nReviewed-by: Alexander Thomas \u003cathom@google.com\u003e\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\n"
    },
    {
      "commit": "8d93617c38e8e183ecccb55c5cc702b32e4eb91d",
      "tree": "ebbb0dbd5cfdbcfcb51e292af8788e8c0253a9bd",
      "parents": [
        "7e81f13573bfab0e847c58a81669dda3a6cf042b"
      ],
      "author": {
        "name": "Sergey G. Grekhov",
        "email": "sgrekhov22@gmail.com",
        "time": "Fri Oct 23 01:01:40 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 01:01:40 2026 -0700"
      },
      "message": "[co19] Roll co19 to f29289bd67fb20604cef418534d73ab7731d01e1\n\n2026-10-22 sgrekhov22@gmail.com dart-lang/co19#3330. Add tests for extension that has no on-declaration (dart-lang/co19#4277)\n2026-10-22 sgrekhov22@gmail.com dart-lang/co19#3330. Add tests for generative constructors (dart-lang/co19#4276)\n2026-10-20 sgrekhov22@gmail.com dart-lang/co19#3182. Add one more test for augmenting constructors (dart-lang/co19#4275)\n2026-10-20 sgrekhov22@gmail.com dart-lang/co19#4173. Add additional UP tests for type parameter with no bound. Part 2. (dart-lang/co19#4274)\n2026-10-20 sgrekhov22@gmail.com dart-lang/co19#4173. Add more tests for `DOWN()` function (dart-lang/co19#4271)\n2026-10-19 sgrekhov22@gmail.com Fixes dart-lang/co19#4267. Add tests for null promotion of `this` (dart-lang/co19#4269)\n2026-10-19 sgrekhov22@gmail.com fixes dart-lang/co19#4272. Fix constructor in augmenting_constructors_A02_t14.dart (dart-lang/co19#4273)\n2026-10-16 sgrekhov22@gmail.com dart-lang/co19#4267. Fix test that use `this!` (dart-lang/co19#4268)\n2026-10-16 sgrekhov22@gmail.com dart-lang/co19#4173. Add additional UP tests for type parameter with no bound. Part 1. (dart-lang/co19#4266)\n\nR\u003dathom@google.com, eernst@google.com\n\nCq-Include-Trybots: luci.dart.try:analyzer-linux-release-try,dart2js-minified-linux-d8-try\nChange-Id: I6cf9a8bffc639b50d5285d56361a4eaaa454cc85\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568420\nReviewed-by: Erik Ernst \u003ceernst@google.com\u003e\nCommit-Queue: Alexander Thomas \u003cathom@google.com\u003e\nReviewed-by: Alexander Thomas \u003cathom@google.com\u003e\nAuto-Submit: Sergey Grekhov \u003csgrekhov22@gmail.com\u003e\n"
    },
    {
      "commit": "7e81f13573bfab0e847c58a81669dda3a6cf042b",
      "tree": "49f1d500e8eda5d8206a0f66f9d66103d48164d1",
      "parents": [
        "57cc3d78dc52670c959ffbdef2113cb62880c7ee"
      ],
      "author": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Fri Oct 23 00:55:36 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 00:55:36 2026 -0700"
      },
      "message": "[dart2wasm] Enable FinalizationRegistry test on browsers\n\nAlso fixes a bug in\n* standalone wasm embedder patch files (avoid failing covariance check\n  due to contra variance)\n* standalone test framwork (js embedder functions used wrong argument\n  order)\n\nCloses https://github.com/dart-lang/sdk/issues/53884\n\nChange-Id: I07af05b0323aaf6f428c32ebaf0f2f211779c766\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567963\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "57cc3d78dc52670c959ffbdef2113cb62880c7ee",
      "tree": "730f6d495c82eb4424f3f945808a26f08cedd3a0",
      "parents": [
        "1917189f0ef9f3c7a1b23cfd7fc444ef44158cc1"
      ],
      "author": {
        "name": "David Morgan",
        "email": "davidmorgan@google.com",
        "time": "Fri Oct 23 00:47:53 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Oct 23 00:47:53 2026 -0700"
      },
      "message": "[tests/io] Fix handle reuse flake in process_no_inherit_handle_test\n\nIn process_no_inherit_handle_test, the parent already verifies via\nNtQueryObject that the job object handleCount stays 1 after spawning\nthe child process. The child process also checked that the parent\u0027s\nnumerical handle value was null in the child, which fails whenever the\nchild VM allocates that uninherited handle table index for one of its\nown startup handles.\n\nRemove the handle table index check in the child and keep the child\nprocess alive until the parent has checked handleCount.\n\nBug: https://github.com/dart-lang/sdk/issues/64433\nChange-Id: I1383189966b48a03283a43ea84e9c141d4324576\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567900\nCommit-Queue: Morgan :) \u003cdavidmorgan@google.com\u003e\nReviewed-by: Nate Bosch \u003cnbosch@google.com\u003e\n"
    },
    {
      "commit": "1917189f0ef9f3c7a1b23cfd7fc444ef44158cc1",
      "tree": "fe2e931032db034eba03eb64041503a0e1c223cc",
      "parents": [
        "6cea95bd41e980d12f27d6cea2d28344fde85f7d"
      ],
      "author": {
        "name": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Thu Oct 22 19:23:43 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 19:23:43 2026 -0700"
      },
      "message": "Roll gn from f90c3d9df882 to 3ef636ac7c21\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/gn-dart-sdk\nPlease CC dart-engprod@google.com,dart-vm-gardener@rotations.google.com,dart-vm-team@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in gn: https://bugs.chromium.org/p/gn/issues/list\nTo file a bug in Dart SDK: https://github.com/dart-lang/sdk/issues\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nCq-Include-Trybots: luci.dart.try:dart-sdk-linux-try;luci.dart.try:dart-sdk-linux-arm64-try;luci.dart.try:dart-sdk-mac-try;luci.dart.try:dart-sdk-mac-arm64-try;luci.dart.try:dart-sdk-win-try\nChange-Id: I085db614efc3b573cf7e8c7eee7e46328ab78692\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568360\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nReviewed-by: Alexander Markov \u003calexmarkov@google.com\u003e\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\n"
    },
    {
      "commit": "6cea95bd41e980d12f27d6cea2d28344fde85f7d",
      "tree": "8ed37e486fdec1e28dea982e8ad6bdf27539b4ea",
      "parents": [
        "879b9f017727915a52f74ba35b280679a093376e"
      ],
      "author": {
        "name": "Nate Biggs",
        "email": "natebiggs@google.com",
        "time": "Thu Oct 22 17:12:46 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 17:12:46 2026 -0700"
      },
      "message": "[web] Update jsshell, Chrome and Firefox versions in DEPS\n\njsshell_tag: 157.0.1 -\u003e 158.0.1\nchrome_tag: 156.0.8078.12 -\u003e 157.0.8103.6\nfirefox_tag: 157.0.1 -\u003e 158.0.1\n\nUploaded by tools/roll_browsers.dart, see go/dart-engprod/browsers.md.\n\nR\u003dsra@google.com\n\nCq-Include-Trybots: dart/try:dart2js-linux-chrome-try,ddc-linux-chrome-try,dart2wasm-linux-chrome-try,dart2js-linux-firefox-try,ddc-linux-firefox-try,dart2wasm-linux-firefox-try\nChange-Id: I28102352fbdff0d83391e9ce39a824a2ccf6848b\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567740\nAuto-Submit: Nate Biggs \u003cnatebiggs@google.com\u003e\nReviewed-by: Stephen Adams \u003csra@google.com\u003e\nCommit-Queue: Nate Biggs \u003cnatebiggs@google.com\u003e\n"
    },
    {
      "commit": "879b9f017727915a52f74ba35b280679a093376e",
      "tree": "d78c49c2ca1880b7f3c97e3288826af8c008d9ff",
      "parents": [
        "1139dd5a14acf89cd3f8b1c9e8d209717a5bcfb1"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Thu Oct 22 16:53:54 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 16:53:54 2026 -0700"
      },
      "message": "[vm] Cleanup SynthesizedClassBit\n\nThis flag is only set in tests and for NativeFieldWrapperClass classes,\nand used only by dart:mirrors.\n\nTEST\u003dci\n\nChange-Id: Ic39ef8972870179b668f8adf24b2acbb902fe676\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566801\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\n"
    },
    {
      "commit": "1139dd5a14acf89cd3f8b1c9e8d209717a5bcfb1",
      "tree": "8b11d49e575387642fc3716f59599bf492e39275",
      "parents": [
        "bece79e83ea278d659343befdd2322977973c6d8"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Thu Oct 22 16:48:11 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 16:48:11 2026 -0700"
      },
      "message": "Also run lib/typed_data tests on QEMU.\n\nChange-Id: I848a58615079fb72f17cd0c53e387e77972f28b0\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/563080\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "bece79e83ea278d659343befdd2322977973c6d8",
      "tree": "bf5e9f32f0338a3fd2d1323aa5e4ed9807f8886d",
      "parents": [
        "eca468636e0f02edba0c3b716bb14daa947aa32e"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@google.com",
        "time": "Thu Oct 22 16:31:31 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 16:31:31 2026 -0700"
      },
      "message": "[corelib] Add List.unmodifiable type and isolation tests\n\nTest `List.unmodifiable` and `List.unmodifiableOf` for:\n\n- Runtime type reification on covariant upcasts (`List\u003cnum\u003e` from\n  `Iterable\u003cint\u003e` is not `List\u003cint\u003e`, while `const` and already\n  unmodifiable inputs keep their runtime type).\n- Isolation from post-construction mutations to growable, fixed,\n  and typed-data source lists.\n- `TypeError`s on invalid runtime element downcasts.\n\nChange-Id: I4f8e13e51fa16039478e400d8646a9c26ac0a82e\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568220\nReviewed-by: Lasse Nielsen \u003clrn@google.com\u003e\nCommit-Queue: Kevin Moore \u003ckevmoo@google.com\u003e\n"
    },
    {
      "commit": "eca468636e0f02edba0c3b716bb14daa947aa32e",
      "tree": "d283180dd380a259be97e90ffa7453dde7ceb215",
      "parents": [
        "51c5c80f96c1e69f4179d9fd21863f17e924110b"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Thu Oct 22 16:13:16 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 16:13:16 2026 -0700"
      },
      "message": "[modular_aot] Generate null handling in operator\u003d\u003d\n\nIssue: https://github.com/dart-lang/sdk/issues/61635\nChange-Id: I2563a805ade6b5d5a7505ab53d5a3b3c0a9d8c80\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568264\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\n"
    },
    {
      "commit": "51c5c80f96c1e69f4179d9fd21863f17e924110b",
      "tree": "3920886680f35f0ec0a7ff7e9948d9ee2fa41aa1",
      "parents": [
        "401076396cdaaf95b2a85f06909e34b793b64d70"
      ],
      "author": {
        "name": "bkonyi",
        "email": "bkonyi@google.com",
        "time": "Thu Oct 22 15:27:47 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 15:27:47 2026 -0700"
      },
      "message": "[dart_runtime_service] Decouple dart:io from core package entrypoint\n\n- Move `dart:io` and Shelf HTTP server sources into `lib/src/io/` and\n  export them from\n  `package:dart_runtime_service/dart_runtime_service_io.dart`\n  (`DTDManager`, `DevToolsUtils`, `DevFS`,\n  `DartDevelopmentServiceManager`, and `DartRuntimeServiceIoBackend`)\n  while keeping\n  `package:dart_runtime_service/dart_runtime_service.dart` web-safe.\n- Add generic `startServer`, `shutdownServer`, and `writeLogRecord`\n  hooks on `DartRuntimeServiceBackend` with web-safe defaults, make\n  `onServerStarted` parameterless, and move `OptionalHandler`,\n  `httpHandler`, Shelf handler construction, `dart:io` server binding,\n  and `stderr` logging onto the `DartRuntimeServiceIoBackend` mixin.\n- Track and cancel only `DartRuntimeService`\u0027s own `_logger.onRecord`\n  subscription in `shutdown()` instead of calling\n  `Logger.root.clearListeners()`.\n- Handle uncaught stream errors in `Client.initialize` via\n  `.catchError(...).whenComplete(cleanup)`.\n\nChange-Id: I85f68e8df7ea56cc7c4a4c11cf6456bdb17d969b\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/558260\nCommit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\nReviewed-by: Jonas Jensen \u003cjonasfj@google.com\u003e\n"
    },
    {
      "commit": "401076396cdaaf95b2a85f06909e34b793b64d70",
      "tree": "176c719059f8f3c7440dc2a37ff04243b6f6882c",
      "parents": [
        "893ed2658fa4588138811630b030ac141814210b"
      ],
      "author": {
        "name": "Nate Biggs",
        "email": "natebiggs@google.com",
        "time": "Thu Oct 22 15:23:08 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 15:23:08 2026 -0700"
      },
      "message": "[web] Add a tool to automate browser rolls\n\nAdds tools/roll_browsers.dart, which automates the browser and JS\nengine update process described in go/dart-engprod/browsers.md:\n\n1. Compares the Chrome, Firefox, d8, jsshell and jsc pins in DEPS with\n   the latest upstream releases and each engine\u0027s roll policy:\n   - Chrome (beta): major version bump or pin \u003e\u003d 14 days old.\n   - Firefox: major version bump or pin \u003e\u003d 14 days old.\n   - jsshell: same version as Firefox, rolled in the same CL.\n   - d8 and jsc: pin \u003e\u003d 30 days old.\n2. Requests CIPD packaging builds through the dart-eng tool proxy for\n   any new versions whose packages are missing, posts all of the MPA\n   approval links in a single Dart Web team chat message, and waits for\n   the builds to finish.\n3. Uploads a single DEPS roll CL with Auto-Submit and the trybots\n   relevant to the engines being rolled, adds whoever approved the MPA\n   requests as reviewers, and waits for the CL to be approved and land.\n   The CL is created in a temporary worktree under /tmp, so the local\n   checkout is never touched.\n\nEach run posts to one chat thread: it starts with the MPA approval\nlinks (or the roll CL if no builds were needed), and the roll CL, any\nfailures (including failed CQ dry runs and CQ runs) and a final message\nwhen the CL lands are posted as replies. Polling checks run every\nminute (or hourly after 3 hours without progress). Use --dry-run to see\nwhat would happen without any side effects.\n\nChange-Id: Ib50b8506b9f57faae2397ddd1fe8da774fc4b7fe\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/562340\nReviewed-by: Mark Zhou \u003cmarkzipan@google.com\u003e\nCommit-Queue: Nate Biggs \u003cnatebiggs@google.com\u003e\n"
    },
    {
      "commit": "893ed2658fa4588138811630b030ac141814210b",
      "tree": "f8ba014031fa1111881c26fcf9b921d8ca445dae",
      "parents": [
        "9b9d2231e4d5e7add6057d7902624baacc8e7e26"
      ],
      "author": {
        "name": "Nate Biggs",
        "email": "natebiggs@google.com",
        "time": "Thu Oct 22 15:15:32 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 15:15:32 2026 -0700"
      },
      "message": "[infra] Add presubmit check that stress_test_list.json entries exist\n\nruntime/tests/concurrency/stress_test_list.json lists test files by path.\nWhen tests are deleted or moved, stale entries are easy to miss. Add an\nupload/commit presubmit check that reports entries pointing to files that\nno longer exist. The check only runs when the list is modified or the CL\ndeletes files.\n\nSample error when a listed test is deleted:\n\n  ** Presubmit ERRORS: 1 **\n  runtime/tests/concurrency/stress_test_list.json lists files that do not\n  exist. Remove these entries (or update them if the tests were moved):\n\n  ***************\n  ../vm/dart/boxmint_test.dart\n  ***************\n\nTEST\u003dRan git cl presubmit with a CL deleting a listed test.\n\nChange-Id: Ifa4a349b75db3d7fc94d18495e1c09df8505653c\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568280\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Nate Biggs \u003cnatebiggs@google.com\u003e\n"
    },
    {
      "commit": "9b9d2231e4d5e7add6057d7902624baacc8e7e26",
      "tree": "ec216f37a7e4afa366e1300b947ecef72223b683",
      "parents": [
        "ceadab35dccfd7673880e1b1c2e19e7faaee2815"
      ],
      "author": {
        "name": "bkonyi",
        "email": "bkonyi@google.com",
        "time": "Thu Oct 22 15:03:05 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 15:03:05 2026 -0700"
      },
      "message": "Reland \"Consider pattern-introduced local variables non-obviously typed\"\n\nThis is a reland of commit 57129f5f6e671372454fa12823cf8c21749ce73b.\n\nThe original change was reverted due to flutter/packages analysis\nfailures on Flutter CI (Linux flutter_plugins). Fixes landed in\nflutter/packages#13362 and flutter/flutter#195068 rolls the pinned\npackages version in Flutter. The change itself is unchanged.\n\nOriginal change\u0027s description:\n\u003e Consider pattern-introduced local variables non-obviously typed\n\u003e\n\u003e The lint `specify_nonobvious_local_variable_types` flags some local\n\u003e variable declarations expressed as identifier patterns in a pattern\n\u003e in a declaration context, but only when the initializing expression\n\u003e has a static type which is not considered obvious.\n\u003e\n\u003e This CL changes the approach such that these identifier patterns are\n\u003e flagged in every case, no matter which initializing expression the\n\u003e pattern variable declaration has. This makes sense because the type\n\u003e of a getter of an object cannot be determined other than by looking\n\u003e up the class/mixin/... which is denoted by the object pattern.\n\u003e\n\u003e For example, the type of `x` is not obvious in `var C(:x) \u003d e;`,\n\u003e even in the case where `e` has an obvious type.\n\u003e\n\u003e A similar (though somewhat weaker) argument applies to other\n\u003e patterns. For example, `var [x] \u003d \u003cint\u003e[1];` declares an `x`\n\u003e whose type is `int`. This may seem obvious, but it is still a\n\u003e two-step process to detect it, and it\u0027s less obvious with a\n\u003e declaration like `var [x] \u003d myLocalVariable;` which would be given\n\u003e the same treatment. Hence, this CL considers all pattern-declared\n\u003e local variables non-obviously typed.\n\u003e\n\u003e Change-Id: I2d860b0acb08731de8457d79156c0c5fd7b85d71\n\u003e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/548220\n\u003e Reviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n\u003e Reviewed-by: Ben Konyi \u003cbkonyi@google.com\u003e\n\u003e Commit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\n\nChange-Id: I9e0cd04901da37ac2599528b6f22734b9d727aa8\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568020\nCommit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "ceadab35dccfd7673880e1b1c2e19e7faaee2815",
      "tree": "a8a5a48f2684055029b3e24855809d8315323154",
      "parents": [
        "7624dc478a1cdb975f6d81eb1ec6b033495aa984"
      ],
      "author": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Thu Oct 22 14:26:17 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 14:26:17 2026 -0700"
      },
      "message": "[tfa] Track record field types in TFA\n\n(Measured on a large g3 app, time and memory are around the same)\n\nCurrently TFA treats all records of the same shape as the same class and\nunions types flowing into those record fields. Now we can propagate\nrecord types with specific field types.\n\nThis means we no longer loose type information when returning records\nand destructuring them on the call site (a common thing to do in code\nwhen one wants to return multiple return values but does not want to\nmake a separate class).\n\nThe motivation for this change is that recent refactorings made many\nKernel AST nodes use fixed length lists and we want TFA to infer that\nthey are fixed length (i.e. `_Array\u003c...\u003e` which is a base class of fixed\nlength lists and constant lists). Though the CFE code uses record return\nvalues which made TFA unable to track the types.\n\nWith this change TFA will now infer on the kernel AST that the following\nfields are `_Array\u003c...\u003e`s:\n\n  * `Arguments.positionals`\n  * `Arguments.named`\n  * `ListLiteral.expressions`\n\n(Fields of other classes in CFE internal code also get more precise)\n\nTEST\u003dpkg/vm/testcases/transformations/type_flow/transformer/records.dart\nTEST\u003dpkg/vm/testcases/transformations/type_flow/transformer/records_dart2wasm.dart\n\nChange-Id: I4fc6fda36cc61014caea0b45ceb6709591967d2e\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/563520\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "7624dc478a1cdb975f6d81eb1ec6b033495aa984",
      "tree": "954bf3244f3b66be3bbc21c798d9df20952731f3",
      "parents": [
        "470e3430c6c1d22590b5e954879ca7313d320a47"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Thu Oct 22 14:07:29 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 14:07:29 2026 -0700"
      },
      "message": "[build] Fix --check-clean for debian_package target.\n\nCq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-linux-riscv64-try,dart-sdk-linux-arm64-try\nChange-Id: Ibd4afe0d7a4ab97f6c14b2bdc5b7eef0aa096451\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568263\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "470e3430c6c1d22590b5e954879ca7313d320a47",
      "tree": "4ade5e98d801043f593b92915fb0fbc130302990",
      "parents": [
        "5e730823a65ca1f21c05a4a5fa4a222e5f892a0d"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Thu Oct 22 12:58:14 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 12:58:14 2026 -0700"
      },
      "message": "UNDR. Resolve cascade properties of function-type aliases on Type.\n\nA cascade evaluates its target to an object, so in `F..hashCode`, with\n`F` a function-type alias, the section reads `hashCode` of the `Type`\nobject, as `C..hashCode` does for a class `C`. But\n`_resolveCascadeExpressionReceiver` reported\n`undefined_static_member_read` or `undefined_static_member_write` for\nevery cascade target that is a `TypeLiteral` of a function type, so\n`F..hashCode`, and `F..foo \u003d 0` with an extension setter on `Type`, were\nerrors.\n\nThe check was written for `Fn\u003cint\u003e.foo`, resolved as a property access\nof a `TypeLiteral`. Now `F.foo` and `Fn\u003cint\u003e.foo` are resolved through\nother paths, which still report these errors, and only cascade targets\nreach this method. Remove the check.\n\nChange-Id: I39896373193c6e13a55791cbbe557af5214300d7\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568200\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "5e730823a65ca1f21c05a4a5fa4a222e5f892a0d",
      "tree": "8ed6cfb307be6d2dbf332d981d691350fe52ed59",
      "parents": [
        "841b308bebe3de9bc3bfa554c3ed3d85c3a71b64"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Thu Oct 22 12:24:44 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 12:24:44 2026 -0700"
      },
      "message": "[build] Remove local action pools.\n\nSiso natively understands that different limits apply to local and remote actions.\n\nChange-Id: I57c87e87f098336d469ac5bcb32c3a3d667de77c\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568160\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "841b308bebe3de9bc3bfa554c3ed3d85c3a71b64",
      "tree": "f0c145c492f2c8e7a51cef630a8fcc8c6f4ba6c9",
      "parents": [
        "1e094430665354cf6b8b72381bab14799c0c1fe4"
      ],
      "author": {
        "name": "paulberry",
        "email": "paulberry@google.com",
        "time": "Thu Oct 22 12:18:36 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 12:18:36 2026 -0700"
      },
      "message": "[parser] Don\u0027t pass a stale `default` keyword to later switch cases.\n\n`Parser.parseSwitchBlock` declared `defaultKeyword` and\n`colonAfterDefault` outside its loop over switch cases, so that it\ncould report `switchHasMultipleDefaults` and\n`switchHasCaseAfterDefault`, but never reset them. As a result, every\ncase after a `default:` was reported to `Listener.endSwitchCase` as if\nit also contained the same `default` clause.\n\nIn the analyzer, this caused `AstBuilder` to add a duplicate\n`SwitchDefault` (with an out-of-order offset) to each later case\ngroup, which tripped an assertion in flow analysis. In both the\nanalyzer and the CFE, it caused spurious errors about pattern\nvariables being unavailable due to a `default` case, e.g. for\n`default: ...; case int x: print(x);`.\n\nThe fix tracks whether a `default` clause has been seen in a separate\n`hasDefault` variable, and scopes `defaultKeyword` and\n`colonAfterDefault` to a single switch case.\n\nTAG\u003dagy\nCONV\u003d85422cc3-0ada-4ae8-9eb1-788bcab8d995\n\nChange-Id: I760b740519b17afbe0c0035a0cf42d316a6a6964\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567241\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n"
    },
    {
      "commit": "1e094430665354cf6b8b72381bab14799c0c1fe4",
      "tree": "d84bd4fcf3e2b1a05639ffb7fc536a5da3e73db6",
      "parents": [
        "34c25d119329f9e6ed81875571294fc3feb1a6e3"
      ],
      "author": {
        "name": "Danny Tuppeny",
        "email": "danny@tuppeny.com",
        "time": "Thu Oct 22 11:52:40 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 11:52:40 2026 -0700"
      },
      "message": "[analysis_server] Ensure LSP handlers check for cancellation/file modifications at appropriate times\n\nI audited all of the LSP handlers to ensure they are checking for both cancellation and file modifications at appropriate places (eg. before/after any expensive async work).\n\nThis CL updates most of them, but there are a few remaining that are more complex that I\u0027ll handle separately (they are tracked in the checklist on https://github.com/dart-lang/sdk/issues/64643).\n\nChange-Id: Ie186858bcd6f01fcb5a947d3cd485f32e3566a0f\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567402\nCommit-Queue: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "34c25d119329f9e6ed81875571294fc3feb1a6e3",
      "tree": "7ac23c8e0b920856b69b3885cc754f22e6efa2b0",
      "parents": [
        "2cd8dd128d7a8e8df30536b81088fed2968da9b3"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@google.com",
        "time": "Thu Oct 22 11:40:33 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 11:40:33 2026 -0700"
      },
      "message": "[analysis_server] Support bulk fix for removed library URIs\n\n`diag.uriDoesNotExist` was registered for IDE quick fixes in\n`fix_internal.dart` when `library:` `replacedBy` transforms landed,\nleaving `dart fix` unable to rewrite imports or exports once a\ndeprecated library is removed.\n\nFixes https://github.com/dart-lang/sdk/issues/64694\n\nChange-Id: Id892ebb132e9b3b977392773a274985f067ce511\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567581\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nCommit-Queue: Kevin Moore \u003ckevmoo@google.com\u003e\n"
    },
    {
      "commit": "2cd8dd128d7a8e8df30536b81088fed2968da9b3",
      "tree": "4d99a208fa6fd4478d2eacf923e7a6a2a37af74b",
      "parents": [
        "211a7598567b19dd96c6c999940bce32f5307a96"
      ],
      "author": {
        "name": "paulberry",
        "email": "paulberry@google.com",
        "time": "Thu Oct 22 11:19:21 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 11:19:21 2026 -0700"
      },
      "message": "[analyzer] Verify shared message examples against the analyzer.\n\nAdds `verify_shared_message_examples_test.dart`, which runs each\n`script`, `statement`, `expression`, and `declaration` example in\n`pkg/_fe_analyzer_shared/messages.yaml` through the analyzer, using\nthe example decoding that is now shared with the CFE\u0027s\n`messages_suite.dart`.\n\nEach example must cause the analyzer to report the message\u0027s\ndiagnostic exactly once (unless `exampleAllowMultipleReports` is\nset), and must not cause any other errors (unless\n`exampleAllowOtherCodes` is set). Diagnostics that aren\u0027t errors are\nignored. Experiments listed in the message\u0027s `experiments` key are\nenabled, except for those that are on by default. `bytes` examples\nare skipped for now. An exception thrown while analyzing an example\n(such as an assertion failure) is reported as a failure of that\nexample, rather than aborting the test.\n\nExamples that currently fail are listed in the test\u0027s\n`knownFailures` map, along with the reason. Examples that fail only\nwhen assertions are enabled are listed in `knownAssertionFailures`\ninstead. The test fails if an entry in either map starts passing or\nrefers to an example that doesn\u0027t exist, so the lists can\u0027t go stale.\n\nTAG\u003dagy\nCONV\u003d4eb64208-687b-4aaf-987f-1880c964b745\n\nChange-Id: I0fc403c0c16cb94185cb521a02b40d6d6a6a6964\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566725\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "211a7598567b19dd96c6c999940bce32f5307a96",
      "tree": "5bc23fee05540ec426ed0a11e4ea548caab5574a",
      "parents": [
        "e7e1eccd91209ec66656f2a18c60d345fc04af35"
      ],
      "author": {
        "name": "Danny Tuppeny",
        "email": "danny@tuppeny.com",
        "time": "Thu Oct 22 11:18:17 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 11:18:17 2026 -0700"
      },
      "message": "[analysis_server] Add additional custom semantic token modifiers\n\nIntelliJ currently allows users to customise colouring of things like mixins, extension types, extensions differently to classes. Before this change, LSP just maps them all to the same type (`class`) so they cannot be mapped.\n\nThis adds some additional custom modifiers (because they are not standard LSP types) for these.\n\nFixes https://github.com/dart-lang/sdk/issues/64621\n\nChange-Id: Ib4635d96bf49730628815beed6ddc3fb5b494578\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566580\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nCommit-Queue: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "e7e1eccd91209ec66656f2a18c60d345fc04af35",
      "tree": "c339357e1ebca9b82ec1cbfc46a58cafa6d9965d",
      "parents": [
        "c9b29c0e5b7ad7c44fb571254387f004840f71a8"
      ],
      "author": {
        "name": "Komoszek",
        "email": "komoszek10@gmail.com",
        "time": "Thu Oct 22 11:07:05 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 11:07:05 2026 -0700"
      },
      "message": "[analyzer] Fix finding cross-file references to operators\n\nR\u003djohnniwinther@google.com\n\nFixes: #64629\nChange-Id: Ie971955b360f641a3cddfa69e3732c5d25f93254\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/565940\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\nAuto-Submit: Łukasz Komoszyński \u003ckomoszek10@gmail.com\u003e\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "c9b29c0e5b7ad7c44fb571254387f004840f71a8",
      "tree": "74c17c4910f0155d3047ac43b49953bab63c6cfa",
      "parents": [
        "824cfa18fcf6ed93da7593a59c10ed4c1f5bda90"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Thu Oct 22 10:57:34 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 10:57:34 2026 -0700"
      },
      "message": "[build] Remove non-siso RBE support for Linux and Windows ARM64.\n\nChange-Id: Icf901e0607ff9b3ce1748dad77a6f75cc2e90d89\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566680\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "824cfa18fcf6ed93da7593a59c10ed4c1f5bda90",
      "tree": "cdc675281cb4499899f3f424c8f4ea217617d961",
      "parents": [
        "f43be80904b3633dea91f2f46b2eeddfa59714bd"
      ],
      "author": {
        "name": "Danny Tuppeny",
        "email": "danny@tuppeny.com",
        "time": "Thu Oct 22 10:56:01 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 10:56:01 2026 -0700"
      },
      "message": "[analysis_server] Move more LSP handlers over to using checkAbort() helpers\n\n+ accept an `OperationPerformance` to retain behaviour of some handlers that would time fetching the AST.\n\nThis is more work towards https://github.com/dart-lang/sdk/issues/64643\n\nChange-Id: I94e939d33990ac667c54f55a0cdd6011bc8587e8\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567401\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nCommit-Queue: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "f43be80904b3633dea91f2f46b2eeddfa59714bd",
      "tree": "55f96a812138d7d87b2f09df7a5073bd9a8a87f1",
      "parents": [
        "16734b8466ab2616729e8e1f1e280ea5f3502486"
      ],
      "author": {
        "name": "Sam Rawlins",
        "email": "srawlins@google.com",
        "time": "Thu Oct 22 10:49:29 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 10:49:29 2026 -0700"
      },
      "message": "DAS: escape some more values in the status pages\n\nChange-Id: I706a352571f411a07eb7b614244288a977dfb6aa\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567580\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nCommit-Queue: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "16734b8466ab2616729e8e1f1e280ea5f3502486",
      "tree": "6cebaf32dde8304f2bc5f3f332b3ef36e570b2c2",
      "parents": [
        "efc8a510dd3d220db4e9acff327ba2d03b3a1c9e"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Thu Oct 22 10:30:18 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 10:30:18 2026 -0700"
      },
      "message": "[build, siso] Build wasm_dev_rt locally.\n\nChange-Id: I34378ff1c2c952f5e191dd5891f9e24c679e298c\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568120\nReviewed-by: Nate Biggs \u003cnatebiggs@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n"
    },
    {
      "commit": "efc8a510dd3d220db4e9acff327ba2d03b3a1c9e",
      "tree": "e3134adf58a731d7ae411573d54d25f4ad58664a",
      "parents": [
        "a458f2545b2316b3644f46f39cdd558c797ee8c8"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@google.com",
        "time": "Thu Oct 22 09:24:25 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 09:24:25 2026 -0700"
      },
      "message": "[vm/gn] Fix hyphenated source filename in gen_regexp_special_case\n\nCommit e443b89f238 added runtime/vm/regexp/gen-regexp-special-case.cc\nwith hyphens while listing regexp/gen_regexp_special_case.cc with\nunderscores in runtime/vm/BUILD.gn.\n\nTEST\u003dtools/build.py -m release -a x64 gen_regexp_special_case\n\nChange-Id: Ic18e3f066af65d50f4261a858cdb93c13d4291fb\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567180\nCommit-Queue: Alexander Aprelev \u003caam@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nAuto-Submit: Kevin Moore \u003ckevmoo@google.com\u003e\n"
    },
    {
      "commit": "a458f2545b2316b3644f46f39cdd558c797ee8c8",
      "tree": "8affb8829c7dbbc9fb358e472947ab93b7368edb",
      "parents": [
        "001f2f4caa055ddf59100fc4794ac61fb7c4dfa6"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Thu Oct 22 08:58:57 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 08:58:57 2026 -0700"
      },
      "message": "Fine. Resolve compound assignment operators without a setter lookup.\n\nFor `a +\u003d 0`, `AssignmentExpressionResolver` looked up the operator `+`\nwith `hasWrite: true`, as if it were a property. So\n`TypePropertyResolver` also looked up the interface member `+\u003d`, a\nstatic setter for recovery, and `+` a second time. An operator has no\nsetter, so these lookups never found anything, but two of them recorded\nrequirements that can never fail, `interfaces A methods +\u003d: \u003cnull\u003e` and\n`instances A requestedDeclaredSetters +\u003d: \u003cnull\u003e`, which were stored\nand checked whenever the library was reused.\n\nLook up the operator with `hasWrite: false`, as binary operators and\n`++`/`--` already do. Resolution does not change. The new test checks\nthat `a +\u003d 0` requires only `+`, and is invalidated when `operator +`\nchanges.\n\nChange-Id: I973bfa3e5b318f3939908d7dec60d7a60965c06f\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567641\nReviewed-by: Johnni Winther \u003cjohnniwinther@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "001f2f4caa055ddf59100fc4794ac61fb7c4dfa6",
      "tree": "bd12fb38f0ee9d813cce844057aee893b13d298a",
      "parents": [
        "40c259b34c1491f76dc6e48a64076d91ae430f50"
      ],
      "author": {
        "name": "Ryan Macnak",
        "email": "rmacnak@google.com",
        "time": "Thu Oct 22 08:22:34 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 08:22:34 2026 -0700"
      },
      "message": "[build] Update RBE container image.\n\nDebian 11 reached end of LTS.\n\nChange-Id: I59da03a65ada6906320d34b62a071bbeb33c5237\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566740\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\nReviewed-by: Alexander Thomas \u003cathom@google.com\u003e\n"
    },
    {
      "commit": "40c259b34c1491f76dc6e48a64076d91ae430f50",
      "tree": "a4e878cefbdc4f34c86160d2054fc7f162485815",
      "parents": [
        "29d433679a8df908dddad18ddefe16dce73a411e"
      ],
      "author": {
        "name": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "dart-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Thu Oct 22 08:09:31 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 08:09:31 2026 -0700"
      },
      "message": "Roll BoringSSL from 5b83e5d1abf0 to c7eb007fd106 (53 revisions)\n\nhttps://boringssl.googlesource.com/boringssl.git/+log/5b83e5d1abf0..c7eb007fd106\n\n2026-10-22 chlily@google.com Avoid Windows cross-dll constexpr issue in digest_test.cc\n2026-10-22 xfding@google.com crypto: Move statics into anonymous namespace, Round 2\n2026-10-22 xfding@google.com crypto: Put more statics into anonymous namespace\n2026-10-22 xfding@google.com crypto/evp: Export SHAKE256 and TurboSHAKE256 as EVP_MD\n2026-10-21 jjpat@google.com Precompute the PK.seed SHA-256 state in SLH-DSA-SHA2\n2026-10-21 chlily@google.com crypto/x509 MTC: Allow empty cosignature values in MTCProof\n2026-10-21 xfding@google.com rust/bssl-tls: Allow libraries to pick alert when cert_cb fails\n2026-10-20 davidben@google.com Update presubmit.yml per review comments\n2026-10-20 davidben@google.com Remove odd special case around policy validation\n2026-10-20 davidben@google.com Report X509_V_ERR_CERT_CHAIN_TOO_LONG if the chain was too long\n2026-10-20 davidben@google.com X509_V_FLAG_CRL_CHECK_ALL should skip the trust anchor\n2026-10-20 davidben@google.com Remove dead code for picking a CRL issuer\n2026-10-20 davidben@google.com Rewrite the path builder\n2026-10-20 davidben@google.com Test X509_V_FLAG_CRL_CHECK_ALL\n2026-10-20 davidben@google.com Update MODULE.bazel for 0.20261020.0\n2026-10-20 davidben@google.com Block a handful of intermediate certificates\n2026-10-20 chlily@google.com Rename \"agents\" directory (containing AI skills) to \"_agents\"\n2026-10-20 tomhughes@chromium.org rand: Fix double-free on thread-local failure.\n2026-10-19 chlily@google.com EVP_HPKE_KEM: Align HPKE error codes with EVP_KEM\n2026-10-19 chlily@google.com EVP_HPKE_KEM: Clean up legacy KEM implementation hooks\n2026-10-19 davidben@google.com Test various odd cases when the target certificate is in the trust store\n2026-10-19 davidben@google.com Test X509_verify_cert in two ways\n2026-10-19 davidben@google.com Test some special error codes when we cannot build a path\n2026-10-19 chlily@google.com Export EVP_KEMs corresponding to DHKEMs\n2026-10-19 chlily@google.com EVP_HPKE_KEM: Implement DHKEM(P256, HKDF-SHA256) using EVP_KEM_DHKEM\n2026-10-19 chlily@google.com EVP_HPKE_KEM: Implement DHKEM(X25519, HKDF-SHA256) using EVP_KEM_DHKEM\n2026-10-19 davidben@google.com Also test that EVP_PKEY_from_ec_private_scalar rejects zero\n2026-10-19 agl@imperialviolet.org SLH-DSA: SHAKE variants are not approved.\n2026-10-19 davidben@google.com x509_test: Fix some style mishaps\n2026-10-18 xfding@google.com rust/bssl-crypto: CPace support\n2026-10-18 jjpat@google.com Use lazy reduction and parallel ExpandMask in ML-DSA\n2026-10-18 xfding@google.com rust: bssl-tls: Allow recognition of deprecated protocol version\n2026-10-18 jjpat@google.com Use lazy reduction in ML-KEM matrix-vector products\n2026-10-18 davidben@google.com Make X509_check_trust and X509_check_purpose const\n2026-10-18 xfding@google.com ssl: Reset cert_cb back to unset\n2026-10-18 davidben@google.com Const-correct a bunch more functions\n2026-10-17 xfding@google.com crypto/evp: Add SHA3-384\n2026-10-17 davidben@google.com Const-correct X509_STORE_add_{cert,crl}\n2026-10-16 davidben@google.com Mark x509v3_cache_extensions as const\n2026-10-16 davidben@google.com Pass depth explicitly into CRL functions\n2026-10-16 davidben@google.com Remove current_crl_issuer and current_crl_score\n2026-10-16 davidben@google.com Remove X509_STORE_CTX_get0_current_crl\n2026-10-16 davidben@google.com Use UniquePtr some more in CRL handling\n2026-10-16 davidben@google.com Make most verify sites fill in current_cert implicitly\n2026-10-16 xfding@google.com crypto/evp: Add SHA3-256 and SHA3-512\n2026-10-16 xfding@google.com mem: Constify all APIs wherever it applies\n2026-10-16 xfding@google.com crypto/asn1: Rectify the length type of ASN1_STRING\n2026-10-15 xfding@google.com crypto/asn1: Assert on negative length value\n2026-10-15 davidben@google.com Remove now unnecessary out-of-line ctors and dtors\n2026-10-15 davidben@google.com Rewrite internal_verify\n2026-10-15 davidben@google.com No-op X509_V_FLAG_CHECK_SS_SIGNATURE\n2026-10-15 chlily@google.com Fold SSL_CTX_set_grease_sigalgs_enabled into SSL_CTX_set_grease_enabled\n2026-10-15 chlily@google.com crypto/x509 MTC: Update to draft -07\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/boringssl-dart-sdk\nPlease CC dart-engprod@google.com,dart-vm-gardener@rotations.google.com,dart-vm-team@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in BoringSSL: https://crbug.com/boringssl/new\nTo file a bug in Dart SDK: https://github.com/dart-lang/sdk/issues\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: dart-vm-gardener@rotations.google.com\nChange-Id: I0cdb162543e86608c22b980d0130638cea9dc6cf\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/568000\nReviewed-by: Alexander Markov \u003calexmarkov@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "29d433679a8df908dddad18ddefe16dce73a411e",
      "tree": "1658937032ad6f8ec524baeb4bc6451263793758",
      "parents": [
        "ab86da44ed804f3a4177492f6588a7c07cb4c27c"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Thu Oct 22 08:03:50 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 08:03:50 2026 -0700"
      },
      "message": "Revert \"Consider pattern-introduced local variables non-obviously typed\"\n\nThis reverts commit 57129f5f6e671372454fa12823cf8c21749ce73b.\n\nReason for revert: broke Flutter head-head bot and Dart -\u003e Flutter rolls\n\nFailure Link:\nhttps://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket/8667241881598828081/+/u/Run_flutter_plugins_tests/stdout\nhttps://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8667237201574334369/+/u/run_test.dart_for_flutter_plugins_shard_and_subshard_analyze/stdout\n\nOriginal change\u0027s description:\n\u003e Consider pattern-introduced local variables non-obviously typed\n\u003e\n\u003e The lint `specify_nonobvious_local_variable_types` flags some local\n\u003e variable declarations expressed as identifier patterns in a pattern\n\u003e in a declaration context, but only when the initializing expression\n\u003e has a static type which is not considered obvious.\n\u003e\n\u003e This CL changes the approach such that these identifier patterns are\n\u003e flagged in every case, no matter which initializing expression the\n\u003e pattern variable declaration has. This makes sense because the type\n\u003e of a getter of an object cannot be determined other than by looking\n\u003e up the class/mixin/... which is denoted by the object pattern.\n\u003e\n\u003e For example, the type of `x` is not obvious in `var C(:x) \u003d e;`,\n\u003e even in the case where `e` has an obvious type.\n\u003e\n\u003e A similar (though somewhat weaker) argument applies to other\n\u003e patterns. For example, `var [x] \u003d \u003cint\u003e[1];` declares an `x`\n\u003e whose type is `int`. This may seem obvious, but it is still a\n\u003e two-step process to detect it, and it\u0027s less obvious with a\n\u003e declaration like `var [x] \u003d myLocalVariable;` which would be given\n\u003e the same treatment. Hence, this CL considers all pattern-declared\n\u003e local variables non-obviously typed.\n\u003e\n\u003e Change-Id: I2d860b0acb08731de8457d79156c0c5fd7b85d71\n\u003e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/548220\n\u003e Reviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n\u003e Reviewed-by: Ben Konyi \u003cbkonyi@google.com\u003e\n\u003e Commit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\n\nChange-Id: I6b909147d8feb6a27f208995db33a3271fae5923\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567980\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\nReviewed-by: Erik Ernst \u003ceernst@google.com\u003e\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\nBot-Commit: rubber-stamper@appspot.gserviceaccount.com \u003crubber-stamper@appspot.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "ab86da44ed804f3a4177492f6588a7c07cb4c27c",
      "tree": "1b4fe091d60564e2652af69b3f3b502390dd95f3",
      "parents": [
        "8a5df9b8559fc3701856afd6daccd4c015c6f88f"
      ],
      "author": {
        "name": "David Morgan",
        "email": "davidmorgan@google.com",
        "time": "Thu Oct 22 07:39:29 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 07:39:29 2026 -0700"
      },
      "message": "Reland \"[io] Close the socket when a secure connect is cancelled mid-handshake\"\n\nThis is a reland of commit 09d31ee55b547e9f05c75cc7bd3fc1b347faa0c8\n\nIt was reverted because four standalone/io tests crashed on\nvm-modaot-mac-debug-arm64: the modular AOT snapshot did not carry the\nasync modifier of local functions in platform libraries, so the async\nlocal function added here was not suspendable when resumed with an\nexception. https://dart-review.googlesource.com/c/sdk/+/559120 now\nserializes the modifier. The change itself is unchanged.\n\nOriginal change\u0027s description:\n\u003e [io] Close the socket when a secure connect is cancelled mid-handshake\n\u003e\n\u003e The ConnectionTask returned by RawSecureSocket.startConnect, and so by\n\u003e SecureSocket.startConnect, only cancelled the TCP connect. Once TCP had\n\u003e connected, cancel did nothing: if the TLS handshake then stalled, the\n\u003e socket leaked and kept the isolate alive forever.\n\u003e\n\u003e HttpClient.close and HttpClient.connectionTimeout both rely on this\n\u003e cancel, so a server that accepts TCP and never answers the handshake\n\u003e hung process exit. This is how the `dart` CLI hangs at exit on some\n\u003e networks, while sending analytics: `dart format` on a one-line file\n\u003e never exited; with this change it exits in 0.33 s.\n\u003e\n\u003e Now cancel also closes the connected socket and completes the task\u0027s\n\u003e future with a SocketException. Closing the socket alone does not\n\u003e complete the handshake future, so the task\u0027s future is completed\n\u003e directly. Cancel after the handshake has completed still does nothing.\n\u003e\n\u003e CoreLibraryReviewExempt: VM-specific dart:io implementation change.\n\u003e Bug: https://github.com/dart-lang/sdk/issues/64386\n\u003e Change-Id: I147d97ea2873e1da8e04392adf4d4312dc387092\n\u003e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/556860\n\u003e Reviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n\u003e Commit-Queue: Morgan :) \u003cdavidmorgan@google.com\u003e\n\nCoreLibraryReviewExempt: VM-specific dart:io implementation change.\nBug: https://github.com/dart-lang/sdk/issues/64386\nChange-Id: Ibe67c1e4d6c51e69d6647ca3bcaef31093fb13bb\nCq-Include-Trybots: luci.dart.try:vm-modaot-mac-debug-arm64-try\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567802\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\nCommit-Queue: Morgan :) \u003cdavidmorgan@google.com\u003e\n"
    },
    {
      "commit": "8a5df9b8559fc3701856afd6daccd4c015c6f88f",
      "tree": "079de3e35664d6b6ddb994f7b2e9bffc534fd8ad",
      "parents": [
        "3ee784c400517b44f4865531d1054c3df4363c9a"
      ],
      "author": {
        "name": "Jonas Finnemann Jensen",
        "email": "jonasfj@google.com",
        "time": "Thu Oct 22 07:26:01 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 07:26:01 2026 -0700"
      },
      "message": "Prepare for pkg/dartpad release v0.1.4\n\nBundle `cupertino_icons` when running `dart run dartpad setup flutter`.\n\nPUBLISH\u003ddartpad-v0.1.4\n\nChange-Id: Ieafe184ce20de3fa3377911d00d0ce8b6764e769\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567940\nReviewed-by: Michael Goderbauer \u003cgoderbauer@google.com\u003e\nCommit-Queue: Jonas Jensen \u003cjonasfj@google.com\u003e\n"
    },
    {
      "commit": "3ee784c400517b44f4865531d1054c3df4363c9a",
      "tree": "4654ce6ceb4b4e303efc1eb0bffd0c44c6761754",
      "parents": [
        "22f9a12d00e0ae5201c5ad4d5350e55eb63cc6e1"
      ],
      "author": {
        "name": "Lucas Hild",
        "email": "20486366+LucasHild@users.noreply.github.com",
        "time": "Thu Oct 22 04:43:49 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 04:43:49 2026 -0700"
      },
      "message": "[dart:io] Use Conscrypt APEX root store on Android 14+\n\nCloses https://github.com/dart-lang/sdk/pull/64696\n\nGitOrigin-RevId: 2ae22179ef4a0d1d231dbd087131db2f83a3047d\nChange-Id: I61b524070ba141afe7ea05a37b10841272ac74b6\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567800\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\n"
    },
    {
      "commit": "22f9a12d00e0ae5201c5ad4d5350e55eb63cc6e1",
      "tree": "656c0c2451911d37cfc1248d47123d2ea1db318c",
      "parents": [
        "a2ff6a1797b6c2ae6c95a5ff5c5078859dfdae2f"
      ],
      "author": {
        "name": "Ivan Inozemtsev",
        "email": "iinozemtsev@google.com",
        "time": "Thu Oct 22 04:35:52 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 04:35:52 2026 -0700"
      },
      "message": "[infra] Remove iinozemtsev from OWNERS_GOOGLE3 and OWNERS_INFRA\n\nChange-Id: Ifced7152a7b33d611f4e157ac9c18f56d3cab48d\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567821\nAuto-Submit: Ivan Inozemtsev \u003ciinozemtsev@google.com\u003e\nCommit-Queue: Alexander Thomas \u003cathom@google.com\u003e\nReviewed-by: Alexander Thomas \u003cathom@google.com\u003e\n"
    },
    {
      "commit": "a2ff6a1797b6c2ae6c95a5ff5c5078859dfdae2f",
      "tree": "20e2afbb8925aedb2494c1f5a80efa99dc578c82",
      "parents": [
        "27559b2943618606be788539a044e264ae7510c1"
      ],
      "author": {
        "name": "Jonas Finnemann Jensen",
        "email": "jonasfj@google.com",
        "time": "Thu Oct 22 03:31:43 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 03:31:43 2026 -0700"
      },
      "message": "Prepare for pkg/dartpad release v0.1.3\n\nSupport the `kernel/ddc/canary/dart_sdk.js` layout in `flutter_web_sdk`\nwhen running `dart run dartpad setup flutter`.\n\nPUBLISH\u003ddartpad-v0.1.3\n\nChange-Id: Ie76071547b25fd6d7cfd049f765f749f8ad94c68\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567822\nCommit-Queue: Jonas Jensen \u003cjonasfj@google.com\u003e\nAuto-Submit: Jonas Jensen \u003cjonasfj@google.com\u003e\nCommit-Queue: Michael Goderbauer \u003cgoderbauer@google.com\u003e\nReviewed-by: Michael Goderbauer \u003cgoderbauer@google.com\u003e\n"
    },
    {
      "commit": "27559b2943618606be788539a044e264ae7510c1",
      "tree": "bc9bc039601186ffdd9993d4b982d224df47f88d",
      "parents": [
        "eb9c7b0c3ec493192be76d65c06f7bdee4d4687d"
      ],
      "author": {
        "name": "Braedon Schmidt",
        "email": "braedons@google.com",
        "time": "Thu Oct 22 02:13:44 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 02:13:44 2026 -0700"
      },
      "message": "Fix the `prefer_is_not_empty` lint rule for `ListQueue`s.\n\nThe rule was previously checking for the presence of `isNotEmpty` using\n`getGetter`, which does not catch inherited members. Since `ListQueue`\noverrode `isEmpty` but relied on the inherited `isNotEmpty`\nimplementation, the linter didn\u0027t identify it as an applicable case. So\nthis fix also applies to other iterables such as `DoubleLinkedQueue`\nwith the same setup.\n\nNew tests fail without the fix. And I tested the analyzer with the fix,\nand it correctly warns for `ListQueue`s now.\n\nChange-Id: Iec8d16373643d904c14615e3589fa6dd43ab7068\nBug: https://github.com/dart-lang/sdk/issues/61332\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/560381\nReviewed-by: Phil Quitslund \u003cpquitslund@google.com\u003e\nCommit-Queue: Braedon Schmidt \u003cbraedons@google.com\u003e\n"
    },
    {
      "commit": "eb9c7b0c3ec493192be76d65c06f7bdee4d4687d",
      "tree": "70fb90695584ea2e63ff997a9b6f513689d91e80",
      "parents": [
        "044d2856e6444d1f64147ac40f62b8d2096be10a"
      ],
      "author": {
        "name": "Johnni Winther",
        "email": "johnniwinther@google.com",
        "time": "Thu Oct 22 01:30:22 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 01:30:22 2026 -0700"
      },
      "message": "[cfe] Support including instance mixin (class) members in outline\n\nThis adds experimental support for including instance members of mixin classes and mixin declarations in the outline. When pre 3.0 Dart is no longer supported this would be a viable strategy for supporting modular compilation with a mixin strategy that clones mixin members, like the VM does.\n\nChange-Id: Iedadfc67fd70eed4b524da459567c94af35b5545\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567381\nCommit-Queue: Johnni Winther \u003cjohnniwinther@google.com\u003e\nReviewed-by: Jens Johansen \u003cjensj@google.com\u003e\n"
    },
    {
      "commit": "044d2856e6444d1f64147ac40f62b8d2096be10a",
      "tree": "50f6c3a1b7dd155d980150a8ccf0f57a1776f1fb",
      "parents": [
        "ef0e2411d1a9dfdf572296206ccda5ea48eb6111"
      ],
      "author": {
        "name": "Jonas Finnemann Jensen",
        "email": "jonasfj@google.com",
        "time": "Thu Oct 22 01:14:57 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 01:14:57 2026 -0700"
      },
      "message": "Bump core to 04da6763aa399607ddd1778ef9318a05276cbc01\n\nChanges:\n```\n\u003e git log --format\u003d\"%C(auto) %h %s\" 72e71ca..04da676\n https://dart.googlesource.com/core.git/+/04da6763 Remove dart:mirrors from package:collection test/wrapper_test.dart (1027)\n https://dart.googlesource.com/core.git/+/f0d99354 [crypto] Don\u0027t end comment lines with a URL followed by a period (1025)\n https://dart.googlesource.com/core.git/+/5283f889 [crypto] Fix Hmac sink addSlice with isLast not emitting the digest (1021)\n https://dart.googlesource.com/core.git/+/f5c8490e [crypto] Rotate the working variables in the SHA-256 compression loop (1023)\n https://dart.googlesource.com/core.git/+/3e29ec08 [crypto] Speed up the 64-bit SHA-512 sinks on the VM (1022)\n https://dart.googlesource.com/core.git/+/2c1dd6db [crypto] Add NIST SHA-384/512 and SHA-1 Monte vectors and chunked conversion tests (1020)\n https://dart.googlesource.com/core.git/+/6f619296 [crypto] Add prefer-inline pragmas to the 32-bit SHA-512 helpers (1019)\n https://dart.googlesource.com/core.git/+/d2761ead [crypto] Add wasm:prefer-inline to add32, rotl32 and the MD5 helpers (1018)\n\n```\n\nDiff: https://dart.googlesource.com/core.git/+/72e71ca01b4d50902f84741470cd5dea0cd5a0fa..04da6763aa399607ddd1778ef9318a05276cbc01/\nChange-Id: I7bfd0ce49b326f803b017b524cdb01b9df8a234d\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567780\nAuto-Submit: Jonas Jensen \u003cjonasfj@google.com\u003e\nReviewed-by: Sarah Zakarias \u003czarah@google.com\u003e\nCommit-Queue: Jonas Jensen \u003cjonasfj@google.com\u003e\nCommit-Queue: Sarah Zakarias \u003czarah@google.com\u003e\n"
    },
    {
      "commit": "ef0e2411d1a9dfdf572296206ccda5ea48eb6111",
      "tree": "1505b766f373b81c189f16436991a1ddfbe5f7ee",
      "parents": [
        "57129f5f6e671372454fa12823cf8c21749ce73b"
      ],
      "author": {
        "name": "Patrick",
        "email": "patrick@crandol.com",
        "time": "Thu Oct 22 00:05:31 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Oct 22 00:05:31 2026 -0700"
      },
      "message": "[io] Treat any nonzero boolean socket option value as enabled\n\nCloses https://github.com/dart-lang/sdk/pull/64551\n\nGitOrigin-RevId: bf10b10d5fc27b50d0cf78bc77aba2d4d4a91669\nChange-Id: Ic7c46677d27c148eda2598e9b7842e7384631f0d\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/562261\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "57129f5f6e671372454fa12823cf8c21749ce73b",
      "tree": "cf8ae3406d5f49a2ee80de8e8e20c2e362bd48bf",
      "parents": [
        "3d5deda9f0b366dfc60c8b3d4e559802a03e7884"
      ],
      "author": {
        "name": "Erik Ernst",
        "email": "eernst@google.com",
        "time": "Wed Oct 21 16:57:44 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 16:57:44 2026 -0700"
      },
      "message": "Consider pattern-introduced local variables non-obviously typed\n\nThe lint `specify_nonobvious_local_variable_types` flags some local\nvariable declarations expressed as identifier patterns in a pattern\nin a declaration context, but only when the initializing expression\nhas a static type which is not considered obvious.\n\nThis CL changes the approach such that these identifier patterns are\nflagged in every case, no matter which initializing expression the\npattern variable declaration has. This makes sense because the type\nof a getter of an object cannot be determined other than by looking\nup the class/mixin/... which is denoted by the object pattern.\n\nFor example, the type of `x` is not obvious in `var C(:x) \u003d e;`,\neven in the case where `e` has an obvious type.\n\nA similar (though somewhat weaker) argument applies to other\npatterns. For example, `var [x] \u003d \u003cint\u003e[1];` declares an `x`\nwhose type is `int`. This may seem obvious, but it is still a\ntwo-step process to detect it, and it\u0027s less obvious with a\ndeclaration like `var [x] \u003d myLocalVariable;` which would be given\nthe same treatment. Hence, this CL considers all pattern-declared\nlocal variables non-obviously typed.\n\nChange-Id: I2d860b0acb08731de8457d79156c0c5fd7b85d71\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/548220\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\nReviewed-by: Ben Konyi \u003cbkonyi@google.com\u003e\nCommit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\n"
    },
    {
      "commit": "3d5deda9f0b366dfc60c8b3d4e559802a03e7884",
      "tree": "7c820c699c0bf858a743fb6dbe673e48165700ad",
      "parents": [
        "3e52c07442cb28a4fa77581f8b25b241d06c6ac8"
      ],
      "author": {
        "name": "Nicholas Shahan",
        "email": "nshahan@google.com",
        "time": "Wed Oct 21 16:26:22 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 16:26:22 2026 -0700"
      },
      "message": "[dwds_test_common] Add breakpoint cleanup\n\nClean up breakpoints in events tests even on failure in an\nattempt to avoid cascading failures.\n\n- Add a `pauseAtBreakpoint` helper for the tests. It removes the\n  breakpoint and resumes in `addTearDown`, so cleanup runs even\n  when the test fails.\n- In the resume group\u0027s `setUp`, also remove the breakpoint in\n  `addTearDown` in case the pause never arrives.\n\nChange-Id: Ia0b035cc7d659a6399fa22ec6775aa4148398c17\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566726\nReviewed-by: Nate Biggs \u003cnatebiggs@google.com\u003e\nCommit-Queue: Nicholas Shahan \u003cnshahan@google.com\u003e\n"
    },
    {
      "commit": "3e52c07442cb28a4fa77581f8b25b241d06c6ac8",
      "tree": "ca6728cb9596417fc5e714abfd0b798b7540eb0a",
      "parents": [
        "355f45ac2e3ec9bc7c080f4390f46a47ac428ebc"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 16:24:18 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 16:24:18 2026 -0700"
      },
      "message": "Start analyzer 14.7.0-dev, analyzer_plugin 0.14.20-dev, analyzer_testing 0.4.5-dev, analysis_server_plugin 0.3.26-dev\n\nChange-Id: I373ec1b56931e0269e49bffb937c815ba9070945\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567601\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "355f45ac2e3ec9bc7c080f4390f46a47ac428ebc",
      "tree": "fa14814a8769d808df9fa5bf6c3c03b812f74736",
      "parents": [
        "28586413f3212c15423d93035a58fe4f39788a34"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 16:17:02 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 16:17:02 2026 -0700"
      },
      "message": "CQ. Use exhaustive switches over sealed AST hierarchies.\n\nSeveral `is` chains over sealed node kinds ended with a throwing `else`\nor silently skipped unknown kinds. Make them exhaustive switches, so a\nnew kind is a compile-time error instead of a runtime `StateError`:\n\n- `AssignmentExpression2Impl` is `sealed`, and the V1 projection\n  `AssignmentExpressionImpl` switches over its origin.\n- `FlowAnalysisVisitor._handleFor` and `ForResolver` switch over\n  `ForLoopPartsImpl`.\n- `ErrorVerifier.visitReceiverMethodInvocation` and\n  `visitReceiverPropertyAssignmentTarget` take the `Impl` node, so their\n  switches over the sealed `NamedReceiverImpl` are checked.\n\nNo behavior change.\n\nChange-Id: I20e360e8a2065520b5832283aef9a33a3dbf1746\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567522\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "28586413f3212c15423d93035a58fe4f39788a34",
      "tree": "355d1ddd27e78c32480b9d785cd2ee6698c44198",
      "parents": [
        "2b145ed7e4f3fa53a513a8be94c460a65995db56"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 16:16:14 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 16:16:14 2026 -0700"
      },
      "message": "CQ. Remove empty ElementResolver methods and resolver forwarders.\n\n`TypeAnalyzer` called 18 `ElementResolver` methods with empty bodies,\nand reached `MethodInvocationResolver` and `PropertyElementResolver`\nthrough one-line forwarders in `ElementResolver` and `TypeAnalyzer`.\nDelete the empty methods and the forwarders, and call the resolvers\ndirectly: `TypeAnalyzer` owns the `MethodInvocationResolver`, and\n`propertyElementResolver` is public, like `typePropertyResolver`.\n\nAlso delete the unused `thisLookupSetter2`, and inline\n`thisLookupGetter2` into its only caller.\n\nNo behavior change.\n\nChange-Id: Ibbbca62e79ec6ce8bfab3fe2221d15903f941da3\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567521\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "2b145ed7e4f3fa53a513a8be94c460a65995db56",
      "tree": "17af33910bca30605f1235dd67781b0ce8de9ab1",
      "parents": [
        "0542e2e680652dec9eaed579522f7a5ed2400c7a"
      ],
      "author": {
        "name": "Naveen",
        "email": "rakurthikowshik@gmail.com",
        "time": "Wed Oct 21 15:06:13 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 15:06:13 2026 -0700"
      },
      "message": "[linter] Add diagnostic doc for avoidEscapingInnerQuotes\n\nCloses https://github.com/dart-lang/sdk/pull/64638\n\nGitOrigin-RevId: 9fc2609d7843190279627ef171de16e10f1436ea\nChange-Id: I307e2f2bcd25fb8e7020687802071302af8046b5\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566520\nReviewed-by: Phil Quitslund \u003cpquitslund@google.com\u003e\nCommit-Queue: Samuel Rawlins \u003csrawlins@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "0542e2e680652dec9eaed579522f7a5ed2400c7a",
      "tree": "aca0e5823b337218a4712da6cdd1a6889b5dc56f",
      "parents": [
        "7b3b59518bc02798a619c10ec7a5e169408c6e03"
      ],
      "author": {
        "name": "Sam Rawlins",
        "email": "srawlins@google.com",
        "time": "Wed Oct 21 14:37:50 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 14:37:50 2026 -0700"
      },
      "message": "DAS: Use \u0027late\u0027 less in AnalysisServer\n\n* Make `AnalysisServer.pubApi` a getter, accessing the field on\n  PubPackageService.\n* Make `pubPackageService` non-late, initialized with a nice static\n  helper, to make the constructor smaller.\n* Make `PubPackageService.lastUpdatedUtc` final by making the testing\n  constructors accept a `lastUpdated` parameter.\n\nChange-Id: I3c5d8b45d48b777215b4a99579c35a622a567e64\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567480\nCommit-Queue: Samuel Rawlins \u003csrawlins@google.com\u003e\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\n"
    },
    {
      "commit": "7b3b59518bc02798a619c10ec7a5e169408c6e03",
      "tree": "32e7b98d3b45612172958f9f28225e97308b4acd",
      "parents": [
        "7c74579d643e3df0644092b95557d335a1341c2c"
      ],
      "author": {
        "name": "bkonyi",
        "email": "bkonyi@google.com",
        "time": "Wed Oct 21 14:20:32 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 14:20:32 2026 -0700"
      },
      "message": "Reland \"[Service] DartDev integration for DDS service\"\n\nThis is a reland of commit bb6fb0080501cde7bf5c06067ddab2ab35d66bdc\n\nNo changes since original CL (fixes are in parent CL https://dart-review.googlesource.com/c/sdk/+/560040).\n\nOriginal change\u0027s description:\n\u003e [Service] DartDev integration for DDS service\n\u003e\n\u003e - Update `pkg/dartdev` to spawn DDS using\n\u003e   `dart_runtime_service_dds/bin/dds_entrypoint.dart`.\n\u003e - Align `DevToolsServer`, `MachineModeCommandHandler`, and\n\u003e   `defaultHandler` with `package:dds` for `vm.register`,\n\u003e   `devTools.launch`, and `--disable-service-origin-check`.\n\u003e - Update `pkg/dartdev` and `pkg/dart_runtime_service` unit tests.\n\u003e\n\u003e Change-Id: I6ac07ebdedd1e838f18da4a87d10759c6a8335c1f\n\u003e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/521430\n\u003e Reviewed-by: Nicholas Shahan \u003cnshahan@google.com\u003e\n\u003e Commit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\n\nChange-Id: I05c9980a44329847acbd0d8ccf05c24778972709\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/560041\nCommit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\nReviewed-by: Nicholas Shahan \u003cnshahan@google.com\u003e\n"
    },
    {
      "commit": "7c74579d643e3df0644092b95557d335a1341c2c",
      "tree": "2e2cf94c35837e4242ae1865045d480b3daa38bd",
      "parents": [
        "be7ec330e8102a779305b468e8c2335501105b57"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 13:50:56 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 13:50:56 2026 -0700"
      },
      "message": "Fine. Check export requirements by hash before decoding manifest IDs.\n\n`ExportRequirement.isSatisfied()` decoded the `LibraryManifestIds` of\nthe exported library, and only then compared `hashForRequirements`,\nwhich `LibraryManifestHandle` has without decoding. Now it compares the\nhash of the handle first, as `RequirementsManifest.isSatisfied()` does\nfor library requirements.\n\nExport requirements of a linked bundle are checked in detail when its\ndigest is not satisfied, for example after an API change of a library\nthat it imports. Then the IDs of every re-exported library were decoded,\neven if it did not change, and because they were requested, they could\nstay decoded across idle.\n\nIt also gets the handle with `libraryManifestOfUri()`, instead of\ncreating the `LibraryElementImpl` of the exported library with\n`libraryOfUri()` only to read its manifest.\n\nNo behavior change. The existing tests of changes to exported libraries\ncover the detailed check, and that `hashForRequirements` changes when\nthe exported IDs change, which the hash check relies on.\n\nChange-Id: I10e27f8da9b40440f35e4c405e746d4de1e31af7\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567520\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "be7ec330e8102a779305b468e8c2335501105b57",
      "tree": "6a51cb3192cbbaad8080da47cbea8b54b7a625d4",
      "parents": [
        "6d9db52b139866dc168943a49c3637938fb54643"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 13:45:08 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 13:45:08 2026 -0700"
      },
      "message": "Format pkg/analyzer\n\nChange-Id: Ib3dc665d5f94bdb4d1abfd9e436cbc927257d043\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567462\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "6d9db52b139866dc168943a49c3637938fb54643",
      "tree": "94ff1f9646b02a33b81ae3069169bfafe630f7be",
      "parents": [
        "64252f6e3ede81170cafeb109bada593a775dc97"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Wed Oct 21 13:33:32 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 13:33:32 2026 -0700"
      },
      "message": "[vm,modular_aot] More recognized methods\n\ndart:developer::_isDartStreamEnabled, extensionStreamHasListener\n_Closure._hash\n_AbstractType.hashCode\n\nAlso fix implementation of _isDartStreamEnabled in JIT/AOT as it was accessing a wrong field - StreamInfo::enabled_ instead of TimelineStream::enabled_.\n\nTEST\u003dci\n\nIssue: https://github.com/dart-lang/sdk/issues/61635\nChange-Id: Ib4923c5a901e3f15151af78afb611b5f1dcf5bc0\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567100\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\nReviewed-by: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "64252f6e3ede81170cafeb109bada593a775dc97",
      "tree": "52fd3a33a0eb48bae8cb015f43001edb4bc2dd90",
      "parents": [
        "e0f9bf58ef0f43ba9a607f3dfddbde6f56d77b35"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Wed Oct 21 13:32:00 2026 -0700"
      },
      "committer": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Wed Oct 21 13:32:00 2026 -0700"
      },
      "message": "[dart2wasm] Index dart:math library in dart2wasm\n\ndart:math needs to be indexed so CommonRecognizedMethods (from\npackage:cfg) would be able to find recognized methods in dart:math.\n\nTEST\u003dweb/wasm/cfg/direct_call_test\n\nChange-Id: I821fce40082c89965ddaa4c0259cebba7e19591d\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567482\nAuto-Submit: Alexander Markov \u003calexmarkov@google.com\u003e\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\nReviewed-by: Nate Biggs \u003cnatebiggs@google.com\u003e\n"
    },
    {
      "commit": "e0f9bf58ef0f43ba9a607f3dfddbde6f56d77b35",
      "tree": "5eed1407401df4fd182ebd7f8a80a00eb5001a6c",
      "parents": [
        "d9ed5c78f2a5c92157847b570387e80375dfd055"
      ],
      "author": {
        "name": "Danny Tuppeny",
        "email": "danny@tuppeny.com",
        "time": "Wed Oct 21 13:30:22 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 13:30:22 2026 -0700"
      },
      "message": "[analysis_server] Switch some more handlers to using checkAbort() helpers\n\nThis adds `withParsedUnit` and `withResolvedLibrary` that work similar to the previous `withResolvedUnit` that will capture versions + cancellation tokens to a) ensure we always check for cancellation immediately after parsing/resolving, and b) simplify checking for abort conditions.\n\nIt updates many handlers that had the same pattern (easily found with find-in-files), but to avoid this CL getting too large, not all. I plan to go through the whole set as part of https://github.com/dart-lang/sdk/issues/64643.\n\nChange-Id: Id371237a5a3c09cb4609d27ce659bbb145cd2a6e\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567363\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nCommit-Queue: Keerti Parthasarathy \u003ckeertip@google.com\u003e\n"
    },
    {
      "commit": "d9ed5c78f2a5c92157847b570387e80375dfd055",
      "tree": "9633f7c7bc1d723d4e96639f603b99ecf206d38a",
      "parents": [
        "c21e4dffd932731ec1ac4831726c839448e5a1b9"
      ],
      "author": {
        "name": "Alexander Aprelev",
        "email": "aam@google.com",
        "time": "Wed Oct 21 13:07:38 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 13:07:38 2026 -0700"
      },
      "message": "[gardening] Clean up deleted test from stress_test_list.json.\n\nFixes broken iso-stress-linux builds https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket/8667360828993794401/+/u/Generate_Isolate_Stress_Test_-_JIT_Dill/stdout\n\nFollow-up to 3f0098dbe53011f3b9be7419711d5c89febb7ca0.\nTEST\u003dci\n\nChange-Id: I546dd6f89e2fc1bc0ee5e05ae9c9f9fb2db525eb\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567461\nReviewed-by: Kallen Tu \u003ckallentu@google.com\u003e\nCommit-Queue: Alexander Aprelev \u003caam@google.com\u003e\n"
    },
    {
      "commit": "c21e4dffd932731ec1ac4831726c839448e5a1b9",
      "tree": "d086c62139112e256cd0758e0c32c8a49837ec27",
      "parents": [
        "4f70fe30a829cfbe878b6a41794f5314e0c22dd9"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 12:56:17 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 12:56:17 2026 -0700"
      },
      "message": "AST. Lower parsed nodes in ScopeAnalyzer, remove AstRewriter.\n\nThe lowering of parsed nodes was split between ScopeAnalyzer and\nAstRewriter. Each `visitParsedX` method called `_visitParsedExpression`,\nwhich dispatched on the same node types again with an `is` chain, and\nAstRewriter returned a `ParsedExpressionResult` telling the caller which\nchildren to visit. Now each `visitParsedX` method lowers its own node\nand visits the result, and `ast_rewrite.dart` is removed.\n\n- `ParsedExpressionResult` and its four subclasses are removed, and\n  `nameScope` is no longer passed around as a parameter.\n- Selector chains are lowered from their root by one recursion,\n  `_lowerReceiver`: a name, a prefixed name `p.x`, a constructor\n  tear-off `C\u003cT\u003e.named`, or a selector over a lowered operand. It no\n  longer walks back up through parent links, or splices a tear-off into\n  the tree for a later step to find.\n- For a call `C.m()` kept for type analysis, the static qualifier is\n  stored in `ParsedValueArgumentsImpl.staticQualifier`, because the\n  selector operand cannot hold it. Type analysis reads it, instead of\n  rebuilding the receiver from the parsed names and the lookups stored\n  on them.\n- `_lookupName` stores the scope lookup on the parsed name, so a name is\n  looked up once. Before, `a` in `a.m()` was looked up twice: to check\n  for an import prefix, and to lower it.\n- Repeated element checks become named helpers: `isTypeDefining` and\n  `unaliasedInterface` in a private extension on `Element?`, plus\n  `_functionTypeAliasValue` and `_buildConstructorTearOff`.\n- Assignment targets `r.x \u003d v` lower `r` like a read; only the import\n  prefixed target `p.x \u003d v` is handled separately.\n- The generic fallback for value arguments, which could only replace the\n  node with itself and recurse, now throws a `StateError`.\n- The class comment of ScopeAnalyzer explains which nodes are lowered and\n  which calls are kept for type analysis.\n\nBug: https://github.com/dart-lang/sdk/issues/63882\nChange-Id: I98bcbd8593162df7ecf3007db53902bda77f5458\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/564080\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\n"
    },
    {
      "commit": "4f70fe30a829cfbe878b6a41794f5314e0c22dd9",
      "tree": "b1ad3202c0ebbc1ae3db499842e21c9b1b54e4cf",
      "parents": [
        "5c7fd5db657f086d9124828c6b98447c3b1b2c0c"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 12:36:53 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 12:36:53 2026 -0700"
      },
      "message": "AST. Make BinaryOperatorInvocation.binaryOperator nullable.\n\nRecovered code such as `a ~ b`, `a \u003d\u003d\u003d b`, and `a !\u003d\u003d b` is parsed as\n`BinaryOperatorInvocation`, but its `binaryOperator` getter threw for\n`~`, and mapped `\u003d\u003d\u003d` and `!\u003d\u003d` to `equal` and `notEqual`, although the\nresolver treats them as unsupported. A client that read `binaryOperator`\non such code crashed.\n\nNow `binaryOperator` is `null` for operator tokens that are not binary\noperators that can be invoked, and `BinaryExpressionResolver` dispatches\non it. Invalid operators also invoke nothing for super-invocation\nanalysis, so `super ~ 0` and `super \u003d\u003d\u003d 0` in a mixin no longer produce\n`mixinApplicationNoConcreteSuperInvokedMember` (such as \"super-invoked\nsetter \u0027\u003d\u003d\u0027\"), and `super ~ 0` no longer counts as invoking the\noverridden `operator ~` for `mustCallSuper`.\n\nChange-Id: I83ec7dc921bd40630ec7025af9fc792d5209b185\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566727\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "5c7fd5db657f086d9124828c6b98447c3b1b2c0c",
      "tree": "d895f54ab8e56ca61da501d8e4f242e416241093",
      "parents": [
        "350039ece7a94f2c41683ce46e2399294f9ed182"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 12:34:43 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 12:34:43 2026 -0700"
      },
      "message": "Fine. Keep decoded LibraryManifestIds across idle while they are requested.\n\nOn idle the driver discards decoded library manifests to save memory.\nFor `LibraryManifestIds` this costs a decode on every keystroke, because resolving a library records requirements against the IDs of every library it uses, and after a pause all of them are gone.\n\nNow on idle `LibraryManifestHandle.discardDecodedOnIdle()` keeps `ids`\nif they were requested during each of the last two periods of work.\nWhile the user edits a library, the IDs of the libraries it uses stay\ndecoded from the first edit on if the previous period of work, usually\nthe initial analysis, requested them, and from the second edit on\notherwise, for example after switching to editing a library with other\nimports. The IDs requested only during the initial analysis are\ndiscarded at the first idle, so the heap after the initial analysis\ndoes not grow.\n\nA period of work ends at idle only if it requested any IDs, see\n`LinkedElementFactory.discardDecodedLibraryManifestsOnIdle()`. So work\nbetween edits that does not use IDs, for example completion, indexing,\nor `getFilesReferencingNames`, does not make the IDs of the libraries\nthat the edited library uses look unused. And every way to request IDs\ncounts: analysis, linking, and checking requirements.\n\nA driver that the user stopped working with keeps the IDs requested\nduring its last two periods of work, as it keeps its element model. We\ncan discard both for idle drivers later.\n\n`AnalysisDriver.discardMemoryExpensiveData()`, used by\n`AnalysisDriverForPackageBuild` after a build, still discards all\ndecoded manifests, and forgets which IDs were requested, so IDs are\nkept again only after two more periods of work that request them. It is not guarded by `_hasDiscardedMemoryExpensiveData` anymore, which now guards only the discard on idle, and it does not create the library context only to discard it. Both report the `DiscardMemoryExpensiveData`\nevent, which tests print.\n\nBody edit latency, median ms, in-process emulation of IDE typing with\ndiscard on idle, AOT, 3 interleaved rounds, base -\u003e this change:\n\n  edits only:\n    dart_style ast_node_visitor.dart   47.4 -\u003e 28.4  (0.60x)\n    dart_style solver.dart              5.1 -\u003e  3.8  (0.75x)\n    Flutter gallery widget             18.1 -\u003e  7.2  (0.40x)\n    Flutter material/app_bar.dart     193.8 -\u003e 192.3 (0.99x)\n    analyzer flow_analysis_visitor    149.7 -\u003e 132.4 (0.88x)\n    geomean                                          0.69x\n\n  getFilesReferencingNames after each edit:\n    dart_style ast_node_visitor.dart   50.8 -\u003e 29.8  (0.59x)\n    dart_style solver.dart              6.8 -\u003e  4.0  (0.60x)\n    Flutter gallery widget             20.2 -\u003e  8.4  (0.41x)\n    Flutter material/app_bar.dart     191.6 -\u003e 187.4 (0.98x)\n    analyzer flow_analysis_visitor    143.2 -\u003e 151.8 (1.06x)\n    geomean                                          0.68x\n\nA body edit in a large library cycle creates new manifest handles for\nthe cycle, so their IDs are not kept, and there is no gain there. The\nanalyzer medians are dominated by GC; its best times are within a few\nms across variants.\n\nReachable heap at the first idle after the initial analysis is\nunchanged: dart_style 359 MB, flutter_gallery 562 MB, pkg/analyzer\n1202 MB, with no decoded IDs kept. After two edits the kept IDs are\n2..7 MB.\n\nChange-Id: I00c310f45460f958f98da48b83554faeb897bf13\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566743\nReviewed-by: Morgan :) \u003cdavidmorgan@google.com\u003e\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "350039ece7a94f2c41683ce46e2399294f9ed182",
      "tree": "08fa3ea99dc613ef31cd430f4179a332540b7270",
      "parents": [
        "9e8e8340c71ec54b5f51e1e8dbd28770719e5e97"
      ],
      "author": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Wed Oct 21 12:24:13 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 12:24:13 2026 -0700"
      },
      "message": "[tfa] Use compact representation for dependencies and call sites\n\nMost those sets track 0, 1 or a few elements, so optimize for that\ninstead.\n\nMeasured on a large g3 app compiled with dart2wasm in phases, where we\nmeasure only TFA phase (deserialize binary, ..., tfa, serialize):\n\n  * reduces peak memory usage by ~868 MB\n  * reduces wall-clock time by ~1-2%\n\nIssue https://github.com/dart-lang/sdk/issues/60096\n\nTEST\u003dOptimizes internals of tfa\n\nChange-Id: I1614ad9cde98b74ae09184e033c6842ae8ea226d\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567421\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "9e8e8340c71ec54b5f51e1e8dbd28770719e5e97",
      "tree": "dc3e82e7b41ce0ae3db79bb68ffef06acb876c7a",
      "parents": [
        "36d7e2548364e3b428af0950bb950841b8b57917"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Wed Oct 21 12:15:54 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 12:15:54 2026 -0700"
      },
      "message": "[modular_aot] Recognized methods from dart:math\n\nIssue: https://github.com/dart-lang/sdk/issues/61635\nChange-Id: Id18a06e6ba2bcbebe9a71579a4ee0690080e9cfe\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566723\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\n"
    },
    {
      "commit": "36d7e2548364e3b428af0950bb950841b8b57917",
      "tree": "726d1063dfa769653b5fca1ecca963e9190f18fe",
      "parents": [
        "931b806d14ae7e086e5a9f119f4def8efa380da8"
      ],
      "author": {
        "name": "paulberry",
        "email": "paulberry@google.com",
        "time": "Wed Oct 21 12:08:21 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 12:08:21 2026 -0700"
      },
      "message": "Print fix command in CheckSorted presubmit; restore `dart run -r`.\n\nWhen the `CheckSorted` presubmit hook found unsorted files, it only\nprinted `Unsorted file \u003cpath\u003e` lines, leaving the user to figure out\nhow to fix them. Now it also prints a ready-to-run command that\ninvokes `verify_sorted_test.dart --update` with a `-s \u003cpath\u003e` argument\nfor each unsorted file, following the style of `_CheckDartFormat` and\n`_CheckStatusFiles` in the top-level `PRESUBMIT.py`.\n\nAlso restore the `-r` (`--resident`) flag to `dart run` in the\n`CheckSorted` hooks of `analysis_server`, `analyzer_cli`,\n`analyzer_plugin`, and `linter`. It was removed in 9bd89a769d5 to work\naround CFE incremental compiler bugs, which have since been fixed (in\n6a7225596390 and 336e33b691b), and the checked-in SDK now includes the\nfixes.\n\nBug: https://github.com/dart-lang/sdk/issues/63464\nTAG\u003dagy\nCONV\u003d4b633336-247f-427f-9fb6-1ec92e63923d\n\nChange-Id: I4c1a21d0f896e96e166a603797e654306a6a6964\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/563364\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n"
    },
    {
      "commit": "931b806d14ae7e086e5a9f119f4def8efa380da8",
      "tree": "589118f37af8da81e33d6bba6385d3590f12b133",
      "parents": [
        "38bd2fb06ec78f636c05791109de3a838a57a553"
      ],
      "author": {
        "name": "Konstantin Shcheglov",
        "email": "scheglov@google.com",
        "time": "Wed Oct 21 12:07:49 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 12:07:49 2026 -0700"
      },
      "message": "AST. Narrow parent2 of Field2, TopLevelVariable2, and LocalVariable.\n\nSee discussion in https://dart-review.googlesource.com/c/sdk/+/565563\nThis CL does not add semantic `declaration` getter.\nI see that this pattern is used in kernel.\nBut so far in the analyzer we used just tighthen `parent`.\nSo, I\u0027m not sure, and left it out for now.\n\nEach of these nodes always has exactly one kind of parent, so `parent2`\nnow returns it: `FieldsDeclaration` for `Field2`,\n`TopLevelVariablesDeclaration` for `TopLevelVariable2`, and\n`LocalVariablesDeclaration` for `LocalVariable`. This follows\n`ForLoopParts.parent2` and `InterpolationString.parent2`. A separate\n`declaration` getter would be a second name for the same node. It would\nalso collide with the existing `declaration` getters of\n`LocalVariablesDeclarationStatement` and\n`PatternVariableDeclarationStatement`, which return a child, not the\nparent.\n\nCallers no longer need the casts and type checks that guarded against\nthe wider type.\n\nBug: https://github.com/dart-lang/sdk/issues/64004\nChange-Id: I20de6accc58e59b10a050108509632695bfe7375\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566682\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n"
    },
    {
      "commit": "38bd2fb06ec78f636c05791109de3a838a57a553",
      "tree": "f6448b5fcfbe0c37e71b4e2976cc5b84cfe1ac15",
      "parents": [
        "a3a3b6c2e645816493dd13153f2b498f4332157e"
      ],
      "author": {
        "name": "Alexander Markov",
        "email": "alexmarkov@google.com",
        "time": "Wed Oct 21 10:41:50 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 10:41:50 2026 -0700"
      },
      "message": "[modular_aot] WeakProperty, WeakReference recognized methods\n\nIssue: https://github.com/dart-lang/sdk/issues/61635\nChange-Id: Icdd18788aa14a0fc990bbf8b10474172dbe0d178\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567460\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\n"
    },
    {
      "commit": "a3a3b6c2e645816493dd13153f2b498f4332157e",
      "tree": "9341457d3555a715fe8b73fb775c8c8bb5aba98d",
      "parents": [
        "2752d562ce0230b3fda87f10d8070150d32397db"
      ],
      "author": {
        "name": "Danny Tuppeny",
        "email": "danny@tuppeny.com",
        "time": "Wed Oct 21 08:57:52 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 08:57:52 2026 -0700"
      },
      "message": "[analysis_server] Simplify cancellation/fileModified checks in LSP handlers\n\nIn LSP, we often bail out of handlers early because:\n\n1. The client asked us to cancel a request (or the scheduler did)\n2. The related file was modified (usually we\u0027ll get a cancellation, but not all clients support cancellation)\n\nThis change is aimed at make it less verbose performing these checks, and to perform an initial check immediately after fetching a resolved AST without it needing to be coded into the handler.\n\nA new method `withResolvedUnit` will fetch the resolved unit, do the initial checks, and provide a helper `checkAbort()` that can be used to check if a handler should abort (and provide the return value/error if it should).\n\nI\u0027ve only converted a few handlers to use this (that already had the same pattern), and will follow up others in a subsequent CL.\n\nThe goal is to make this simpler before auditing all handlers to ensure they\u0027re doing this everywhere appropriate (to avoid wasted work) - see https://github.com/dart-lang/sdk/issues/64643\n\nDue to changes in indentation because of wrapping code with these calls, it might be simpler to review this change **ignoring whitespace**.\n\nChange-Id: I2e6e047ac5263b7f380b8351beb3b2f1df79677c\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/567160\nReviewed-by: Keerti Parthasarathy \u003ckeertip@google.com\u003e\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\nCommit-Queue: Samuel Rawlins \u003csrawlins@google.com\u003e\n"
    },
    {
      "commit": "2752d562ce0230b3fda87f10d8070150d32397db",
      "tree": "2656310d8c01417226d14199b1c247351658a864",
      "parents": [
        "bbdbfc61c16369c3057d683a0d8093020dd64b05"
      ],
      "author": {
        "name": "Jonas Finnemann Jensen",
        "email": "jonasfj@google.com",
        "time": "Wed Oct 21 05:12:01 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 05:12:01 2026 -0700"
      },
      "message": "[vm, io] Ignore concurrent deletion in RecursiveDeleter::DeleteFile\n\nThis CL is human reviewed, agent authored.\n\nWhen `DeleteFileW` fails with `ERROR_ACCESS_DENIED` on Windows and a\nconcurrent deletion finishes before `GetFileAttributesW` or\n`SetFileAttributesW` runs, those calls fail with `ERROR_FILE_NOT_FOUND`.\n\nBug: https://github.com/dart-lang/sdk/issues/25353\nBug: https://github.com/dart-lang/sdk/issues/38148\nTEST\u003dtests/standalone/io/directory_delete_race_test.dart\nChange-Id: I4aaa134de44e443fb368423228fc4b9d0ff1dcde\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566321\nCommit-Queue: Jonas Jensen \u003cjonasfj@google.com\u003e\nReviewed-by: Brian Quinlan \u003cbquinlan@google.com\u003e\nAuto-Submit: Jonas Jensen \u003cjonasfj@google.com\u003e\n"
    },
    {
      "commit": "bbdbfc61c16369c3057d683a0d8093020dd64b05",
      "tree": "c0218d3a4f558058fd8c812116502f0ee3e23d42",
      "parents": [
        "4dc780accf071a44664f3318966d930ff8fa4a08"
      ],
      "author": {
        "name": "Jonas Finnemann Jensen",
        "email": "jonasfj@google.com",
        "time": "Wed Oct 21 05:10:30 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 05:10:30 2026 -0700"
      },
      "message": "[vm, io] Double-null-terminate empty environment block on Windows\n\nThis CL is human reviewed, agent authored.\n\n`CreateProcessW` requires `lpEnvironment` to end with two null\ncharacters (`\\0\\0`), but `ProcessStarter` wrote only a single `L\u0027\\0\u0027`\nwhen `environment_length \u003d\u003d 0`, failing with `ERROR_INVALID_PARAMETER`.\n\nBug: https://github.com/dart-lang/sdk/issues/62833\nTEST\u003dtests/standalone/io/process_environment_test.dart\nChange-Id: Ifb6efb664408a19b5d26f8376f3ba06f594055eb\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/566263\nReviewed-by: Brian Quinlan \u003cbquinlan@google.com\u003e\nAuto-Submit: Jonas Jensen \u003cjonasfj@google.com\u003e\nCommit-Queue: Jonas Jensen \u003cjonasfj@google.com\u003e\n"
    },
    {
      "commit": "4dc780accf071a44664f3318966d930ff8fa4a08",
      "tree": "19b9c4c31413c845a3d687c1389e122d82952d17",
      "parents": [
        "c1106fb955f508bb70c523d70efeb31820f3f7df"
      ],
      "author": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Wed Oct 21 04:31:31 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 04:31:31 2026 -0700"
      },
      "message": "[tfa] Use fixed-length lists and shared empty instance for Args\n\nMeasured on a large g3 app compiled with dart2wasm in phases, where we\nmeasure only TFA phase (deserialize binary, extas, tfa, serialize):\n\n  * reduces memory usage by ~250 MB\n  * reduces wall-clock time by ~2-3%\n\nIssue https://github.com/dart-lang/sdk/issues/60096\n\nTEST\u003dOptimizes internals of tfa\n\nChange-Id: I36b67b27ccd6fb46413924abc5b6ca6d1ce98b37\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/565700\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\n"
    },
    {
      "commit": "c1106fb955f508bb70c523d70efeb31820f3f7df",
      "tree": "927776f0ff2a41a97fc1bfaa1d16146121edf4a1",
      "parents": [
        "c9265467f51288e3c0149016ebeca4844a56a876"
      ],
      "author": {
        "name": "Martin Kustermann",
        "email": "kustermann@google.com",
        "time": "Wed Oct 21 04:04:00 2026 -0700"
      },
      "committer": {
        "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Oct 21 04:04:00 2026 -0700"
      },
      "message": "[tfa] Use fixed-length lists for SetType.types\n\nMeasured on a large g3 app compiled with dart2wasm in phases, where we\nmeasure only TFA phase (deserialize binary, tfa, serialize binary):\n\n  * reduces peak memory usage by 200 MB\n  * reduces time by 8%\n\nIssue https://github.com/dart-lang/sdk/issues/60096\n\nTEST\u003dOptimizes internals of tfa\n\nChange-Id: If45f8cdbb7fafd688ce7ca92e75605da919ca6f3\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/565340\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\n"
    }
  ],
  "next": "c9265467f51288e3c0149016ebeca4844a56a876"
}
