{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":131212638,"defaultBranch":"master","name":"gvisor","ownerLogin":"google","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-04-26T21:28:49.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1342004?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726779999.0","currentOid":""},"activityList":{"items":[{"before":"2f4ac98b7211b127fb61037ba57857704a79e375","after":"5c8b0952b836fe896c6b7b482d1256d50b42bff7","ref":"refs/heads/test/cl674746696","pushedAt":"2024-09-19T21:25:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"pgalloc: integrate async page loading\n\nWhen a pages file is provided to `runsc restore`, reads from that file are\nasynchronous (via statefile.AsyncReader) in order to maximize throughput.\nHowever, all such reads must complete before Kernel.LoadFrom() returns, so\napplications cannot execute before MemoryFile loading is complete. The main\nobjective of this CL is to allow reads to continue after Kernel.LoadFrom()\nreturns, allowing applications to execute while MemoryFile loading is still in\nprogress.\n\nMemoryFile ranges that have yet to be loaded, but that are being waited-for\nby applications, should be prioritized over ranges for which no application\nis waiting. This requires that application requests for data (calls to\nMemoryFile.(memmap.File).DataFD/MapInternal()) need to be able to determine\nwhich ranges have not yet been loaded, request reads for such ranges with\nelevated priority, and wait for only those reads to be completed; none of\nthese are supported by the existing statefile.AsyncReader.\n\nThus:\n\n- Add //pkg/sentry/pgalloc/aio, which provides an async I/O API that is\n designed to be easily implementable using a goroutine pool, Linux native AIO,\n or io_uring, though only includes a goroutine pool implementation. (io_uring\n is widely disabled due to security vulnerabilities. In my testing, Linux\n native AIO is slower than the goroutine pool, but this may change with lower\n GOMAXPROCS which needs further testing.)\n\n- Move I/O scheduling into pgalloc: introduce an async page loader goroutine\n that is started by MemoryFile.LoadFrom() when async page loading is requested\n (implicitly, via the existence of a pages file), which is responsible for\n driving submission of read requests and handling their completions.\n\nPiperOrigin-RevId: 674746696","shortMessageHtmlLink":"pgalloc: integrate async page loading"}},{"before":null,"after":"770e60035ec78c787d2866d554df03242e5fe71f","ref":"refs/heads/test/cl674746697","pushedAt":"2024-09-19T21:06:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Add memmap.File.DataFD().\n\nThis is used in cl/674746696 to ensure that users of MemoryFile data wait until\nthat data has been loaded.\n\nPiperOrigin-RevId: 674746697","shortMessageHtmlLink":"Add memmap.File.DataFD()."}},{"before":"6eab537d30d520166c6087f3a615733c77bf6668","after":"cdfecae31498c3017d13b60fc07242c6350160e1","ref":"refs/heads/test/cl676503370","pushedAt":"2024-09-19T21:03:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Add //pkg/ringdeque.\n\nThis is used in cl/674746696.\n\nPiperOrigin-RevId: 676503370","shortMessageHtmlLink":"Add //pkg/ringdeque."}},{"before":"49310d92b10340860361b4f047b1519081e9927e","after":null,"ref":"refs/heads/test/cl676518625","pushedAt":"2024-09-19T20:52:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"}},{"before":"f229b3e772417b8a075eda7c444cc76ead29f955","after":"49310d92b10340860361b4f047b1519081e9927e","ref":"refs/heads/master","pushedAt":"2024-09-19T20:52:58.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Merge pull request #10928 from bprosnitz:patch-1\n\nPiperOrigin-RevId: 676550349","shortMessageHtmlLink":"Merge pull request #10928 from bprosnitz:patch-1"}},{"before":"d1891a523ef1cdc64f083e7b5c5b1d8a42e5dafc","after":"49310d92b10340860361b4f047b1519081e9927e","ref":"refs/heads/test/cl676518625","pushedAt":"2024-09-19T20:52:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Merge pull request #10928 from bprosnitz:patch-1\n\nPiperOrigin-RevId: 676550349","shortMessageHtmlLink":"Merge pull request #10928 from bprosnitz:patch-1"}},{"before":"46ed3266486c1016f76c82b5802fb699d70e7e30","after":"d1891a523ef1cdc64f083e7b5c5b1d8a42e5dafc","ref":"refs/heads/test/cl676518625","pushedAt":"2024-09-19T20:39:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Update go version to 1.23.1\n\nFUTURE_COPYBARA_INTEGRATE_REVIEW=https://github.com/google/gvisor/pull/10928 from bprosnitz:patch-1 2c4bc699d3dfe4cbf2aae6d9f9c08d964cc4dd08\nPiperOrigin-RevId: 676518625","shortMessageHtmlLink":"Update go version to 1.23.1"}},{"before":"aedebf3747a5c106a3c59ff25326b992f68726c0","after":"46ed3266486c1016f76c82b5802fb699d70e7e30","ref":"refs/heads/test/cl676518625","pushedAt":"2024-09-19T19:44:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Update go version to 1.23.1\n\nFUTURE_COPYBARA_INTEGRATE_REVIEW=https://github.com/google/gvisor/pull/10928 from bprosnitz:patch-1 2c4bc699d3dfe4cbf2aae6d9f9c08d964cc4dd08\nPiperOrigin-RevId: 676518625","shortMessageHtmlLink":"Update go version to 1.23.1"}},{"before":null,"after":"aedebf3747a5c106a3c59ff25326b992f68726c0","ref":"refs/heads/test/cl676518625","pushedAt":"2024-09-19T19:36:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Update go version to 1.23.1\n\nFUTURE_COPYBARA_INTEGRATE_REVIEW=https://github.com/google/gvisor/pull/10928 from bprosnitz:patch-1 2c4bc699d3dfe4cbf2aae6d9f9c08d964cc4dd08\nPiperOrigin-RevId: 676518625","shortMessageHtmlLink":"Update go version to 1.23.1"}},{"before":null,"after":"2f4ac98b7211b127fb61037ba57857704a79e375","ref":"refs/heads/test/cl674746696","pushedAt":"2024-09-19T19:19:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"pgalloc: integrate async page loading\n\nWhen a pages file is provided to `runsc restore`, reads from that file are\nasynchronous (via statefile.AsyncReader) in order to maximize throughput.\nHowever, all such reads must complete before Kernel.LoadFrom() returns, so\napplications cannot execute before MemoryFile loading is complete. The main\nobjective of this CL is to allow reads to continue after Kernel.LoadFrom()\nreturns, allowing applications to execute while MemoryFile loading is still in\nprogress.\n\nMemoryFile ranges that have yet to be loaded, but that are being waited-for\nby applications, should be prioritized over ranges for which no application\nis waiting. This requires that application requests for data (calls to\nMemoryFile.(memmap.File).DataFD/MapInternal()) need to be able to determine\nwhich ranges have not yet been loaded, request reads for such ranges with\nelevated priority, and wait for only those reads to be completed; none of\nthese are supported by the existing statefile.AsyncReader.\n\nThus:\n\n- Add //pkg/sentry/pgalloc/aio, which provides an async I/O API that is\n designed to be easily implementable using a goroutine pool, Linux native AIO,\n or io_uring, though only includes a goroutine pool implementation. (io_uring\n is widely disabled due to security vulnerabilities. In my testing, Linux\n native AIO is slower than the goroutine pool, but this may change with lower\n GOMAXPROCS and so requires further prod-like testing.)\n\n- Move I/O scheduling into pgalloc: introduce an async page loader goroutine\n that is started by MemoryFile.LoadFrom() when async page loading is requested\n (implicitly, via the existence of a pages file), which is responsible for\n driving submission of read requests and handling their completions.\n\nPiperOrigin-RevId: 674746696","shortMessageHtmlLink":"pgalloc: integrate async page loading"}},{"before":null,"after":"6eab537d30d520166c6087f3a615733c77bf6668","ref":"refs/heads/test/cl676503370","pushedAt":"2024-09-19T19:07:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Add //pkg/ringdeque.\n\nThis is used in cl/674746696.\n\nPiperOrigin-RevId: 676503370","shortMessageHtmlLink":"Add //pkg/ringdeque."}},{"before":"f6ce88d75f1cb5f4767aa7b7e3c1920e8cf5c20a","after":"f4396f32f786a35f72a9ab030af3c8b90c27c5ca","ref":"refs/heads/go","pushedAt":"2024-09-19T18:31:53.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"gvisor-go-bot","name":null,"path":"/gvisor-go-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/51282458?s=80&v=4"},"commit":{"message":"Merge release-20240916.0-10-gf229b3e77 (automated)","shortMessageHtmlLink":"Merge release-20240916.0-10-gf229b3e77 (automated)"}},{"before":"f229b3e772417b8a075eda7c444cc76ead29f955","after":null,"ref":"refs/heads/test/cl675708869","pushedAt":"2024-09-19T18:24:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"}},{"before":"ab64b5eb548692d93cc2cde251d606e0cf1a30d3","after":"f229b3e772417b8a075eda7c444cc76ead29f955","ref":"refs/heads/master","pushedAt":"2024-09-19T18:24:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone.\n\nThe new mount namespace was being created with the old user namespace,\nnot the new one. This led to permission errors when creating new mounts.\n\nPiperOrigin-RevId: 676489580","shortMessageHtmlLink":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone."}},{"before":"4b05f705d2b9298890b72aca8966c2eb0a7a653d","after":"f229b3e772417b8a075eda7c444cc76ead29f955","ref":"refs/heads/test/cl675708869","pushedAt":"2024-09-19T18:24:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone.\n\nThe new mount namespace was being created with the old user namespace,\nnot the new one. This led to permission errors when creating new mounts.\n\nPiperOrigin-RevId: 676489580","shortMessageHtmlLink":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone."}},{"before":"ae44a0da79366e3cf163929b2f2105b16b128caa","after":"4b05f705d2b9298890b72aca8966c2eb0a7a653d","ref":"refs/heads/test/cl675708869","pushedAt":"2024-09-19T17:22:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone.\n\nThe new mount namespace was being created with the old user namespace,\nnot the new one. This led to permission errors when creating new mounts.\n\nPiperOrigin-RevId: 675708869","shortMessageHtmlLink":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone."}},{"before":null,"after":"68220d2fc9cd5090b3adb665da44ed468621f592","ref":"refs/heads/test/cl676411359","pushedAt":"2024-09-19T15:18:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Internal change.\n\nPiperOrigin-RevId: 676411359","shortMessageHtmlLink":"Internal change."}},{"before":"ab64b5eb548692d93cc2cde251d606e0cf1a30d3","after":null,"ref":"refs/heads/test/cl670717935","pushedAt":"2024-09-18T21:02:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"}},{"before":"8425e278c51eaec75de310cf3d13cf1e6ae0a05e","after":"ab64b5eb548692d93cc2cde251d606e0cf1a30d3","ref":"refs/heads/master","pushedAt":"2024-09-18T21:02:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Create a precise host file mapper that respects host file ranges.\n\nThis is required to get tpuproxy to work properly on the KVM platform.\n\nPiperOrigin-RevId: 676120793","shortMessageHtmlLink":"Create a precise host file mapper that respects host file ranges."}},{"before":"c2f9408510e81ce6c862b0b89b5068f6fdb6efcd","after":"ab64b5eb548692d93cc2cde251d606e0cf1a30d3","ref":"refs/heads/test/cl670717935","pushedAt":"2024-09-18T21:02:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Create a precise host file mapper that respects host file ranges.\n\nThis is required to get tpuproxy to work properly on the KVM platform.\n\nPiperOrigin-RevId: 676120793","shortMessageHtmlLink":"Create a precise host file mapper that respects host file ranges."}},{"before":"94452b01d970fb87b82e134d304363c456d44767","after":"c2f9408510e81ce6c862b0b89b5068f6fdb6efcd","ref":"refs/heads/test/cl670717935","pushedAt":"2024-09-18T20:11:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Create a precise host file mapper that respects host file ranges.\n\nThis is required to get tpuproxy to work properly on the KVM platform.\n\nPiperOrigin-RevId: 670717935","shortMessageHtmlLink":"Create a precise host file mapper that respects host file ranges."}},{"before":"21ed3b6138c2fd639703d8f5c43c49336e849f9b","after":"ae44a0da79366e3cf163929b2f2105b16b128caa","ref":"refs/heads/test/cl675708869","pushedAt":"2024-09-18T19:59:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone.\n\nThe new mount namespace was being created with the old user namespace,\nnot the new one. This led to permission errors when creating new mounts.\n\nPiperOrigin-RevId: 675708869","shortMessageHtmlLink":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone."}},{"before":null,"after":"21ed3b6138c2fd639703d8f5c43c49336e849f9b","ref":"refs/heads/test/cl675708869","pushedAt":"2024-09-18T19:28:11.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone.\n\nThe new mount namespace was being created with the old user namespace,\nnot the new one. This led to permission errors when creating new mounts.\n\nPiperOrigin-RevId: 675708869","shortMessageHtmlLink":"Fix small logic bug with CLONE_NEWUSER|CLONE_NEWNS in clone."}},{"before":"1cb993124d38459ff49b2014b38c1623b48c24e1","after":"94452b01d970fb87b82e134d304363c456d44767","ref":"refs/heads/test/cl670717935","pushedAt":"2024-09-18T19:24:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Create a precise host file mapper that respects host file ranges.\n\nThis is required to get tpuproxy to work properly on the KVM platform.\n\nPiperOrigin-RevId: 670717935","shortMessageHtmlLink":"Create a precise host file mapper that respects host file ranges."}},{"before":"e0915abc31cc3cd6e162d7c0062326f47825cb8d","after":"1cb993124d38459ff49b2014b38c1623b48c24e1","ref":"refs/heads/test/cl670717935","pushedAt":"2024-09-18T17:43:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"Create a precise host file mapper that respects host file ranges.\n\nThis is required to get tpuproxy to work properly on the KVM platform.\n\nPiperOrigin-RevId: 670717935","shortMessageHtmlLink":"Create a precise host file mapper that respects host file ranges."}},{"before":"abe77bde08492552b5542c07c4167ca7f2e6f651","after":"f6ce88d75f1cb5f4767aa7b7e3c1920e8cf5c20a","ref":"refs/heads/go","pushedAt":"2024-09-18T04:28:59.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"gvisor-go-bot","name":null,"path":"/gvisor-go-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/51282458?s=80&v=4"},"commit":{"message":"Merge release-20240826.0-86-g8425e278c (automated)","shortMessageHtmlLink":"Merge release-20240826.0-86-g8425e278c (automated)"}},{"before":"8425e278c51eaec75de310cf3d13cf1e6ae0a05e","after":null,"ref":"refs/heads/test/cl675320240","pushedAt":"2024-09-18T04:21:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"}},{"before":"ed5a61a24bcd2edbc0897a375a236a49d532ca85","after":"8425e278c51eaec75de310cf3d13cf1e6ae0a05e","ref":"refs/heads/master","pushedAt":"2024-09-18T04:21:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"segment: add Set.Remove[Full]RangeWith()\n\nThese support the relatively common use case of removing all segments in a\ngiven range (unconditionally) but doing something with them before they're\nremoved. This is always more compact, and may be slightly faster in some cases\n(every replaced loop calls Isolate per iteration, while RemoveRangeWith avoids\nredundant split checks between segments), at the cost of a direct function\ncall.\n\nAlso slightly optimize Set.LowerBoundSegmentSplitBefore() and\nSet.UpperBoundSegmentSplitAfter() by inlining LowerBoundSegment and\nUpperBoundSegment respectively; in the cases where Find() returns a\nGapIterator, the segment that is returned doesn't need to be split since it\ndoesn't contain min/max respectively.\n\nPiperOrigin-RevId: 675824581","shortMessageHtmlLink":"segment: add Set.Remove[Full]RangeWith()"}},{"before":"909f1c043bdb7e1a2af5c6a6df328f6f817b4887","after":"8425e278c51eaec75de310cf3d13cf1e6ae0a05e","ref":"refs/heads/test/cl675320240","pushedAt":"2024-09-18T04:21:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"segment: add Set.Remove[Full]RangeWith()\n\nThese support the relatively common use case of removing all segments in a\ngiven range (unconditionally) but doing something with them before they're\nremoved. This is always more compact, and may be slightly faster in some cases\n(every replaced loop calls Isolate per iteration, while RemoveRangeWith avoids\nredundant split checks between segments), at the cost of a direct function\ncall.\n\nAlso slightly optimize Set.LowerBoundSegmentSplitBefore() and\nSet.UpperBoundSegmentSplitAfter() by inlining LowerBoundSegment and\nUpperBoundSegment respectively; in the cases where Find() returns a\nGapIterator, the segment that is returned doesn't need to be split since it\ndoesn't contain min/max respectively.\n\nPiperOrigin-RevId: 675824581","shortMessageHtmlLink":"segment: add Set.Remove[Full]RangeWith()"}},{"before":"8804f993845158b1196d6034fbbf8ac0d783ab55","after":"909f1c043bdb7e1a2af5c6a6df328f6f817b4887","ref":"refs/heads/test/cl675320240","pushedAt":"2024-09-18T03:27:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"copybara-service[bot]","name":null,"path":"/apps/copybara-service","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/44061?s=80&v=4"},"commit":{"message":"segment: add Set.Remove[Full]RangeWith()\n\nThese support the relatively common use case of removing all segments in a\ngiven range (unconditionally) but doing something with them before they're\nremoved. This is always more compact, and may be slightly faster in some cases\n(every replaced loop calls Isolate per iteration, while RemoveRangeWith avoids\nredundant split checks between segments), at the cost of a direct function\ncall.\n\nAlso slightly optimize Set.LowerBoundSegmentSplitBefore() and\nSet.UpperBoundSegmentSplitAfter() by inlining LowerBoundSegment and\nUpperBoundSegment respectively; in the cases where Find() returns a\nGapIterator, the segment that is returned doesn't need to be split since it\ndoesn't contain min/max respectively.\n\nPiperOrigin-RevId: 675320240","shortMessageHtmlLink":"segment: add Set.Remove[Full]RangeWith()"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQyMToyNToxNS4wMDAwMDBazwAAAAS7VVTH","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQyMToyNToxNS4wMDAwMDBazwAAAAS7VVTH","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOFQwMzoyNzo1Ny4wMDAwMDBazwAAAAS5MRqc"}},"title":"Activity ยท google/gvisor"}