helloadhavan/github_issues huggingface dataset:
Repository: nodejs/node
Pull request: stream: fix pipeTo to defer writes per WHATWG spec

## Summary

- Fix `PipeToReadableStreamReadRequest[kChunk]` to defer writes via `queueMicrotask()` per the WHATWG Streams spec
- The spec requires that pipeTo's chunk steps must not synchronously call the write algorithm during `enqueue()`
- Remove expected WPT test failure for "enqueue() must not synchronously call write algorithm"

## Details

Previously, `PipeToReadableStreamReadRequest[kChunk]` would synchronously call `writableStreamDefaultWriterWrite()`, which violated the WHATWG Streams spec ([ReadableStreamPipeTo](https://streams.spec.whatwg.org/#readable-stream-pipe-to) step 15's "chunk steps").

This caused the WPT test `piping/general-addition.any.js` → `"enqueue() must not synchronously call write algorithm"` to fail, which was tracked as an expected failure (see https://github.com/whatwg/streams/issues/1243).

Wrapping the write in `queueMicrotask()` defers it to the next microtask, matching the spec's required timing semantics.

Refs: https://github.com/whatwg/streams/issues/1243

## Test plan

- [x] WPT streams tests pass (`test/wpt/test-streams.js`)
- [x] Previously expected failure now passes
- [x] All `test/parallel/test-webstreams-*.js` tests pass

Changed files:
filename: lib/internal/webstreams/readablestream.js
patch: @@ -1662,9 +1662,14 @@ class PipeToReadableStreamReadRequest {
   }
 
   [kChunk](chunk) {
-    this.state.currentWrite = writableStreamDefaultWriterWrite(this.writer, chunk);
-    setPromiseHandled(this.state.currentWrite);
-    this.promise.resolve(false);
+    // Per spec, pipeTo must queue a microtask for the write to avoid
+    // synchronous write during enqueue(). See WHATWG Streams spec
+    // "ReadableStreamPipeTo" step 15's "chunk steps".
+    queueMicrotask(() => {
+      this.state.currentWrite = writableStreamDefaultWriterWrite(this.writer, chunk);
+      setPromiseHandled(this.state.currentWrite);
+      this.promise.resolve(false);
+    });
   }
 
   [kClose]() {

filename: test/wpt/status/streams.json
patch: @@ -2,14 +2,6 @@
   "idlharness-shadowrealm.window.js": {
     "skip": "ShadowRealm support is not enabled"
   },
-  "piping/general-addition.any.js": {
-    "fail": {
-      "note": "Blocked on https://github.com/whatwg/streams/issues/1243",
-      "expected": [
-        "enqueue() must not synchronously call write algorithm"
-      ]
-    }
-  },
   "queuing-strategies-size-function-per-global.window.js": {
     "skip": "Browser-specific test"
   },
Repository: vercel/next.js
Pull request: [test] Only auto-retry individual e2e tests in CI

The per-test `jest.retryTimes(1)` added in #89929 is useful for CI resilience & performance but produces confusing logs and adds unnecessary wait time when investigating test failures locally.

We're now only enabling the retry when running in CI so that local runs fail fast on the first attempt.

Changed files:
filename: test/lib/e2e-utils/index.ts
patch: @@ -126,7 +126,9 @@ if (!e2eGlobal.__NEXT_E2E_TEST_CONFIG_PATCHED__) {
       global.test = wrapJestTestFn(global.test) as jest.It
     }
 
-    jest.retryTimes(1)
+    if (process.env.CI) {
+      jest.retryTimes(1)
+    }
   }
 
   e2eGlobal.__NEXT_E2E_TEST_CONFIG_PATCHED__ = true
Repository: electron/electron
Pull request: fix: potential UAF in `OnDownloadPathGenerated`

#### Description of Change

Fix potential UAF `OnDownloadPathGenerated`. There's already a `base::WeakPtrFactory`.

#### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [x] PR description included
- [x] I have built and tested this PR
- [x] `npm test` passes
- [x] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/main/README.md#examples).

#### Release Notes

Notes: none


Changed files:
filename: shell/browser/electron_download_manager_delegate.cc
patch: @@ -268,7 +268,7 @@ void ElectronDownloadManagerDelegate::OnDownloadPathGenerated(
     gin_helper::Promise<gin_helper::Dictionary> dialog_promise(isolate);
     auto dialog_callback = base::BindOnce(
         &ElectronDownloadManagerDelegate::OnDownloadSaveDialogDone,
-        base::Unretained(this), download_guid, std::move(callback));
+        weak_ptr_factory_.GetWeakPtr(), download_guid, std::move(callback));
 
     std::ignore = dialog_promise.Then(std::move(dialog_callback));
     file_dialog::ShowSaveDialog(settings, std::move(dialog_promise));
Repository: ollama/ollama
Pull request: cloud: set the proxy content-type to the same as local models

Fixes #12694 

Changed files:
filename: server/routes.go
patch: @@ -289,6 +289,12 @@ func (s *Server) GenerateHandler(c *gin.Context) {
 			return
 		}
 
+		contentType := "application/json; charset=utf-8"
+		if req.Stream != nil && *req.Stream {
+			contentType = "application/x-ndjson"
+		}
+		c.Header("Content-Type", contentType)
+
 		return
 	}
 
@@ -1932,6 +1938,12 @@ func (s *Server) ChatHandler(c *gin.Context) {
 			return
 		}
 
+		contentType := "application/json; charset=utf-8"
+		if req.Stream != nil && *req.Stream {
+			contentType = "application/x-ndjson"
+		}
+		c.Header("Content-Type", contentType)
+
 		return
 	}
Repository: huggingface/transformers
Pull request: perf: Optimize SynthID logits processor batch index construction

## Summary

I've noticed `test_synthidtext_watermark_processor_distributional_convergence_*` was our slowest tests in CircleCI 

This PR speeds up the slowest SynthID distributional convergence tests by optimizing a hot path in SynthIDTextWatermarkLogitsProcessor.

  ### What changed

  - File: src/transformers/generation/logits_process.py
  - In SynthIDTextWatermarkLogitsProcessor.__call__, replaced per-batch construction of all_indices:
      - Before: stack of batch_size separate torch.arange(...) tensors
      - After: single torch.arange(...) broadcast with .unsqueeze(0).expand(batch_size, -1)

  This is behavior-preserving and only changes how the dense continuation index tensor is built.

  ## Why

  test_synthidtext_watermark_processor_distributional_convergence_{0,1,2,3} in tests/generation/test_logits_process.py repeatedly call the processor in a tight loop (num_keys=1000, 5
  calls per key).
  The previous implementation rebuilt all_indices inefficiently on every call, causing millions of redundant torch.arange calls.

  ## Performance impact

  Side-by-side on the same machine:

  - pytest -q tests/generation/test_logits_process.py -k "distributional_convergence" --durations=10
      - Before: 39.73s
      - After: 20.03s
      - ~1.98x faster

  Microbenchmark (matching test loop shape):

  - Before: 10.704338s
  - After: 5.321214s
  - ~2.01x faster



Changed files:
filename: src/transformers/generation/logits_process.py
patch: @@ -2701,8 +2701,8 @@ def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor) -> to
         if self.debug_mode:
             scores = torch.ones_like(scores)
 
-        # Currently indices is just a arange to compute watermarking on the dense logits.
-        all_indices = torch.stack([torch.arange(vocab_size, device=self.device) for _ in range(batch_size)])
+        # Build continuation indices once and broadcast across batch instead of creating one arange per row.
+        all_indices = torch.arange(vocab_size, device=self.device).unsqueeze(0).expand(batch_size, -1)
 
         if self.state is None:
             # Initialize watermarking state if it does not exist.
Repository: ollama/ollama
Pull request: llm: Change memory allocation backoff from exponential to incremental

If we create a memory layout that should fit based on report free VRAM but allocation still fails, we start applying a backoff. This reduces free VRAM by an exponential percentage (1%, 2%, 4%...). However, the points chosen tend to be too dense at the beginning and too sparse at the end. Therefore, this switches to an incremental backoff (10%, 20%, 30%...).

Changed files:
filename: llm/server.go
patch: @@ -766,15 +766,12 @@ nextOperation:
 				// Memory allocation failed even though we created a layout that we thought should
 				// fit in available memory. This could happen if either our free memory reports
 				// are incorrect or if available memory is changing between layout and allocation
-				// time. Apply an exponential backoff to try to find the real amount of available
-				// space.
+				// time. Apply a backoff to try to find the real amount of available space.
 				if backoff > 1 {
 					slog.Warn("memory layout cannot be allocated", "memory", resp.Memory)
 					return nil, errors.New("memory layout cannot be allocated")
-				} else if backoff == 0 {
-					backoff = 0.01
 				} else {
-					backoff *= 2
+					backoff += 0.1
 				}
 
 				slog.Info("model layout did not fit, applying backoff", "backoff", fmt.Sprintf("%.2f", backoff))
Repository: electron/electron
Pull request: fix: potential UAF in `OnDownloadPathGenerated`

Backport of #50003

See that PR for details.


Notes: none


Changed files:
filename: shell/browser/electron_download_manager_delegate.cc
patch: @@ -268,7 +268,7 @@ void ElectronDownloadManagerDelegate::OnDownloadPathGenerated(
     gin_helper::Promise<gin_helper::Dictionary> dialog_promise(isolate);
     auto dialog_callback = base::BindOnce(
         &ElectronDownloadManagerDelegate::OnDownloadSaveDialogDone,
-        base::Unretained(this), download_guid, std::move(callback));
+        weak_ptr_factory_.GetWeakPtr(), download_guid, std::move(callback));
 
     std::ignore = dialog_promise.Then(std::move(dialog_callback));
     file_dialog::ShowSaveDialog(settings, std::move(dialog_promise));
Repository: facebook/react
Pull request: [DevTools] Bump version of react-devtools-core for react-devtools

This one was overlooked and yarn.lock was not synced.

Related:
- https://github.com/facebook/react/pull/34692
- https://github.com/facebook/react/pull/34723

Changed files:
filename: packages/react-devtools/package.json
patch: @@ -26,7 +26,7 @@
     "electron": "^23.1.2",
     "internal-ip": "^6.2.0",
     "minimist": "^1.2.3",
-    "react-devtools-core": "6.1.5",
+    "react-devtools-core": "7.0.0",
     "update-notifier": "^2.1.0"
   }
 }

filename: yarn.lock
patch: @@ -18233,12 +18233,12 @@ zip-stream@^2.1.2:
     compress-commons "^2.1.1"
     readable-stream "^3.4.0"
 
-zod-validation-error@^3.0.3:
-  version "3.4.0"
-  resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-3.4.0.tgz#3a8a1f55c65579822d7faa190b51336c61bee2a6"
-  integrity sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==
+"zod-validation-error@^3.0.3 || ^4.0.0":
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918"
+  integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==
 
-zod@^3.22.4:
-  version "3.24.2"
-  resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.2.tgz#8efa74126287c675e92f46871cfc8d15c34372b3"
-  integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==
+"zod@^3.22.4 || ^4.0.0":
+  version "4.1.11"
+  resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.11.tgz#4aab62f76cfd45e6c6166519ba31b2ea019f75f5"
+  integrity sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==
Repository: nodejs/node
Pull request: doc: explicitly mention Slack handle

as titled

Changed files:
filename: README.md
patch: @@ -889,15 +889,15 @@ releases on a rotation basis as outlined in the
   * [bengl](https://github.com/bengl) -
     **Bryan English** <<bryan@bryanenglish.com>> (he/him)
 * [HeroDevs](https://www.herodevs.com/)
-  * [juanarbol](https://github.com/juanarbol) - OpenJSF handle: `juanarbol`
+  * [juanarbol](https://github.com/juanarbol) - OpenJS Slack handle: `juanarbol`
     **Juan José Arboleda** <<soyjuanarbol@gmail.com>> (he/him)
-  * [marco-ippolito](https://github.com/marco-ippolito) - OpenJSF handle: `Marco Ippolito`
+  * [marco-ippolito](https://github.com/marco-ippolito) - OpenJS Slack handle: `Marco Ippolito`
     **Marco Ippolito** <<marcoippolito54@gmail.com>> (he/him)
 * [NodeSource](https://nodesource.com/)
-  * [RafaelGSS](https://github.com/RafaelGSS) - OpenJSF handle: `RafaelGSS`
+  * [RafaelGSS](https://github.com/RafaelGSS) - OpenJS Slack handle: `RafaelGSS`
     **Rafael Gonzaga** <<rafael.nunu@hotmail.com>> (he/him)
 * [Platformatic](https://platformatic.dev/)
-  * [mcollina](https://github.com/mcollina) - OpenJSF handle: `mcollina`
+  * [mcollina](https://github.com/mcollina) - OpenJS Slack handle: `mcollina`
     **Matteo Collina** <<matteo.collina@gmail.com>> (he/him)
 * [Red Hat](https://redhat.com) / [IBM](https://ibm.com)
   * [BethGriggs](https://github.com/BethGriggs) -
Repository: rust-lang/rust
Pull request: Remove a flaky `got_timeout` assert from two channel tests

In CI, the receiver thread can be descheduled for a surprisingly long time, so there's no guarantee that a timeout actually occurs.

One of these tests actually failed in https://github.com/rust-lang/rust/pull/153387#issuecomment-4016078983.

Earlier failures:
- https://github.com/rust-lang/rust/pull/150365#issuecomment-3691457455
- https://github.com/rust-lang/rust/pull/147775#issuecomment-3410454391

---

- Prior art: https://github.com/rust-lang/rust/pull/152878

Changed files:
filename: library/std/tests/sync/mpmc.rs
patch: @@ -475,23 +475,20 @@ fn stress_recv_timeout_two_threads() {
     });
 
     let mut recv_count = 0;
-    let mut got_timeout = false;
     loop {
         match rx.recv_timeout(timeout) {
             Ok(n) => {
                 assert_eq!(n, 1usize);
                 recv_count += 1;
             }
             Err(RecvTimeoutError::Timeout) => {
-                got_timeout = true;
                 continue;
             }
             Err(RecvTimeoutError::Disconnected) => break,
         }
     }
 
     assert_eq!(recv_count, stress);
-    assert!(got_timeout);
 }
 
 #[test]

filename: library/std/tests/sync/mpsc.rs
patch: @@ -438,23 +438,20 @@ fn stress_recv_timeout_two_threads() {
     });
 
     let mut recv_count = 0;
-    let mut got_timeout = false;
     loop {
         match rx.recv_timeout(timeout) {
             Ok(n) => {
                 assert_eq!(n, 1usize);
                 recv_count += 1;
             }
             Err(RecvTimeoutError::Timeout) => {
-                got_timeout = true;
                 continue;
             }
             Err(RecvTimeoutError::Disconnected) => break,
         }
     }
 
     assert_eq!(recv_count, stress);
-    assert!(got_timeout);
 }
 
 #[test]
Repository: facebook/react
Pull request: Revert "[DevTools] Always include the root in the timeline and select it by default"

Reverts facebook/react#34654

Changed files:
filename: packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTab.js
patch: @@ -34,10 +34,6 @@ import {
   SuspenseTreeStateContext,
 } from './SuspenseTreeContext';
 import {StoreContext, OptionsContext} from '../context';
-import {
-  TreeDispatcherContext,
-  TreeStateContext,
-} from '../Components/TreeContext';
 import Button from '../Button';
 import Toggle from '../Toggle';
 import typeof {SyntheticPointerEvent} from 'react-dom-bindings/src/events/SyntheticEvent';
@@ -185,18 +181,6 @@ function SuspenseTab(_: {}) {
     treeListHorizontalFraction,
   } = state;
 
-  const {inspectedElementID} = useContext(TreeStateContext);
-  const {timeline} = useContext(SuspenseTreeStateContext);
-  const treeDispatch = useContext(TreeDispatcherContext);
-  useLayoutEffect(() => {
-    // If the inspected element is still null and we've loaded a timeline, we can set the initial selection.
-    // TODO: This tab should use its own source of truth instead so we only show suspense boundaries.
-    if (inspectedElementID === null && timeline.length > 0) {
-      const milestone = timeline[timeline.length - 1];
-      treeDispatch({type: 'SELECT_ELEMENT_BY_ID', payload: milestone});
-    }
-  }, [timeline, inspectedElementID]);
-
   useLayoutEffect(() => {
     const wrapperElement = wrapperTreeRef.current;
Repository: huggingface/transformers
Pull request: Update expected output for Jais2 model tests

@ydshieh , pls help review, thx!

Changed files:
filename: tests/models/jais2/test_modeling_jais2.py
patch: @@ -17,7 +17,9 @@
 
 from transformers import AutoTokenizer, is_torch_available
 from transformers.testing_utils import (
+    Expectations,
     cleanup,
+    require_deterministic_for_xpu,
     require_torch,
     require_torch_accelerator,
     slow,
@@ -81,6 +83,7 @@ def setUp(self):
     def tearDown(self):
         cleanup(torch_device, gc_collect=True)
 
+    @require_deterministic_for_xpu
     def test_model_logits(self):
         model_id = "inceptionai/Jais-2-8B-Chat"
         dummy_input = torch.LongTensor([[0, 0, 0, 0, 0, 0, 1, 2, 3], [1, 1, 2, 3, 4, 5, 6, 7, 8]]).to(torch_device)
@@ -92,8 +95,20 @@ def test_model_logits(self):
             logits = model(dummy_input, attention_mask=attention_mask).logits
         logits = logits.float()
 
-        EXPECTED_LOGITS_BATCH0 = [-0.9795, -1.0957, -0.9644, -0.9570, -0.9648, -0.9595, -0.9668, -0.9688, -0.9688, -0.9644, -0.9609, -0.9707, -0.9629, -0.9736, -0.9712]  # fmt: skip
-        EXPECTED_LOGITS_BATCH1 = [-1.5332, -1.6289, -1.5264, -1.5195, -1.5264, -1.5215, -1.5303, -1.5303, -1.5312, -1.5264, -1.5234, -1.5322, -1.5254, -1.5352, -1.5332]  # fmt: skip
+        # fmt: off
+        EXPECTED_LOGITS_BATCH0 = Expectations(
+            {
+                ("cuda", None): [-0.9751, -1.0918, -0.9600, -0.9526, -0.9600, -0.9551, -0.9624, -0.9644, -0.9644, -0.9600, -0.9561, -0.9658, -0.9585, -0.9688, -0.9663],
+                ("xpu", 3): [-0.9692, -1.0859, -0.9541, -0.9468, -0.9546, -0.9492, -0.9570, -0.9585, -0.9585, -0.9541, -0.9507, -0.9604, -0.9526, -0.9634, -0.9609],
+            }
+        ).get_expectation()
+        EXPECTED_LOGITS_BATCH1 = Expectations(
+            {
+                ("cuda", None): [-1.5361, -1.6328, -1.5283, -1.5225, -1.5293, -1.5244, -1.5322, -1.5332, -1.5332, -1.5293, -1.5254, -1.5352, -1.5273, -1.5381, -1.5361],
+                ("xpu", 3): [-1.5342, -1.6318, -1.5264, -1.5205, -1.5273, -1.5225, -1.5303, -1.5312, -1.5312, -1.5273, -1.5234, -1.5332, -1.5254, -1.5361, -1.5342],
+            }
+        ).get_expectation()
+        # fmt: on
 
         torch.testing.assert_close(
             logits[0, -1, :15],
Repository: ollama/ollama
Pull request: kvcache: Remove special case for reservation mask

We currently short circuit generation of the cache mask and just generate an empty tensor of the correct size. However, in some cases, this can also skip a cast operation. This can result in the worst case graph being not fully worst case.

We don't actually need the fast path for mask generation, so it's better to just use the normal code path.

Changed files:
filename: kvcache/causal.go
patch: @@ -40,11 +40,6 @@ type Causal struct {
 
 	// ** current forward pass **
 
-	// curReserve indicates that this forward pass is only for
-	// memory reservation and we should not update our metadata
-	// based on it.
-	curReserve bool
-
 	// the active layer for Get and Put
 	curLayer int
 
@@ -206,13 +201,12 @@ func (c *Causal) Close() {
 }
 
 func (c *Causal) StartForward(ctx ml.Context, batch input.Batch, reserve bool) error {
-	c.curReserve = reserve
 	c.curBatchSize = len(batch.Positions)
 	c.curSequences = batch.Sequences
 	c.curPositions = batch.Positions
 	c.opts.Except = nil
 
-	if !c.curReserve {
+	if !reserve {
 		c.updateSlidingWindow()
 
 		var err error
@@ -379,10 +373,6 @@ func (c *Causal) buildMask(ctx ml.Context) ml.Tensor {
 
 	length := c.curCellRange.max - c.curCellRange.min + 1
 
-	if c.curReserve {
-		return ctx.Input().Empty(c.config.MaskDType, length, batchSize)
-	}
-
 	mask := make([]float32, batchSize*length)
 
 	for i := range c.curBatchSize {
Repository: ollama/ollama
Pull request: llamarunner: Record the time for all batches during prompt processing

Currently, we only record the time for the last batch when processing the prompt. This results in unrealistically high numbers for the old llama runner.

Before:
total duration:       31.273112939s
load duration:        4.97054657s
prompt eval count:    32768 token(s)
prompt eval duration: 235.137439ms
prompt eval rate:     139356.80 tokens/s
eval count:           1873 token(s)
eval duration:        18.173182374s
eval rate:            103.06 tokens/s

After:
total duration:       30.024798033s
load duration:        4.758588663s
prompt eval count:    32768 token(s)
prompt eval duration: 7.779621548s
prompt eval rate:     4212.03 tokens/s
eval count:           1769 token(s)
eval duration:        17.148014223s
eval rate:            103.16 tokens/s

Changed files:
filename: runner/llamarunner/runner.go
patch: @@ -384,6 +384,7 @@ func (s *Server) processBatch(tokenBatch *llama.Batch, embedBatch *llama.Batch)
 	defer s.mu.Unlock()
 
 	var batch *llama.Batch
+	var numOutputs int
 
 	seqIdx := s.nextSeq - 1
 	for range s.seqs {
@@ -446,7 +447,12 @@ func (s *Server) processBatch(tokenBatch *llama.Batch, embedBatch *llama.Batch)
 				break
 			}
 
-			batch.Add(input.token, input.embed, len(seq.cache.Inputs)+len(seq.pendingInputs), i+1 == len(seq.inputs), seq.cache.Id)
+			output := i+1 == len(seq.inputs)
+			batch.Add(input.token, input.embed, len(seq.cache.Inputs)+len(seq.pendingInputs), output, seq.cache.Id)
+			if output {
+				numOutputs++
+			}
+
 			seq.pendingInputs = append(seq.pendingInputs, input)
 			seq.iBatch = batch.NumTokens() - 1
 		}
@@ -463,6 +469,10 @@ func (s *Server) processBatch(tokenBatch *llama.Batch, embedBatch *llama.Batch)
 		return fmt.Errorf("failed to decode batch: %w", err)
 	}
 
+	if numOutputs > 0 {
+		s.lc.Synchronize()
+	}
+
 	for i, seq := range s.seqs {
 		if seq == nil {
 			continue
@@ -476,10 +486,10 @@ func (s *Server) processBatch(tokenBatch *llama.Batch, embedBatch *llama.Batch)
 
 		// don't sample prompt processing
 		if len(seq.inputs) != 0 {
+			seq.processingDuration += time.Since(t)
 			continue
 		}
 
-		s.lc.Synchronize()
 		seq.numDecoded++
 		if seq.numDecoded > 1 {
 			seq.generationDuration += time.Since(t)
Repository: rust-lang/rust
Pull request: bootstrap: Pass `--features=rustc` to rustc_transmute

This matters for `x test rustc_transmute`, where the feature won't automatically be enabled and as a result spew a bunch of warnings.

<!-- homu-ignore:start -->
<!--
If this PR is related to an unstable feature or an otherwise tracked effort,
please link to the relevant tracking issue here. If you don't know of a related
tracking issue or there are none, feel free to ignore this.

This PR will get automatically assigned to a reviewer. In case you would like
a specific user to review your work, you can assign it to them by using

    r? <reviewer name>
-->
<!-- homu-ignore:end -->


Changed files:
filename: src/bootstrap/src/lib.rs
patch: @@ -883,6 +883,12 @@ impl Build {
             features.push("check_only");
         }
 
+        if crates.iter().any(|c| c == "rustc_transmute") {
+            // for `x test rustc_transmute`, this feature isn't enabled automatically by a
+            // dependent crate.
+            features.push("rustc");
+        }
+
         // If debug logging is on, then we want the default for tracing:
         // https://github.com/tokio-rs/tracing/blob/3dd5c03d907afdf2c39444a29931833335171554/tracing/src/level_filters.rs#L26
         // which is everything (including debug/trace/etc.)