[go] internal/runtime/maps: use KKKKVVVV slot order

11 views
Skip to first unread message

Jake Bailey (Gerrit)

unread,
Oct 14, 2025, 1:26:55 AM10/14/25
to goph...@pubsubhelper.golang.org, Michael Pratt, golang-co...@googlegroups.com
Attention needed from Michael Pratt

Jake Bailey voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Michael Pratt
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
Gerrit-Change-Number: 711560
Gerrit-PatchSet: 1
Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
Gerrit-Attention: Michael Pratt <mpr...@google.com>
Gerrit-Comment-Date: Tue, 14 Oct 2025 05:26:50 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
unsatisfied_requirement
satisfied_requirement
open
diffy

Jake Bailey (Gerrit)

unread,
Oct 14, 2025, 1:31:09 AM10/14/25
to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
Attention needed from Michael Pratt

Jake Bailey added 1 comment

File src/cmd/link/internal/ld/deadcode.go
Line 563, Patchset 1 (Latest): off += 9*arch.PtrSize + 4 // internal/abi.MapType
Jake Bailey . unresolved

I spent weeks staring at this CL trying to figure out why it was crashing, only to eventually find this hardcoded sizeof; probably worth a comment or something somewhere, though I don't know why this isn't derived from reflectdata or types or something...

Open in Gerrit

Related details

Attention is currently required from:
  • Michael Pratt
Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
    Gerrit-Change-Number: 711560
    Gerrit-PatchSet: 1
    Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
    Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
    Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
    Gerrit-Attention: Michael Pratt <mpr...@google.com>
    Gerrit-Comment-Date: Tue, 14 Oct 2025 05:31:05 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Jake Bailey (Gerrit)

    unread,
    Oct 14, 2025, 1:37:37 AM10/14/25
    to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
    Attention needed from Michael Pratt

    Jake Bailey added 3 comments

    File src/internal/abi/map.go
    Line 43, Patchset 1 (Latest): ElemSize uintptr // size of elem
    Jake Bailey . unresolved

    I need to update the doc or even field name to better indicate that this is what's in the array (e.g. a pointer after a certain size), not just `Key.Size()`.

    File src/internal/runtime/maps/group.go
    Line 254, Patchset 1 (Parent): ctrlGroupsSize = unsafe.Sizeof(ctrlGroup(0))
    Jake Bailey . resolved

    This is no longer required; if I'm having to store an offset for the type relative to the group anyway, there's no reason to have an extra add.

    File src/internal/runtime/maps/runtime_fast32.go
    Line 38, Patchset 1 (Latest): var i uintptr
    Jake Bailey . unresolved

    I didn't like that I did this, but I later realized that this should still use the same number of variables given slotSize in the previous code was also variable. but, it is one more add in the loop.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Michael Pratt
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
    Gerrit-Change-Number: 711560
    Gerrit-PatchSet: 1
    Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
    Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
    Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
    Gerrit-Attention: Michael Pratt <mpr...@google.com>
    Gerrit-Comment-Date: Tue, 14 Oct 2025 05:37:33 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Jake Bailey (Gerrit)

    unread,
    Oct 14, 2025, 1:40:09 AM10/14/25
    to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
    Attention needed from Michael Pratt

    Jake Bailey added 1 comment

    Patchset-level comments
    File-level comment, Patchset 1 (Latest):
    Jake Bailey . unresolved

    This appears to fail testing because the map layout is encoded in the debugger. Probably, this means my other CL is wrong because it did not update those. Fun.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Michael Pratt
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
    Gerrit-Change-Number: 711560
    Gerrit-PatchSet: 1
    Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
    Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
    Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
    Gerrit-Attention: Michael Pratt <mpr...@google.com>
    Gerrit-Comment-Date: Tue, 14 Oct 2025 05:40:05 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Jake Bailey (Gerrit)

    unread,
    Oct 14, 2025, 2:24:25 AM10/14/25
    to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
    Attention needed from Michael Pratt

    New activity on the change

    Related details

    Attention is currently required from:
    • Michael Pratt
    Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement satisfiedTryBots-Pass
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: go
      Gerrit-Branch: master
      Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
      Gerrit-Change-Number: 711560
      Gerrit-PatchSet: 4
      Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
      Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
      Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
      Gerrit-Attention: Michael Pratt <mpr...@google.com>
      Gerrit-Comment-Date: Tue, 14 Oct 2025 06:24:21 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      Michael Pratt (Gerrit)

      unread,
      Oct 31, 2025, 11:27:08 AM10/31/25
      to Jake Bailey, goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
      Attention needed from Jake Bailey

      Michael Pratt added 1 comment

      Patchset-level comments
      File-level comment, Patchset 4 (Latest):
      Michael Pratt . resolved

      For reference, microbenchmark results are available at https://gist.github.com/prattmic/f280e118962fbe353b201f20b16e3a66

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Jake Bailey
      Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement satisfiedTryBots-Pass
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: go
      Gerrit-Branch: master
      Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
      Gerrit-Change-Number: 711560
      Gerrit-PatchSet: 4
      Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
      Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
      Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
      Gerrit-Attention: Jake Bailey <jacob.b...@gmail.com>
      Gerrit-Comment-Date: Fri, 31 Oct 2025 15:27:02 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      Jake Bailey (Gerrit)

      unread,
      Feb 2, 2026, 4:47:21 PMFeb 2
      to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
      Attention needed from Jake Bailey

      Jake Bailey uploaded new patchset

      Jake Bailey uploaded patch set #5 to this change.
      Following approvals got outdated and were removed:
      • TryBots-Pass: LUCI-TryBot-Result+1 by Go LUCI
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Jake Bailey
      Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement is not satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: newpatchset
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
        Gerrit-Change-Number: 711560
        Gerrit-PatchSet: 5
        unsatisfied_requirement
        open
        diffy

        Jake Bailey (Gerrit)

        unread,
        Feb 2, 2026, 4:47:38 PMFeb 2
        to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com

        Jake Bailey voted Commit-Queue+1

        Commit-Queue+1
        Open in Gerrit

        Related details

        Attention set is empty
        Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement is not satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
        Gerrit-Change-Number: 711560
        Gerrit-PatchSet: 5
        Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
        Gerrit-Comment-Date: Mon, 02 Feb 2026 21:47:35 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        unsatisfied_requirement
        open
        diffy

        Jake Bailey (Gerrit)

        unread,
        Feb 11, 2026, 11:00:51 PMFeb 11
        to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

        Jake Bailey uploaded new patchset

        Jake Bailey uploaded patch set #6 to this change.
        Following approvals got outdated and were removed:
        • TryBots-Pass: LUCI-TryBot-Result+1 by Go LUCI
        Open in Gerrit

        Related details

        Attention set is empty
        Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement is not satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: newpatchset
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
        Gerrit-Change-Number: 711560
        Gerrit-PatchSet: 6
        unsatisfied_requirement
        open
        diffy

        Michael Pratt (Gerrit)

        unread,
        Feb 18, 2026, 2:56:06 PM (9 days ago) Feb 18
        to Jake Bailey, goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
        Attention needed from Jake Bailey

        Michael Pratt added 11 comments

        Patchset-level comments
        File-level comment, Patchset 6 (Latest):
        Michael Pratt . resolved

        Thanks! This looks good to me. My only worry is whether the removal of the ElemOff optimizations is measurable. I'm running a new microbenchmark run to see if I can measure a difference.

        Commit Message
        Line 7, Patchset 6 (Latest):internal/runtime/maps: use KKKKVVVV slot order
        Michael Pratt . unresolved

        Let's make the fact that this is off by default for now more obvious by mentioning the experiment.

        ```suggestion
        internal/runtime/maps: add GOEXPERIMENT=mapsplitgroup for KKKKVVVV slot order
        ```

        Line 43, Patchset 6 (Latest):Fixes #71368
        Michael Pratt . unresolved

        `Updates`, since it isn't enabled yet.

        File src/cmd/compile/internal/reflectdata/map.go
        Line 294, Patchset 6 (Latest): keysOff := gtyp.Field(1).Offset
        Michael Pratt . resolved

        Even though this is common between both types, I think it would be cleaner to put it in both branches since the !MapSplitGroup has a separate explanation below for this value.

        If you change this, please change reflect/map.go as well.

        Line 300, Patchset 6 (Latest): keySize = gtyp.Field(1).Type.Elem().Size()
        Michael Pratt . resolved

        This is fine, but `t.Key().Size()` might be more obvious. Same with elem below.

        File src/cmd/link/internal/ld/deadcode.go
        Line 563, Patchset 1: off += 9*arch.PtrSize + 4 // internal/abi.MapType
        Jake Bailey . resolved

        I spent weeks staring at this CL trying to figure out why it was crashing, only to eventually find this hardcoded sizeof; probably worth a comment or something somewhere, though I don't know why this isn't derived from reflectdata or types or something...

        Michael Pratt

        Please do add a comment to internal/abi and/or reflectdata. I also tend to forget this is here.

        It isn't derived from reflectdata because the size of MapType is always constant, it doesn't depend on the actual types passed into reflectdata. It would be nice if we could easily assert that the size here is correct or something.

        File src/internal/abi/map.go
        Line 43, Patchset 1: ElemSize uintptr // size of elem
        Jake Bailey . unresolved

        I need to update the doc or even field name to better indicate that this is what's in the array (e.g. a pointer after a certain size), not just `Key.Size()`.

        Michael Pratt

        I don't quite follow what you're getting at now, but I think things are pretty clear now with the expanded comments.

        Line 56, Patchset 6 (Latest): KeySize uintptr
        Michael Pratt . unresolved

        While I think this name is fine if we keep `GOEXPERIMENT=mapsplitgroup` permanently, it's confusing for interleaved slots, where the name strongly implies it is the same as `Key.Size()`. I worry we may introduce a bug by forgetting that it's not.

        Perhaps call these fields `KeyStride` and `ElemStride`? IMO, that has a natural meaning in both cases (it just turns out that the stride == size for the split layout).

        File src/internal/runtime/maps/runtime.go
        Line 115, Patchset 6 (Parent): slotElem := unsafe.Pointer(uintptr(slotKeyOrig) + typ.ElemOff)
        Michael Pratt . resolved

        This is a micro-optimization we added to shave off a few instructions. We'll see if my benchmarks (currently running) can measure removing it.

        If it is, we could keep `typ.ElemOff`. The offset between a key and its elem is the same for every key even in the split layout.

        File src/internal/runtime/maps/runtime_fast32.go
        Line 38, Patchset 1: var i uintptr
        Jake Bailey . unresolved

        I didn't like that I did this, but I later realized that this should still use the same number of variables given slotSize in the previous code was also variable. but, it is one more add in the loop.

        Michael Pratt

        Seeing the loop change here makes me lean more towards my previous suggestion that we keep `typ.ElemOff`.

        Line 46, Patchset 6 (Latest): keyStride = 4 // keys are contiguous in split layout
        Michael Pratt . resolved

        typ.KeySize will be 4 here as well. Did you do this for the constant propagation effects?

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Jake Bailey
        Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement is not satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
        Gerrit-Change-Number: 711560
        Gerrit-PatchSet: 6
        Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
        Gerrit-Attention: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Comment-Date: Wed, 18 Feb 2026 19:56:02 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Jake Bailey <jacob.b...@gmail.com>
        unsatisfied_requirement
        open
        diffy

        Michael Pratt (Gerrit)

        unread,
        Feb 18, 2026, 3:03:15 PM (9 days ago) Feb 18
        to Jake Bailey, goph...@pubsubhelper.golang.org, Michael Pratt, Go LUCI, golang-co...@googlegroups.com
        Attention needed from Jake Bailey

        Michael Pratt voted Commit-Queue+1

        Commit-Queue+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Jake Bailey
        Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement is not satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
        Gerrit-Change-Number: 711560
        Gerrit-PatchSet: 6
        Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
        Gerrit-Attention: Jake Bailey <jacob.b...@gmail.com>
        Gerrit-Comment-Date: Wed, 18 Feb 2026 20:03:11 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        unsatisfied_requirement
        open
        diffy

        Jake Bailey (Gerrit)

        unread,
        Feb 18, 2026, 3:24:42 PM (9 days ago) Feb 18
        to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
        Attention needed from Michael Pratt

        Jake Bailey added 2 comments

        File src/cmd/compile/internal/reflectdata/map.go
        Line 300, Patchset 6 (Latest): keySize = gtyp.Field(1).Type.Elem().Size()
        Michael Pratt . resolved

        This is fine, but `t.Key().Size()` might be more obvious. Same with elem below.

        Jake Bailey

        t.Key().Size() doesn't work, because the size will change if it exceeds `MapMaxKeyBytes`.

        File src/internal/abi/map.go
        Line 43, Patchset 1: ElemSize uintptr // size of elem
        Jake Bailey . resolved

        I need to update the doc or even field name to better indicate that this is what's in the array (e.g. a pointer after a certain size), not just `Key.Size()`.

        Michael Pratt

        I don't quite follow what you're getting at now, but I think things are pretty clear now with the expanded comments.

        Jake Bailey

        Acknowledged

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Michael Pratt
        Submit Requirements:
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          • requirement satisfiedTryBots-Pass
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: go
          Gerrit-Branch: master
          Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
          Gerrit-Change-Number: 711560
          Gerrit-PatchSet: 6
          Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
          Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
          Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
          Gerrit-Attention: Michael Pratt <mpr...@google.com>
          Gerrit-Comment-Date: Wed, 18 Feb 2026 20:24:36 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Jake Bailey <jacob.b...@gmail.com>
          Comment-In-Reply-To: Michael Pratt <mpr...@google.com>
          unsatisfied_requirement
          satisfied_requirement
          open
          diffy

          Jake Bailey (Gerrit)

          unread,
          Feb 18, 2026, 3:49:10 PM (9 days ago) Feb 18
          to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
          Attention needed from Michael Pratt

          Jake Bailey uploaded new patchset

          Jake Bailey uploaded patch set #7 to this change.
          Following approvals got outdated and were removed:
          • TryBots-Pass: LUCI-TryBot-Result+1 by Go LUCI

          Related details

          Attention is currently required from:
          • Michael Pratt
          Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: newpatchset
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 7
            unsatisfied_requirement
            open
            diffy

            Jake Bailey (Gerrit)

            unread,
            Feb 18, 2026, 3:49:21 PM (9 days ago) Feb 18
            to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
            Attention needed from Michael Pratt

            Jake Bailey voted and added 3 comments

            Votes added by Jake Bailey

            Commit-Queue+1

            3 comments

            Commit Message
            Line 7, Patchset 6:internal/runtime/maps: use KKKKVVVV slot order
            Michael Pratt . resolved

            Let's make the fact that this is off by default for now more obvious by mentioning the experiment.

            ```suggestion
            internal/runtime/maps: add GOEXPERIMENT=mapsplitgroup for KKKKVVVV slot order
            ```

            Jake Bailey

            Done

            Line 43, Patchset 6:Fixes #71368
            Michael Pratt . resolved

            `Updates`, since it isn't enabled yet.

            Jake Bailey

            Done

            File src/internal/abi/map.go
            Line 56, Patchset 6: KeySize uintptr
            Michael Pratt . resolved

            While I think this name is fine if we keep `GOEXPERIMENT=mapsplitgroup` permanently, it's confusing for interleaved slots, where the name strongly implies it is the same as `Key.Size()`. I worry we may introduce a bug by forgetting that it's not.

            Perhaps call these fields `KeyStride` and `ElemStride`? IMO, that has a natural meaning in both cases (it just turns out that the stride == size for the split layout).

            Jake Bailey

            Done

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Michael Pratt
            Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 6
            Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Michael Pratt <mpr...@google.com>
            Gerrit-Comment-Date: Wed, 18 Feb 2026 20:49:17 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: Yes
            Comment-In-Reply-To: Michael Pratt <mpr...@google.com>
            unsatisfied_requirement
            open
            diffy

            Jake Bailey (Gerrit)

            unread,
            Feb 18, 2026, 4:09:55 PM (9 days ago) Feb 18
            to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
            Attention needed from Michael Pratt

            Jake Bailey added 1 comment

            File src/internal/runtime/maps/runtime_fast32.go
            Line 38, Patchset 1: var i uintptr
            Jake Bailey . unresolved

            I didn't like that I did this, but I later realized that this should still use the same number of variables given slotSize in the previous code was also variable. but, it is one more add in the loop.

            Michael Pratt

            Seeing the loop change here makes me lean more towards my previous suggestion that we keep `typ.ElemOff`.

            Jake Bailey

            Meaning, add another field to the map type and make everything conditional?

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Michael Pratt
            Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 7
            Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Michael Pratt <mpr...@google.com>
            Gerrit-Comment-Date: Wed, 18 Feb 2026 21:09:51 +0000
            unsatisfied_requirement
            open
            diffy

            Michael Pratt (Gerrit)

            unread,
            Feb 19, 2026, 5:21:31 PM (8 days ago) Feb 19
            to Jake Bailey, goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
            Attention needed from Jake Bailey

            Michael Pratt added 2 comments

            Patchset-level comments
            File-level comment, Patchset 6:
            Michael Pratt . unresolved

            Thanks! This looks good to me. My only worry is whether the removal of the ElemOff optimizations is measurable. I'm running a new microbenchmark run to see if I can measure a difference.

            Michael Pratt

            Unfortunately the difference is definitely measurable: https://gist.github.com/prattmic/e369df6d6db282b6b04f761bbd0cb009

            I only looked closely at MapFirst/4. At least for that one, the ElemOff change is what made the difference. Adding that back in as in https://go.dev/cl/747260 fixes the regression (though it's ugly).

            For the mapsplitgroup case, I also want to try incremently computing slotElem the same way we do slotKey, rather than using the multiply. IIRC, I tried this in the original implementation and it was worse, but it's worth trying again.

            File src/internal/runtime/maps/runtime_fast32.go
            Line 38, Patchset 1: var i uintptr
            Jake Bailey . unresolved

            I didn't like that I did this, but I later realized that this should still use the same number of variables given slotSize in the previous code was also variable. but, it is one more add in the loop.

            Michael Pratt

            Seeing the loop change here makes me lean more towards my previous suggestion that we keep `typ.ElemOff`.

            Jake Bailey

            Meaning, add another field to the map type and make everything conditional?

            Michael Pratt

            The suggestion I was thinking didn't actually make any sense, but yes adding another field works. As in https://go.dev/cl/747260.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Jake Bailey
            Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 7
            Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Comment-Date: Thu, 19 Feb 2026 22:21:25 +0000
            unsatisfied_requirement
            open
            diffy

            Michael Pratt (Gerrit)

            unread,
            Feb 24, 2026, 12:02:39 PM (3 days ago) Feb 24
            to Jake Bailey, goph...@pubsubhelper.golang.org, Michael Pratt, Go LUCI, golang-co...@googlegroups.com
            Attention needed from Jake Bailey

            Michael Pratt voted and added 4 comments

            Votes added by Michael Pratt

            Commit-Queue+1

            4 comments

            Patchset-level comments
            Michael Pratt . unresolved

            Thanks! This looks good to me. My only worry is whether the removal of the ElemOff optimizations is measurable. I'm running a new microbenchmark run to see if I can measure a difference.

            Michael Pratt

            Unfortunately the difference is definitely measurable: https://gist.github.com/prattmic/e369df6d6db282b6b04f761bbd0cb009

            I only looked closely at MapFirst/4. At least for that one, the ElemOff change is what made the difference. Adding that back in as in https://go.dev/cl/747260 fixes the regression (though it's ugly).

            For the mapsplitgroup case, I also want to try incremently computing slotElem the same way we do slotKey, rather than using the multiply. IIRC, I tried this in the original implementation and it was worse, but it's worth trying again.

            Michael Pratt

            I expanded https://go.dev/cl/747260 to all of the previous sites and ran all the benchmarks: https://gist.github.com/prattmic/bd471836570fdcda6f435af481d2d415

            It looks like this basically resolve all of the differences in the nomapsplitgroup case, so I think it should be incorporated into this CL (though unfortunately it is kind of ugly).

            Overall, mapsplitgroup results look fine. The most obvious regression is in the same small benchmarks, due to the multiplication in g.elem. I tried my suggestion above of computing slotElem incrementally in each loop iteration to avoid the multiplication. But unsurprisingly it didn't perform better. It would be nice to do something here, but I don't see how, this layout is just not amenable to this kind of optimization.

            File src/cmd/compile/internal/reflectdata/map.go
            Line 300, Patchset 6: keySize = gtyp.Field(1).Type.Elem().Size()
            Michael Pratt . resolved

            This is fine, but `t.Key().Size()` might be more obvious. Same with elem below.

            Jake Bailey

            t.Key().Size() doesn't work, because the size will change if it exceeds `MapMaxKeyBytes`.

            Michael Pratt

            Right, thanks

            File src/internal/runtime/maps/runtime_fast32.go
            Line 38, Patchset 1: var i uintptr
            Jake Bailey . resolved

            I didn't like that I did this, but I later realized that this should still use the same number of variables given slotSize in the previous code was also variable. but, it is one more add in the loop.

            Michael Pratt

            Seeing the loop change here makes me lean more towards my previous suggestion that we keep `typ.ElemOff`.

            Jake Bailey

            Meaning, add another field to the map type and make everything conditional?

            Michael Pratt

            The suggestion I was thinking didn't actually make any sense, but yes adding another field works. As in https://go.dev/cl/747260.

            Michael Pratt

            Acknowledged

            File src/internal/runtime/maps/table.go
            Line 619, Patchset 4: if (typ.KeySize + typ.ElemSize) > 32 {
            Jake Bailey . resolved

            This feels kind of bogus; not sure what this code should be now that keys and elems are separated.

            Michael Pratt

            It seems OK to me, it is the total size that we need to read+write.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Jake Bailey
            Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 7
            Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Comment-Date: Tue, 24 Feb 2026 17:02:34 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: Yes
            unsatisfied_requirement
            open
            diffy

            Jake Bailey (Gerrit)

            unread,
            12:35 AM (15 hours ago) 12:35 AM
            to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
            Attention needed from Michael Pratt

            Jake Bailey added 1 comment

            Patchset-level comments
            Michael Pratt . unresolved

            Thanks! This looks good to me. My only worry is whether the removal of the ElemOff optimizations is measurable. I'm running a new microbenchmark run to see if I can measure a difference.

            Michael Pratt

            Unfortunately the difference is definitely measurable: https://gist.github.com/prattmic/e369df6d6db282b6b04f761bbd0cb009

            I only looked closely at MapFirst/4. At least for that one, the ElemOff change is what made the difference. Adding that back in as in https://go.dev/cl/747260 fixes the regression (though it's ugly).

            For the mapsplitgroup case, I also want to try incremently computing slotElem the same way we do slotKey, rather than using the multiply. IIRC, I tried this in the original implementation and it was worse, but it's worth trying again.

            Michael Pratt

            I expanded https://go.dev/cl/747260 to all of the previous sites and ran all the benchmarks: https://gist.github.com/prattmic/bd471836570fdcda6f435af481d2d415

            It looks like this basically resolve all of the differences in the nomapsplitgroup case, so I think it should be incorporated into this CL (though unfortunately it is kind of ugly).

            Overall, mapsplitgroup results look fine. The most obvious regression is in the same small benchmarks, due to the multiplication in g.elem. I tried my suggestion above of computing slotElem incrementally in each loop iteration to avoid the multiplication. But unsurprisingly it didn't perform better. It would be nice to do something here, but I don't see how, this layout is just not amenable to this kind of optimization.

            Jake Bailey

            Is the next step for me to pull your CL into this one, then? What is left?

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Michael Pratt
            Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 7
            Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Michael Pratt <mpr...@google.com>
            Gerrit-Comment-Date: Fri, 27 Feb 2026 05:35:55 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Michael Pratt <mpr...@google.com>
            unsatisfied_requirement
            open
            diffy

            Michael Pratt (Gerrit)

            unread,
            10:46 AM (5 hours ago) 10:46 AM
            to Jake Bailey, goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
            Attention needed from Jake Bailey

            Michael Pratt added 1 comment

            Patchset-level comments
            Michael Pratt . unresolved

            Thanks! This looks good to me. My only worry is whether the removal of the ElemOff optimizations is measurable. I'm running a new microbenchmark run to see if I can measure a difference.

            Michael Pratt

            Unfortunately the difference is definitely measurable: https://gist.github.com/prattmic/e369df6d6db282b6b04f761bbd0cb009

            I only looked closely at MapFirst/4. At least for that one, the ElemOff change is what made the difference. Adding that back in as in https://go.dev/cl/747260 fixes the regression (though it's ugly).

            For the mapsplitgroup case, I also want to try incremently computing slotElem the same way we do slotKey, rather than using the multiply. IIRC, I tried this in the original implementation and it was worse, but it's worth trying again.

            Michael Pratt

            I expanded https://go.dev/cl/747260 to all of the previous sites and ran all the benchmarks: https://gist.github.com/prattmic/bd471836570fdcda6f435af481d2d415

            It looks like this basically resolve all of the differences in the nomapsplitgroup case, so I think it should be incorporated into this CL (though unfortunately it is kind of ugly).

            Overall, mapsplitgroup results look fine. The most obvious regression is in the same small benchmarks, due to the multiplication in g.elem. I tried my suggestion above of computing slotElem incrementally in each loop iteration to avoid the multiplication. But unsurprisingly it didn't perform better. It would be nice to do something here, but I don't see how, this layout is just not amenable to this kind of optimization.

            Jake Bailey

            Is the next step for me to pull your CL into this one, then? What is left?

            Michael Pratt

            Yes, that's all.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Jake Bailey
            Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 7
            Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Jake Bailey <jacob.b...@gmail.com>
            Gerrit-Comment-Date: Fri, 27 Feb 2026 15:46:01 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            unsatisfied_requirement
            open
            diffy

            Jake Bailey (Gerrit)

            unread,
            12:46 PM (3 hours ago) 12:46 PM
            to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
            Attention needed from Jake Bailey

            Jake Bailey uploaded new patchset

            Jake Bailey uploaded patch set #8 to this change.
            Following approvals got outdated and were removed:
            • TryBots-Pass: LUCI-TryBot-Result-1 by Go LUCI
            Open in Gerrit

            Related details

            Attention is currently required from:
            • Jake Bailey
            Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement is not satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: newpatchset
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
            Gerrit-Change-Number: 711560
            Gerrit-PatchSet: 8
            unsatisfied_requirement
            open
            diffy

            Jake Bailey (Gerrit)

            unread,
            12:46 PM (3 hours ago) 12:46 PM
            to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
            Attention needed from Michael Pratt

            Jake Bailey voted and added 1 comment

            Votes added by Jake Bailey

            Commit-Queue+1

            1 comment

            Patchset-level comments
            File-level comment, Patchset 6:
            Michael Pratt . resolved

            Thanks! This looks good to me. My only worry is whether the removal of the ElemOff optimizations is measurable. I'm running a new microbenchmark run to see if I can measure a difference.

            Michael Pratt

            Unfortunately the difference is definitely measurable: https://gist.github.com/prattmic/e369df6d6db282b6b04f761bbd0cb009

            I only looked closely at MapFirst/4. At least for that one, the ElemOff change is what made the difference. Adding that back in as in https://go.dev/cl/747260 fixes the regression (though it's ugly).

            For the mapsplitgroup case, I also want to try incremently computing slotElem the same way we do slotKey, rather than using the multiply. IIRC, I tried this in the original implementation and it was worse, but it's worth trying again.

            Michael Pratt

            I expanded https://go.dev/cl/747260 to all of the previous sites and ran all the benchmarks: https://gist.github.com/prattmic/bd471836570fdcda6f435af481d2d415

            It looks like this basically resolve all of the differences in the nomapsplitgroup case, so I think it should be incorporated into this CL (though unfortunately it is kind of ugly).

            Overall, mapsplitgroup results look fine. The most obvious regression is in the same small benchmarks, due to the multiplication in g.elem. I tried my suggestion above of computing slotElem incrementally in each loop iteration to avoid the multiplication. But unsurprisingly it didn't perform better. It would be nice to do something here, but I don't see how, this layout is just not amenable to this kind of optimization.

            Jake Bailey

            Is the next step for me to pull your CL into this one, then? What is left?

            Michael Pratt

            Yes, that's all.

            Jake Bailey

            Done

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Michael Pratt
            Submit Requirements:
              • requirement is not satisfiedCode-Review
              • requirement satisfiedNo-Unresolved-Comments
              • requirement is not satisfiedReview-Enforcement
              • requirement is not satisfiedTryBots-Pass
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: go
              Gerrit-Branch: master
              Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
              Gerrit-Change-Number: 711560
              Gerrit-PatchSet: 8
              Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
              Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
              Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
              Gerrit-Attention: Michael Pratt <mpr...@google.com>
              Gerrit-Comment-Date: Fri, 27 Feb 2026 17:46:21 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: Yes
              unsatisfied_requirement
              satisfied_requirement
              open
              diffy

              Jake Bailey (Gerrit)

              unread,
              1:17 PM (2 hours ago) 1:17 PM
              to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
              Attention needed from Michael Pratt

              Jake Bailey voted Commit-Queue+1

              Commit-Queue+1
              Open in Gerrit

              Related details

              Attention is currently required from:
              • Michael Pratt
              Submit Requirements:
              • requirement is not satisfiedCode-Review
              • requirement satisfiedNo-Unresolved-Comments
              • requirement is not satisfiedReview-Enforcement
              • requirement is not satisfiedTryBots-Pass
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: go
              Gerrit-Branch: master
              Gerrit-Change-Id: Ide8d1406ae4ab636f86edc40e0640cc80653197c
              Gerrit-Change-Number: 711560
              Gerrit-PatchSet: 9
              Gerrit-Owner: Jake Bailey <jacob.b...@gmail.com>
              Gerrit-Reviewer: Jake Bailey <jacob.b...@gmail.com>
              Gerrit-Reviewer: Michael Pratt <mpr...@google.com>
              Gerrit-Attention: Michael Pratt <mpr...@google.com>
              Gerrit-Comment-Date: Fri, 27 Feb 2026 18:17:28 +0000
              Gerrit-HasComments: No
              Gerrit-Has-Labels: Yes
              unsatisfied_requirement
              satisfied_requirement
              open
              diffy

              Jake Bailey (Gerrit)

              unread,
              1:43 PM (2 hours ago) 1:43 PM
              to goph...@pubsubhelper.golang.org, Go LUCI, Michael Pratt, golang-co...@googlegroups.com
              Gerrit-Comment-Date: Fri, 27 Feb 2026 18:43:30 +0000
              Gerrit-HasComments: No
              Gerrit-Has-Labels: Yes
              unsatisfied_requirement
              satisfied_requirement
              open
              diffy
              Reply all
              Reply to author
              Forward
              0 new messages