helloadhavan/github_issues huggingface dataset:
Repository: nodejs/node
Pull request: deps: brotli: cherry-pick e230f474b87 fix LoongArch64 architecture build failed

issue:#60835
LoongArch64 CI is in a failed state (https://ci.nodejs.org/job/node-test-commit-loongarch64/nodes=clfs23-64/852)

After upgrading Brotli to 1.2.0, the LoongArch64 architecture compilation fails with the error "invalid argument of ‘model’ attribute". 
```
../deps/brotli/c/common/constants.h:196:23: error: invalid argument of ‘model’ attribute
  196 | BrotliPrefixCodeRange _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS];
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~
../deps/brotli/c/common/constants.c:10:23: error: invalid argument of ‘model’ attribute
   10 | BrotliPrefixCodeRange _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS] = {
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [deps/brotli/brotli.target.mk:122：/home/iojs/build/workspace/node-test-commit-loongarch64/out/Release/obj.target/brotli/deps/brotli/c/common/constants.o] 错误 1
make[2]: *** 正在等待未完成的任务....
```
Origin commit message:

	disable BROTLI_MODEL macro for some targets

	PiperOrigin-RevId: 827486322

Refs: https://github.com/google/brotli/commit/e230f474b87134e8c6c85b630084c612057f253e

Changed files:
filename: deps/brotli/c/common/platform.h
patch: @@ -213,6 +213,10 @@ To apply compiler hint, enclose the branching condition into macros, like this:
 #define BROTLI_TARGET_MIPS64
 #endif
 
+#if defined(__ia64__) || defined(_M_IA64)
+#define BROTLI_TARGET_IA64
+#endif
+
 #if defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8_64) || \
     defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64) || \
     defined(BROTLI_TARGET_LOONGARCH64) || defined(BROTLI_TARGET_MIPS64)
@@ -665,13 +669,14 @@ BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) {
 #undef BROTLI_TEST
 #endif
 
-#if BROTLI_GNUC_HAS_ATTRIBUTE(model, 3, 0, 3)
+#if !defined(BROTLI_MODEL) && BROTLI_GNUC_HAS_ATTRIBUTE(model, 3, 0, 3) && \
+    !defined(BROTLI_TARGET_IA64) && !defined(BROTLI_TARGET_LOONGARCH64)
 #define BROTLI_MODEL(M) __attribute__((model(M)))
 #else
 #define BROTLI_MODEL(M) /* M */
 #endif
 
-#if BROTLI_GNUC_HAS_ATTRIBUTE(cold, 4, 3, 0)
+#if !defined(BROTLI_COLD) && BROTLI_GNUC_HAS_ATTRIBUTE(cold, 4, 3, 0)
 #define BROTLI_COLD __attribute__((cold))
 #else
 #define BROTLI_COLD /* cold */
Repository: huggingface/transformers
Pull request: Fix backend dependency

# What does this PR do?

As per the title

Changed files:
filename: src/transformers/models/higgs_audio_v2_tokenizer/modeling_higgs_audio_v2_tokenizer.py
patch: @@ -36,6 +36,7 @@
 from .configuration_higgs_audio_v2_tokenizer import HiggsAudioV2TokenizerConfig
 
 
+@requires(backends=("torchaudio",))
 @auto_docstring
 class HiggsAudioV2TokenizerPreTrainedModel(PreTrainedAudioTokenizerBase):
     """

filename: src/transformers/models/higgs_audio_v2_tokenizer/modular_higgs_audio_v2_tokenizer.py
patch: @@ -108,6 +108,8 @@ def semantic_downsample_factor(self):
         return int(self.hop_length / (self.sample_rate / self.semantic_sample_rate) / self.downsample_factor)
 
 
+@requires(backends=("torchaudio",))
+@auto_docstring
 class HiggsAudioV2TokenizerPreTrainedModel(XcodecPreTrainedModel):
     _no_split_modules = ["HiggsAudioV2TokenizerResidualVectorQuantization", "DacResidualUnit"]
     _keys_to_ignore_on_load_unexpected = ["semantic_model.masked_spec_embed"]
Repository: vercel/next.js
Pull request: [ci]: continue-on-error for more gh auth status checks

This seems to be failing for our deploy test workflow ([x-ref](https://github.com/vercel/next.js/actions/runs/22685809647/job/65778800145)). 

Updating to `continue-on-error` similar to https://github.com/vercel/next.js/pull/89098 because this check doesn't seem reliable.

If it fixes, will just remove in both spots all together.

Changed files:
filename: .github/workflows/test_e2e_deploy_release.yml
patch: @@ -261,6 +261,9 @@ jobs:
     steps:
       - name: Check token
         run: gh auth status
+        # This sometimes fails for unknown reasons.
+        # Ignoring failures for now to check if a failure actually blocks subsequent steps
+        continue-on-error: true
         env:
           GITHUB_TOKEN: ${{ secrets.GH_UPDATE_NEXT_WORKFLOW_TRIGGER }}
       - uses: actions/github-script@v7
@@ -332,6 +335,9 @@ jobs:
     steps:
       - name: Check token
         run: gh auth status
+        # This sometimes fails for unknown reasons.
+        # Ignoring failures for now to check if a failure actually blocks subsequent steps
+        continue-on-error: true
         env:
           GITHUB_TOKEN: ${{ secrets.GH_UPDATE_NEXT_WORKFLOW_TRIGGER }}
       - uses: actions/github-script@v7
Repository: facebook/react
Pull request: [DevTools] fix: dont ship source maps for css in prod builds

This has been causing some issues with the submission review on Firefox store: we use OS-level paths in these source maps, which makes the build artifact different from the one that's been submitted.

Also saves ~100Kb for main.js artifact.

Changed files:
filename: packages/react-devtools-extensions/src/main/cloneStyleTags.js
patch: @@ -1,5 +1,14 @@
-function cloneStyleTags() {
-  const linkTags = [];
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ * @flow
+ */
+
+export function cloneStyleTags(): Array<HTMLLinkElement | HTMLStyleElement> {
+  const tags: Array<HTMLLinkElement | HTMLStyleElement> = [];
 
   // eslint-disable-next-line no-for-of-loops/no-for-of-loops
   for (const linkTag of document.getElementsByTagName('link')) {
@@ -11,11 +20,23 @@ function cloneStyleTags() {
         newLinkTag.setAttribute(attribute.nodeName, attribute.nodeValue);
       }
 
-      linkTags.push(newLinkTag);
+      tags.push(newLinkTag);
     }
   }
 
-  return linkTags;
-}
+  // eslint-disable-next-line no-for-of-loops/no-for-of-loops
+  for (const styleTag of document.getElementsByTagName('style')) {
+    const newStyleTag = document.createElement('style');
+
+    // eslint-disable-next-line no-for-of-loops/no-for-of-loops
+    for (const attribute of styleTag.attributes) {
+      newStyleTag.setAttribute(attribute.nodeName, attribute.nodeValue);
+    }
 
-export default cloneStyleTags;
+    newStyleTag.textContent = styleTag.textContent;
+
+    tags.push(newStyleTag);
+  }
+
+  return tags;
+}

filename: packages/react-devtools-extensions/src/main/index.js
patch: @@ -33,7 +33,7 @@ import {
 import {viewAttributeSource} from './sourceSelection';
 
 import {startReactPolling} from './reactPolling';
-import cloneStyleTags from './cloneStyleTags';
+import {cloneStyleTags} from './cloneStyleTags';
 import fetchFileWithCaching from './fetchFileWithCaching';
 import injectBackendManager from './injectBackendManager';
 import registerEventsLogger from './registerEventsLogger';

filename: packages/react-devtools-extensions/webpack.config.js
patch: @@ -285,7 +285,7 @@ module.exports = {
           {
             loader: 'css-loader',
             options: {
-              sourceMap: true,
+              sourceMap: __DEV__,
               modules: true,
               localIdentName: '[local]___[hash:base64:5]',
             },
Repository: huggingface/transformers
Pull request: Add a new job in `build_pr_documentation.yml` (will be the new required job)

# What does this PR do?

Follow-up of #44532: we need to change the required status check to the new added job `doc_build_status_check` added in this PR, otherwise the merge queue won't get the required (passing) status and will eventually remove the PRs from the queue.

Changed files:
filename: .github/workflows/build_pr_documentation.yml
patch: @@ -19,8 +19,21 @@ jobs:
       languages: en
 
   # Satisfy required check in merge queue without actually building docs
-  build-merge-queue:
+  skip_merge_queue:
     if: github.event_name == 'merge_group'
     runs-on: ubuntu-latest
     steps:
       - run: echo "Skipping doc build in merge queue"
+
+  doc_build_status_check:
+    needs: [build, skip_merge_queue]
+    if: always()
+    runs-on: ubuntu-latest
+    steps:
+      - run: |
+          if [[ "${{ needs.build.result }}" == "success" || "${{ needs.build.result }}" == "skipped" ]] && \
+             [[ "${{ needs.skip_merge_queue.result }}" == "success" || "${{ needs.skip_merge_queue.result }}" == "skipped" ]]; then
+            echo "OK"
+          else
+            exit 1
+          fi
\ No newline at end of file
Repository: facebook/react
Pull request: [DevTools] Feature detect sources panel

I broke Firefox DevTools extension in #33968.

It turns out the Firefox has a placeholder object for the sources panel which is empty. We need to detect the actual event handler.

Changed files:
filename: packages/react-devtools-extensions/src/main/index.js
patch: @@ -111,7 +111,7 @@ function createBridge() {
     chrome.devtools.panels.elements.onSelectionChanged.removeListener(
       onBrowserElementSelectionChanged,
     );
-    if (sourcesPanel) {
+    if (sourcesPanel && sourcesPanel.onSelectionChanged) {
       currentSelectedSource = null;
       sourcesPanel.onSelectionChanged.removeListener(
         onBrowserSourceSelectionChanged,
@@ -124,7 +124,7 @@ function createBridge() {
   chrome.devtools.panels.elements.onSelectionChanged.addListener(
     onBrowserElementSelectionChanged,
   );
-  if (sourcesPanel) {
+  if (sourcesPanel && sourcesPanel.onSelectionChanged) {
     sourcesPanel.onSelectionChanged.addListener(
       onBrowserSourceSelectionChanged,
     );
Repository: facebook/react
Pull request: [DevTools] BuiltInCallSite should have padding-left

We don't normally show this but when we do, it should have the same padding as other callsites.

<img width="313" height="241" alt="Screenshot 2025-10-19 at 10 46 22 PM" src="https://github.com/user-attachments/assets/7f72149e-d748-4b71-8291-889038d676e7" />


Changed files:
filename: packages/react-devtools-shared/src/devtools/views/Components/StackTraceView.css
patch: @@ -2,7 +2,7 @@
   padding: 0.25rem;
 }
 
-.CallSite {
+.CallSite, .BuiltInCallSite {
   display: block;
   padding-left: 1rem;
 }
Repository: rust-lang/rust
Pull request: Fix typo in doc comment for `char::to_titlecase`

@rustbot label A-docs
<!-- 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: library/core/src/char/methods.rs
patch: @@ -1212,7 +1212,7 @@ impl char {
     /// returned by [`Self::to_uppercase`]. Prefer this method when seeking to capitalize
     /// Only The First Letter of a word, but use [`Self::to_uppercase`] for ALL CAPS.
     ///
-    /// If this `char` does not have an titlecase mapping, the iterator yields the same `char`.
+    /// If this `char` does not have a titlecase mapping, the iterator yields the same `char`.
     ///
     /// If this `char` has a one-to-one titlecase mapping given by the [Unicode Character
     /// Database][ucd] [`UnicodeData.txt`], the iterator yields that `char`.
Repository: huggingface/transformers
Pull request: Update `build_pr_documentation` workflow for `merge_group` event

# What does this PR do?

So we can use `Require Merge Queue` functionoality

Changed files:
filename: .github/workflows/build_pr_documentation.yml
patch: @@ -2,16 +2,25 @@ name: Build PR Documentation
 
 on:
   pull_request:
+  merge_group:
 
 concurrency:
   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
   cancel-in-progress: true
 
 jobs:
   build:
+    if: github.event_name == 'pull_request'
     uses: huggingface/doc-builder/.github/workflows/build_pr_documentation.yml@main
     with:
       commit_sha: ${{ github.event.pull_request.head.sha }}
       pr_number: ${{ github.event.number }}
       package: transformers
       languages: en
+
+  # Satisfy required check in merge queue without actually building docs
+  build-merge-queue:
+    if: github.event_name == 'merge_group'
+    runs-on: ubuntu-latest
+    steps:
+      - run: echo "Skipping doc build in merge queue"
Repository: nodejs/node
Pull request: lib: fix source map url parse in dynamic imports

Fixes https://github.com/nodejs/node/issues/61988

Changed files:
filename: lib/internal/source_map/source_map_cache.js
patch: @@ -247,7 +247,10 @@ function dataFromUrl(sourceURL, sourceMappingURL) {
     }
   }
 
-  const mapURL = new URL(sourceMappingURL, sourceURL).href;
+  const mapURL = URLParse(sourceMappingURL, sourceURL);
+  if (mapURL === null) {
+    return null;
+  }
   return sourceMapFromFile(mapURL);
 }
 
@@ -276,7 +279,7 @@ function lineLengths(content) {
 
 /**
  * Read source map from file.
- * @param {string} mapURL - file url of the source map
+ * @param {URL} mapURL - file url of the source map
  * @returns {object} deserialized source map JSON object
  */
 function sourceMapFromFile(mapURL) {

filename: test/parallel/test-source-map-invalid-url.js
patch: @@ -0,0 +1,56 @@
+// Flags: --enable-source-maps
+'use strict';
+
+const common = require('../common');
+const assert = require('node:assert');
+const childProcess = require('node:child_process');
+
+// TODO(legendecas): c8 will complain if non-file-scheme is used in source maps.
+// https://github.com/bcoe/c8/blob/ee2f1cfc5584d41bb2d51b788d0953dab0c798f8/lib/report.js#L517
+if (process.env.NODE_V8_COVERAGE) {
+  console.log('Spawning with coverage disabled.');
+  const { status } = childProcess.spawnSync(
+    process.execPath,
+    [__filename],
+    {
+      stdio: 'inherit',
+      env: {
+        ...process.env,
+        NODE_V8_COVERAGE: '',
+      },
+    },
+  );
+  assert.strictEqual(status, 0);
+  return;
+}
+
+const sources = [
+  `
+  //# sourceMappingURL=unknown-protocol://invalid/url
+  //# sourceURL=unknown-protocol://invalid/url
+  `,
+  `
+  //# sourceMappingURL=file://invalid:/file/url
+  //# sourceURL=file://invalid:/file/url
+  `,
+  `
+  //# sourceMappingURL=invalid-url
+  //# sourceURL=invalid-url
+  `,
+];
+
+sources.forEach(test);
+
+function test(source) {
+  // Eval should tolerate invalid source map url
+  eval(source);
+
+  const base64 = Buffer.from(source).toString('base64url');
+
+  // Dynamic import should tolerate invalid source map url
+  import(`data:text/javascript;base64,${base64}`)
+    .then(common.mustCall());
+}
+
+// eslint-disable-next-line @stylistic/js/spaced-comment
+//# sourceMappingURL=invalid-url
Repository: facebook/react
Pull request: [DevTools] Don't attach filtered IO to grandparent Suspense

Fixes "We are cleaning up async info that was not on the parent Suspense boundary." when filtering some Suspense instances e.g.
```
<Activity name="a">
  <div>
    <Activity name="b">
      <Suspense>
        {promise}
```
filtering everything below `<Activity name="b">` would add the `promise` to the suspended by of `<Activity name="b">` since that's the nearest unfiltered instance. At the same time we'd add the `promise` to the filtered Suspense node. Once we unmount `<Activity name="b">`, we'd attempt to remove the `promise` from its parent Suspense but that never held the `promise`.

As an alternative, we'd have to move the `parentSuspenseNode` pointer after we moved the `parentInstance` pointer. That can be confusing because it's not actually IO that will suspend the Suspense node. Especially if we implement Activity slices with a filter, we'd end up moving IO to the initial paint of an Activity slice even though that IO would be handled further down.



Changed files:
filename: packages/react-devtools-shared/src/backend/fiber/renderer.js
patch: @@ -2862,7 +2862,10 @@ export function attach(
     let parentInstance = reconcilingParent;
     while (
       parentInstance.kind === FILTERED_FIBER_INSTANCE &&
-      parentInstance.parent !== null
+      parentInstance.parent !== null &&
+      // We can't move past the parent Suspense node.
+      // The Suspense node holding async info must be a parent of the devtools instance (or the instance itself)
+      parentInstance !== parentSuspenseNode.instance
     ) {
       parentInstance = parentInstance.parent;
     }
Repository: huggingface/transformers
Pull request: Fix type checker

# What does this PR do?

As per the title. Introduced in https://github.com/huggingface/transformers/pull/44381, not sure why the CI passed

Changed files:
filename: src/transformers/utils/import_utils.py
patch: @@ -505,7 +505,7 @@ def is_torch_bf16_gpu_available() -> bool:
     if is_torch_musa_available():
         return torch.musa.is_bf16_supported() if hasattr(torch, "musa") else False
     if is_torch_mlu_available():
-        return torch.mlu.is_bf16_supported()
+        return torch.mlu.is_bf16_supported() if hasattr(torch, "mlu") else False
     if is_torch_neuron_available():
         return getattr(torch, "neuron").is_bf16_supported()
     return False
Repository: huggingface/transformers
Pull request: Add MLU bf16 support to is_torch_bf16_gpu_available

### What does this PR do?

This PR adds MLU support to `is_torch_bf16_gpu_available()` by checking
`torch.mlu.is_bf16_supported()` when an MLU device is available.

### Why is this needed?

MLU devices support bf16 training, but they are currently not considered
in the bf16 capability check. As a result, enabling `bf16=True` raises
an error even when the hardware supports it.

### Implementation details

- Adds an `is_torch_mlu_available()` branch inside
  `is_torch_bf16_gpu_available()`.
- Uses `torch.mlu.is_bf16_supported()` for capability detection.
- No behavior change for CUDA, XPU, HPU, NPU, MPS, or MUSA.

### Impact

This enables bf16 training on MLU devices without affecting existing
accelerator behavior.


Changed files:
filename: src/transformers/utils/import_utils.py
patch: @@ -504,6 +504,8 @@ def is_torch_bf16_gpu_available() -> bool:
         return torch.backends.mps.is_macos_or_newer(14, 0)
     if is_torch_musa_available():
         return torch.musa.is_bf16_supported() if hasattr(torch, "musa") else False
+    if is_torch_mlu_available():
+        return torch.mlu.is_bf16_supported()
     if is_torch_neuron_available():
         return getattr(torch, "neuron").is_bf16_supported()
     return False
Repository: ollama/ollama
Pull request: discover: Support cgroups cores and memory limitations

This pull request can be performance improvement for inference using CPUs in a container like Kubernetes Pods.
Kubernetes and Docker have CPU and memory limitation features using cgroups. But Ollama cannot be fetch CPU and memory information from it. So Ollama start too many threads in a limited environment and encount performance decrement.

This pull request changes for this problem to read `/sys/fs/cgroup/cpu.max` and `/sys/fs/cgroup/memory.(max|current)` when these files exist.

Changed files:
filename: discover/cpu_linux.go
patch: @@ -2,6 +2,7 @@ package discover
 
 import (
 	"bufio"
+	"errors"
 	"fmt"
 	"io"
 	"log/slog"
@@ -10,12 +11,21 @@ import (
 	"reflect"
 	"regexp"
 	"sort"
+	"strconv"
 	"strings"
 
 	"github.com/ollama/ollama/format"
 )
 
 func GetCPUMem() (memInfo, error) {
+	mem, err := getCPUMem()
+	if err != nil {
+		return memInfo{}, err
+	}
+	return getCPUMemByCgroups(mem), nil
+}
+
+func getCPUMem() (memInfo, error) {
 	var mem memInfo
 	var total, available, free, buffers, cached, freeSwap uint64
 	f, err := os.Open("/proc/meminfo")
@@ -56,6 +66,32 @@ func GetCPUMem() (memInfo, error) {
 	return mem, nil
 }
 
+func getCPUMemByCgroups(mem memInfo) memInfo {
+	total, err := getUint64ValueFromFile("/sys/fs/cgroup/memory.max")
+	if err == nil {
+		mem.TotalMemory = total
+	}
+	used, err := getUint64ValueFromFile("/sys/fs/cgroup/memory.current")
+	if err == nil {
+		mem.FreeMemory = mem.TotalMemory - used
+	}
+	return mem
+}
+
+func getUint64ValueFromFile(path string) (uint64, error) {
+	f, err := os.Open(path)
+	if err != nil {
+		return 0, err
+	}
+	defer f.Close()
+	s := bufio.NewScanner(f)
+	for s.Scan() {
+		line := s.Text()
+		return strconv.ParseUint(line, 10, 64)
+	}
+	return 0, errors.New("empty file content")
+}
+
 const CpuInfoFilename = "/proc/cpuinfo"
 
 type linuxCpuInfo struct {
@@ -74,7 +110,41 @@ func GetCPUDetails() []CPU {
 		return nil
 	}
 	defer file.Close()
-	return linuxCPUDetails(file)
+	cpus := linuxCPUDetails(file)
+	return overwriteThreadCountByLinuxCgroups(cpus)
+}
+
+func overwriteThreadCountByLinuxCgroups(cpus []CPU) []CPU {
+	file, err := os.Open("/sys/fs/cgroup/cpu.max")
+	if err != nil {
+		return cpus
+	}
+	defer file.Close()
+
+	scanner := bufio.NewScanner(file)
+	for scanner.Scan() {
+		line := scanner.Text()
+		if sl := strings.Split(line, " "); len(sl) == 2 {
+			allowdUs, err := strconv.ParseInt(sl[0], 10, 64)
+			if err != nil {
+				slog.Warn("failed to parse CPU allowed micro secs", "error", err)
+				return cpus
+			}
+			unitUs, err := strconv.ParseInt(sl[1], 10, 64)
+			if err != nil {
+				slog.Warn("failed to parse CPU unit micro secs", "error", err)
+				return cpus
+			}
+
+			threads := int(max(allowdUs/unitUs, 1))
+
+			cpu := cpus[0]
+			cpu.CoreCount = threads
+			cpu.ThreadCount = threads
+			return []CPU{cpu}
+		}
+	}
+	return cpus
 }
 
 func linuxCPUDetails(file io.Reader) []CPU {
Repository: rust-lang/rust
Pull request: Add functions to `GrowableBitSet`

Only really need `insert_range` for clippy, but may as well add the others. Using `Range` instead of `RangeBounds` since an end bound is needed for this to make sense and there aren't any traits to enforce that.

Changed files:
filename: compiler/rustc_index/src/bit_set.rs
patch: @@ -1323,13 +1323,29 @@ impl<T: Idx> GrowableBitSet<T> {
         self.bit_set.insert(elem)
     }
 
+    #[inline]
+    pub fn insert_range(&mut self, elems: Range<T>) {
+        self.ensure(elems.end.index());
+        self.bit_set.insert_range(elems);
+    }
+
     /// Returns `true` if the set has changed.
     #[inline]
     pub fn remove(&mut self, elem: T) -> bool {
         self.ensure(elem.index() + 1);
         self.bit_set.remove(elem)
     }
 
+    #[inline]
+    pub fn clear(&mut self) {
+        self.bit_set.clear();
+    }
+
+    #[inline]
+    pub fn count(&self) -> usize {
+        self.bit_set.count()
+    }
+
     #[inline]
     pub fn is_empty(&self) -> bool {
         self.bit_set.is_empty()
@@ -1341,6 +1357,14 @@ impl<T: Idx> GrowableBitSet<T> {
         self.bit_set.words.get(word_index).is_some_and(|word| (word & mask) != 0)
     }
 
+    #[inline]
+    pub fn contains_any(&self, elems: Range<T>) -> bool {
+        elems.start.index() < self.bit_set.domain_size
+            && self
+                .bit_set
+                .contains_any(elems.start..T::new(elems.end.index().min(self.bit_set.domain_size)))
+    }
+
     #[inline]
     pub fn iter(&self) -> BitIter<'_, T> {
         self.bit_set.iter()