helloadhavan/github_issues huggingface dataset:
Repository: ggml-org/llama.cpp
Pull request: Fix Issue !19219

Hangs were reported on Jetson Orin AGX if we set CUDA_SCALE_LAUNCH_QUEUES=4x (Issue #19219). Reverting the previous PR (#19042) and updating the document to consider setting CUDA_SCALE_LAUNCH_QUEUES=4x for faster throughput on multi-GPU systems.


Changed files:
filename: docs/build.md
patch: @@ -252,9 +252,7 @@ CUDA_VISIBLE_DEVICES="-0" ./build/bin/llama-server --model /srv/models/llama.ggu
 
 The environment variable [`CUDA_SCALE_LAUNCH_QUEUES`](https://docs.nvidia.com/cuda/cuda-programming-guide/05-appendices/environment-variables.html#cuda-scale-launch-queues) controls the size of CUDA's command buffer, which determines how many GPU operations can be queued before the CPU must wait for the GPU to catch up. A larger buffer reduces CPU-side stalls and allows more work to be queued on a GPU.
 
-**Default behavior:** llama.cpp automatically sets `CUDA_SCALE_LAUNCH_QUEUES=4x`, which increases the CUDA command buffer to 4 times its default size. This optimization is particularly beneficial for **Multi-GPU setups with pipeline parallelism**, where it significantly improves prompt processing throughput by allowing more operations to be enqueued across GPUs.
-
-See PR [#19042](https://github.com/ggml-org/llama.cpp/pull/19042) for performance benchmarks and technical details.
+Consider setting `CUDA_SCALE_LAUNCH_QUEUES=4x`, which increases the CUDA command buffer to 4 times its default size. This optimization is particularly beneficial for **Multi-GPU setups with pipeline parallelism**, where it significantly improves prompt processing throughput by allowing more operations to be enqueued across GPUs.
 
 ### Unified Memory
 

filename: ggml/src/ggml-cuda/ggml-cuda.cu
patch: @@ -5049,16 +5049,6 @@ ggml_backend_reg_t ggml_backend_cuda_reg() {
         static std::mutex mutex;
         std::lock_guard<std::mutex> lock(mutex);
         if (!initialized) {
-            // Set CUDA_SCALE_LAUNCH_QUEUES before any CUDA API call to improve multi-GPU pipeline parallelism performance
-            // PR: https://github.com/ggml-org/llama.cpp/pull/19042
-            if (getenv("CUDA_SCALE_LAUNCH_QUEUES") == nullptr) {
-#ifdef _WIN32
-                _putenv_s("CUDA_SCALE_LAUNCH_QUEUES", "4x");
-#else
-                setenv("CUDA_SCALE_LAUNCH_QUEUES", "4x", 0); // don't overwrite if already set
-#endif // _WIN32
-            }
-
             ggml_backend_cuda_reg_context * ctx = new ggml_backend_cuda_reg_context;
             const int min_batch_size = getenv("GGML_OP_OFFLOAD_MIN_BATCH") ? atoi(getenv("GGML_OP_OFFLOAD_MIN_BATCH")) : 32;
Repository: ollama/ollama
Pull request: Fix overlapping artifact name on CI


Changed files:
filename: .github/workflows/release.yaml
patch: @@ -269,7 +269,7 @@ jobs:
             dist/windows-amd64/**
       - uses: actions/upload-artifact@v4
         with:
-          name: windows-cuda-deps
+          name: windows-cuda-deps-${{ matrix.cuda.version }}
           path: dist/deps/*
 
 
@@ -328,7 +328,10 @@ jobs:
           name: generate-windows-cuda-12
       - uses: actions/download-artifact@v4
         with:
-          name: windows-cuda-deps
+          name: windows-cuda-deps-11
+      - uses: actions/download-artifact@v4
+        with:
+          name: windows-cuda-deps-12
       - uses: actions/download-artifact@v4
         with:
           name: windows-rocm-deps
Repository: facebook/react
Pull request: Swap to Eli's new GitHub username

<!--
  Thanks for submitting a pull request!
  We appreciate you spending the time to work on these changes. Please provide enough information so that others can review your pull request. The three fields below are mandatory.

  Before submitting a pull request, please make sure the following is done:

  1. Fork [the repository](https://github.com/facebook/react) and create your branch from `main`.
  2. Run `yarn` in the repository root.
  3. If you've fixed a bug or added code that should be tested, add tests!
  4. Ensure the test suite passes (`yarn test`). Tip: `yarn test --watch TestName` is helpful in development.
  5. Run `yarn test --prod` to test in the production environment. It supports the same options as `yarn test`.
  6. If you need a debugger, run `yarn test --debug --watch TestName`, open `chrome://inspect`, and press "Inspect".
  7. Format your code with [prettier](https://github.com/prettier/prettier) (`yarn prettier`).
  8. Make sure your code lints (`yarn lint`). Tip: `yarn linc` to only check changed files.
  9. Run the [Flow](https://flowtype.org/) type checks (`yarn flow`).
  10. If you haven't already, complete the CLA.

  Learn more about contributing: https://reactjs.org/docs/how-to-contribute.html
-->

## Summary

<!--
 Explain the **motivation** for making this change. What existing problem does the pull request solve?
-->

## How did you test this change?

<!--
  Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes the user interface.
  How exactly did you verify that your PR solves the issue you wanted to solve?
  If you leave this empty, your PR will very likely be closed.
-->


Changed files:
filename: MAINTAINERS
patch: @@ -20,6 +20,6 @@ rickhanlonii
 sebmarkbage
 sethwebster
 sophiebits
-TheSavior
+elicwhite
 tyao1
 yuzhi
Repository: ggml-org/llama.cpp
Pull request: support infill for Falcon-H1-Tiny-Coder

Added FIM tokens used in Falcon-H1-Tiny-Coder (see https://tiiuae-tiny-h1-blogpost.hf.space/#fim-format, https://huggingface.co/tiiuae/Falcon-H1-Tiny-Coder-90M/blob/main/tokenizer_config.json#L1843) to make the llama-server `POST /infill` handle work.

Changed files:
filename: src/llama-vocab.cpp
patch: @@ -2262,6 +2262,7 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
                         || t.first == "<PRE>"
                         || t.first == "▁<PRE>"          // CodeLlama
                         || t.first == "
" // GLM-4.5
+                        || t.first == "
"      // Falcon-H1-Tiny-Coder
                         ) {
                     special_fim_pre_id = t.second;
                     if ((attr & LLAMA_TOKEN_ATTR_CONTROL) == 0) {
@@ -2282,6 +2283,7 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
                         || t.first == "<SUF>"
                         || t.first == "▁<SUF>"         // CodeLlama
                         || t.first == "
" // GLM-4.5
+                        || t.first == "
"      // Falcon-H1-Tiny-Coder
                         ) {
                     special_fim_suf_id = t.second;
                     if ((attr & LLAMA_TOKEN_ATTR_CONTROL) == 0) {
@@ -2302,6 +2304,7 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
                         || t.first == "<MID>"
                         || t.first == "▁<MID>"         // CodeLlama
                         || t.first == "
" // GLM-4.5
+                        || t.first == "
"      // Falcon-H1-Tiny-Coder
                         ) {
                     special_fim_mid_id = t.second;
                     if ((attr & LLAMA_TOKEN_ATTR_CONTROL) == 0) {
Repository: ollama/ollama
Pull request: Override numParallel in pickBestPartialFitByLibrary() only if unset.

pickBestPartialFitByLibrary() sets numParallel = 1, but doesn't adjust req.opts.NumCtx.  If OLLAMA_NUM_PARALLEL has been set, NumCtx = OLLAMA_NUM_PARALLEL * defaultParallel.  Unconditionally setting numParallel to 1 causes problems in needsReload()  - because NumCtx hasn't been reset,  ` !reflect.DeepEqual(optsExisting, optsNew)` always fails, causing the model to be reloaded for every request.

It's not clear why numParallel is forced to 1, testing indicates that models operate normally with a partial load and parallelism, so this PR changes the code to set numParallel and req.opts.NumCtx only if unset.

Fixes https://github.com/ollama/ollama/issues/6148
Fixes https://github.com/ollama/ollama/issues/6271

Changed files:
filename: server/sched.go
patch: @@ -734,7 +734,10 @@ func pickBestFullFitByLibrary(req *LlmRequest, ggml *llm.GGML, gpus gpu.GpuInfoL
 
 // If multiple Libraries are detected, pick the Library which loads the most layers for the model
 func pickBestPartialFitByLibrary(req *LlmRequest, ggml *llm.GGML, gpus gpu.GpuInfoList, numParallel *int) gpu.GpuInfoList {
-	*numParallel = 1
+	if *numParallel <= 0 {
+		*numParallel = 1
+		req.opts.NumCtx = req.origNumCtx
+	}
 	byLibrary := gpus.ByLibrary()
 	if len(byLibrary) <= 1 {
 		return gpus
Repository: vuejs/vue
Pull request: Fix unkpg.com -> unpkg.com


Changed files:
filename: dist/README.md
patch: @@ -7,7 +7,7 @@
   The full (compiler-included) browser build. This is the build you can just include with a script tag:
 
   ```
-  <script src="https://unkpg.com/vue/dist/vue.js"><script>
+  <script src="https://unpkg.com/vue/dist/vue.js"></script>
   ```
 
   Note that this build is hard-coded to development mode.
Repository: facebook/react
Pull request: Fix copy functionality in Firefox

## Summary

This pull request addresses an issue where the copy functionality was not working in Firefox. The root cause was the absence of the 'clipboardWrite' permission in the manifest. To ensure consistency across all supported browsers, the 'clipboardWrite' permission has been added to the manifests for Chrome, Edge, and Firefox extensions.

Closes #31422 

## How did you test this change?

I ran the modified extension in all browsers (MacOS) and verified that the copy functionality works in each.
https://github.com/user-attachments/assets/a41ff14b-3d65-409c-ac7f-1ccd72fa944a



Changed files:
filename: packages/react-devtools-extensions/chrome/manifest.json
patch: @@ -43,7 +43,8 @@
   "permissions": [
     "scripting",
     "storage",
-    "tabs"
+    "tabs",
+    "clipboardWrite"
   ],
   "host_permissions": [
     "<all_urls>"

filename: packages/react-devtools-extensions/edge/manifest.json
patch: @@ -43,7 +43,8 @@
   "permissions": [
     "scripting",
     "storage",
-    "tabs"
+    "tabs",
+    "clipboardWrite"
   ],
   "host_permissions": [
     "<all_urls>"

filename: packages/react-devtools-extensions/firefox/manifest.json
patch: @@ -50,7 +50,8 @@
   "permissions": [
     "scripting",
     "storage",
-    "tabs"
+    "tabs",
+    "clipboardWrite"
   ],
   "host_permissions": [
     "<all_urls>"
Repository: ggml-org/llama.cpp
Pull request: spec : simplify time measurement using common_time_meas

Minor refactor.

Changed files:
filename: common/speculative.cpp
patch: @@ -951,12 +951,8 @@ void common_speculative_begin(common_speculative * spec, const llama_tokens & pr
     }
 
     for (auto & impl : spec->impls) {
-        const int64_t t_start_us = impl->gen_perf ? ggml_time_us() : 0;
-
+        common_time_meas tm(impl->t_begin_us, !impl->gen_perf);
         impl->begin(prompt);
-
-        const int64_t t_now_us = impl->gen_perf ? ggml_time_us() : 0;
-        impl->t_begin_us += t_now_us - t_start_us; // accumulate duration for this refresh
     }
 }
 
@@ -971,14 +967,9 @@ llama_tokens common_speculative_draft(
 
     for (auto & impl : spec->impls) {
         {
-            const int64_t t_start_us = impl->gen_perf ? ggml_time_us() : 0;
-
+            common_time_meas tm(impl->t_draft_us, !impl->gen_perf);
             impl->draft(params, prompt_tgt, id_last, result);
-
-            const int64_t t_now_us = impl->gen_perf ? ggml_time_us() : 0;
-
             impl->drafts_call_count++;
-            impl->t_draft_us += t_now_us - t_start_us; // accumulate duration for this implementation
         }
 
         if (!result.empty()) {
@@ -1006,15 +997,15 @@ void common_speculative_accept(common_speculative * spec, uint16_t n_accepted) {
 
     GGML_ASSERT(impl);
 
-    const int64_t t_start_us = impl->gen_perf ? ggml_time_us() : 0;
-    if (n_accepted > 0) {
-        impl->drafts_accepted_count++;
-        impl->drafts_accepted_tokens += n_accepted;
-    }
+    {
+        common_time_meas tm(impl->t_accept_us, !impl->gen_perf);
+        if (n_accepted > 0) {
+            impl->drafts_accepted_count++;
+            impl->drafts_accepted_tokens += n_accepted;
+        }
 
-    impl->accept(n_accepted);
-    const int64_t t_now_us = impl->gen_perf ? ggml_time_us() : 0;
-    impl->t_accept_us += t_now_us - t_start_us; // accumulate duration for this acculumulation
+        impl->accept(n_accepted);
+    }
 }
 
 void common_speculative_print_stats(const common_speculative * spec) {
Repository: ollama/ollama
Pull request: server: limit upload parts to 16

In similar vein as https://github.com/ollama/ollama/pull/6347, limit the number of upload connections to 16.

Changed files:
filename: server/upload.go
patch: @@ -45,7 +45,7 @@ type blobUpload struct {
 }
 
 const (
-	numUploadParts          = 64
+	numUploadParts          = 16
 	minUploadPartSize int64 = 100 * format.MegaByte
 	maxUploadPartSize int64 = 1000 * format.MegaByte
 )
Repository: vercel/next.js
Pull request: Allow SSR to finish microtasky work before flushing

In a dynamic Fizz (SSR) render, rendering work is initially scheduled using microtasks, and a flush will be attempted when the stream gets pulled:
https://github.com/facebook/react/blob/8ac5f4eb3601f7381462f8b74ecf24d47259cc20/packages/react-dom/src/server/ReactDOMFizzServerNode.js#L386-L389
This can cause streaming metadata to flake between appearing in `<head>` and `<body>` depending on if whether it had enough microtasks to render before the flush occurred.
In general, if something is async, but available after a couple microtasks, then we shouldn't bother streaming it, it should just go into the initial HTML. We achieve this by waiting a task before allowing the stream to get pulled, which allows all the microtasky work to finish without delaying the response too much.

Changed files:
filename: packages/next/src/server/stream-utils/node-web-streams-helper.ts
patch: @@ -2,7 +2,11 @@ import type { ReactDOMServerReadableStream } from 'react-dom/server'
 import { getTracer } from '../lib/trace/tracer'
 import { AppRenderSpan } from '../lib/trace/constants'
 import { DetachedPromise } from '../../lib/detached-promise'
-import { scheduleImmediate, atLeastOneTask } from '../../lib/scheduler'
+import {
+  scheduleImmediate,
+  atLeastOneTask,
+  waitAtLeastOneReactRenderTask,
+} from '../../lib/scheduler'
 import { ENCODED_TAGS } from './encoded-tags'
 import {
   indexOfUint8Array,
@@ -797,9 +801,13 @@ export async function continueFizzStream(
   // Suffix itself might contain close tags at the end, so we need to split it.
   const suffixUnclosed = suffix ? suffix.split(CLOSE_TAG, 1)[0] : null
 
-  // If we're generating static HTML we need to wait for it to resolve before continuing.
   if (isStaticGeneration) {
+    // If we're generating static HTML we need to wait for it to resolve before continuing.
     await renderStream.allReady
+  } else {
+    // Otherwise, we want to make sure Fizz is done with all microtasky work
+    // before we start pulling the stream and cause a flush.
+    await waitAtLeastOneReactRenderTask()
   }
 
   return chainTransformers(renderStream, [

filename: test/e2e/app-dir/metadata-icons/app/custom-icon/delay-icons/page.tsx
patch: @@ -18,8 +18,9 @@ export default async function Page() {
 
 export async function generateMetadata() {
   await connection()
+  // Delay until after the shell is flushed so that the tags end up in the body.
+  await new Promise((resolve) => setTimeout(resolve, 10))
   return {
-    // This long text description will lead to the metadata being inserted after the head tag.
     description: 'long text description'.repeat(1000),
     icons: {
       icon: `/heart.png`,
Repository: vuejs/vue
Pull request: [#4410] Change any to mixed to make it type-safe

### What is it?
This PR attempts to address this [related Issue](https://github.com/vuejs/vue/issues/4410).

Regression tests have been run to make sure it does not break the current functionality.

Thanks!


Changed files:
filename: flow/component.js
patch: @@ -33,13 +33,13 @@ declare interface Component {
   $mount: (el?: Element | string, hydrating?: boolean) => Component;
   $forceUpdate: () => void;
   $destroy: () => void;
-  $set: (obj: Array<any> | Object, key: any, val: any) => void;
+  $set: (obj: Array<mixed> | Object, key: mixed, val: mixed) => void;
   $delete: (obj: Object, key: string) => void;
   $watch: (expOrFn: string | Function, cb: Function, options?: Object) => Function;
   $on: (event: string, fn: Function) => Component;
   $once: (event: string, fn: Function) => Component;
   $off: (event?: string, fn?: Function) => Component;
-  $emit: (event: string, ...args: Array<any>) => Component;
+  $emit: (event: string, ...args: Array<mixed>) => Component;
   $nextTick: (fn: Function) => void;
   $createElement: (
     tag?: string | Component,
@@ -87,7 +87,7 @@ declare interface Component {
   // markOnce
   _o: (vnode: VNode | Array<VNode>, index: number, key: string) => VNode | VNodeChildren;
   // toString
-  _s: (value: any) => string;
+  _s: (value: mixed) => string;
   // text to VNode
   _v: (value: string | number) => VNode;
   // toNumber
@@ -101,7 +101,7 @@ declare interface Component {
   // resolveFilter
   _f: (id: string) => Function;
   // renderList
-  _l: (val: any, render: Function) => ?Array<VNode>;
+  _l: (val: mixed, render: Function) => ?Array<VNode>;
   // renderSlot
   _t: (name: string, fallback: ?Array<VNode>, props: ?Object) => ?Array<VNode>;
   // apply v-bind object
Repository: ollama/ollama
Pull request: Add Cache option #1573

This PR, adds the API option "cache", that allows the llama.cpp server to cache our prompt Eval and the response.
This speed-up follow-up calls immensely for some models, if you use it over the API, with the same prompt (or even partial ones), it will speed up subsequent calls, since it skips the evaluation of the prompt.

Also, this PR includes commands /set cache and /set nocache to give users the ability to enable prompt caching in the official CLI.


* Add a new entry "cache" to the options object that is passed to the worker
* Add commands /set cache and /set nocache to allow this in the repl cli
* Update docs


This is a partial fix for, Enable prompt cache #1573, we might need to patch llama.cpp at some point to allow us full flexibility.

Changed files:
filename: api/types.go
patch: @@ -103,6 +103,7 @@ type Options struct {
 	MirostatEta      float32  `json:"mirostat_eta,omitempty"`
 	PenalizeNewline  bool     `json:"penalize_newline,omitempty"`
 	Stop             []string `json:"stop,omitempty"`
+	Cache            bool     `json:"cache,omitempty"`
 }
 
 // Runner options which must be set when the model is loaded into memory
@@ -355,6 +356,7 @@ func DefaultOptions() Options {
 		MirostatEta:      0.1,
 		PenalizeNewline:  true,
 		Seed:             -1,
+		Cache:            true,
 
 		Runner: Runner{
 			// options set when the model is loaded

filename: docs/api.md
patch: @@ -306,7 +306,8 @@ curl http://localhost:11434/api/generate -d '{
     "embedding_only": false,
     "rope_frequency_base": 1.1,
     "rope_frequency_scale": 0.8,
-    "num_thread": 8
+    "num_thread": 8,
+    "cache": true
   }
 }'
 ```

filename: llm/ext_server.go
patch: @@ -234,7 +234,8 @@ func predict(llm extServer, opts api.Options, ctx context.Context, predict Predi
 		"penalize_nl":       opts.PenalizeNewline,
 		"seed":              opts.Seed,
 		"stop":              opts.Stop,
-		"image_data":        imageData,
+		"image_data":        imageData,		
+		"cache_prompt":      opts.Cache,
 	}
 
 	if predict.Format == "json" {
Repository: huggingface/transformers
Pull request: Disable loss rounding in training stats log

This PR disables unconditional rounding of the loss value to 4 digits in logged values. Effectively reverting part of https://github.com/huggingface/transformers/pull/9491.

Closes https://github.com/huggingface/transformers/issues/38032 (stale)

Motivation:
- Loss value may have very low absolute magnitude depending on model/data/objective function.
- No other values are rounded (e.g. eval/loss or grad_norm) which may result in confusion.
- Rounding is a display/formatting detail in this case and should not be done silently in non-UI code

### Examples of undesired behavior that would be fixed with this PR:
Notebook outputs: 
<img width="282" height="281" alt="Screenshot 2025-11-07 at 16 06 21" src="https://github.com/user-attachments/assets/adcd0245-d097-44d6-8582-8372f83634b8" />

Wandb loss chart:
<img width="405" height="241" alt="Screenshot 2025-11-07 at 15 42 45" src="https://github.com/user-attachments/assets/e15103a2-935e-4885-a61f-843e309b1c00" />



Changed files:
filename: src/transformers/trainer.py
patch: @@ -3004,7 +3004,7 @@ def _maybe_log_save_evaluate(
             # reset tr_loss to zero
             tr_loss -= tr_loss
 
-            logs["loss"] = round(tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged), 4)
+            logs["loss"] = tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged)
             if grad_norm is not None:
                 logs["grad_norm"] = grad_norm.item() if isinstance(grad_norm, torch.Tensor) else grad_norm
             if learning_rate is not None:

filename: src/transformers/trainer_callback.py
patch: @@ -665,12 +665,12 @@ def on_log(self, args, state, control, logs=None, **kwargs):
                         f"[String too long to display, length: {len(v)} > {self.max_str_len}. "
                         "Consider increasing `max_str_len` if needed.]"
                     )
+                if isinstance(v, float):
+                    # Format floats for better readability
+                    shallow_logs[k] = f"{v:.4g}"
                 else:
                     shallow_logs[k] = v
             _ = shallow_logs.pop("total_flos", None)
-            # round numbers so that it looks better in console
-            if "epoch" in shallow_logs:
-                shallow_logs["epoch"] = round(shallow_logs["epoch"], 2)
             self.training_bar.write(str(shallow_logs))
 
     def on_train_end(self, args, state, control, **kwargs):
@@ -687,6 +687,8 @@ class PrinterCallback(TrainerCallback):
     def on_log(self, args, state, control, logs=None, **kwargs):
         _ = logs.pop("total_flos", None)
         if state.is_local_process_zero:
+            if logs is not None:
+                logs = {k: (f"{v:.4g}" if isinstance(v, float) else v) for k, v in logs.items()}
             print(logs)
Repository: facebook/react
Pull request: fix(react-compiler-healthcheck): Add shebang to banner

## Summary

PR https://github.com/facebook/react/pull/31963 migrated the bundler from Rollup to esbuild, but the `react-compiler-healthcheck` script lacks a shebang, leading to issues with `npx` not being able to execute it.

https://github.com/facebook/react/blob/dc7578290f1bc55c358bee3a7eeb5e5f4551adfd/compiler/packages/react-compiler-healthcheck/rollup.config.js#L60-L78

https://github.com/facebook/react/blob/9eabb37338e6bea18441dec58a4284fe00ee09ae/compiler/packages/react-compiler-healthcheck/scripts/build.js#L38-L53

## How did you test this change?

**Before**

(fail)

```shell
(main)> npx --version
10.5.0
(main)> npx react-compiler-healthcheck
/home/jeremy/.npm/_npx/67b118a83a29962c/node_modules/.bin/react-compiler-healthcheck: line 1: /bin: Is a directory
/home/jeremy/.npm/_npx/67b118a83a29962c/node_modules/.bin/react-compiler-healthcheck: line 2: syntax error near unexpected token `('
/home/jeremy/.npm/_npx/67b118a83a29962c/node_modules/.bin/react-compiler-healthcheck: line 2: ` * Copyright (c) Meta Platforms, Inc. and affiliates.'
```

**After**

```shell
(main)> npx react-compiler-healthcheck
Successfully compiled 108 out of 146 components.
StrictMode usage not found.
Found no usage of incompatible libraries.
```


Changed files:
filename: compiler/packages/react-compiler-healthcheck/scripts/build.js
patch: @@ -36,7 +36,9 @@ const config = {
   format: 'cjs',
   platform: 'node',
   banner: {
-    js: `/**
+    js: `#!/usr/bin/env node
+
+/**
  * Copyright (c) Meta Platforms, Inc. and affiliates.
  *
  * This source code is licensed under the MIT license found in the