helloadhavan/github_issues huggingface dataset:
Repository: facebook/react
Pull request: Enable ref validation in linter

---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/34044).
* #34027
* __->__ #34044

Changed files:
filename: compiler/packages/eslint-plugin-react-compiler/src/rules/ReactCompilerRule.ts
patch: @@ -101,7 +101,7 @@ const COMPILER_OPTIONS: Partial<PluginOptions> = {
   // Don't emit errors on Flow suppressions--Flow already gave a signal
   flowSuppressions: false,
   environment: validateEnvironmentConfig({
-    validateRefAccessDuringRender: false,
+    validateRefAccessDuringRender: true,
     validateNoSetStateInRender: true,
     validateNoSetStateInEffects: true,
     validateNoJSXInTryStatements: true,

filename: packages/eslint-plugin-react-hooks/src/rules/ReactCompiler.ts
patch: @@ -103,7 +103,7 @@ const COMPILER_OPTIONS: Partial<PluginOptions> = {
   // Don't emit errors on Flow suppressions--Flow already gave a signal
   flowSuppressions: false,
   environment: validateEnvironmentConfig({
-    validateRefAccessDuringRender: false,
+    validateRefAccessDuringRender: true,
     validateNoSetStateInRender: true,
     validateNoSetStateInEffects: true,
     validateNoJSXInTryStatements: true,
Repository: vercel/next.js
Pull request: [turbopack] mark persistent_task_type as inline

Nearly all tasks are 'persistent' and we need to set this field as part of task execution (and read it as part of task invalidation)

By keeping it `inline` we can avoid an entry in the lazy vec which should accelerate other accesses and save memory (it would be 56 bytes in the vec, but it is 8 bytes when stored inline)


Saves quite a bit of memory

![image.png](https://app.graphite.com/user-attachments/assets/cce81efe-e36f-4fab-9227-019617724acd.png)



Changed files:
filename: turbopack/crates/turbo-tasks-backend/src/backend/storage_schema.rs
patch: @@ -255,8 +255,8 @@ struct TaskStorageSchema {
     #[field(storage = "auto_map", category = "transient")]
     in_progress_cells: AutoMap<CellId, InProgressCellState>,
 
-    #[field(storage = "direct", category = "data")]
-    pub persistent_task_type: Arc<CachedTaskType>,
+    #[field(storage = "direct", category = "data", inline)]
+    pub persistent_task_type: Option<Arc<CachedTaskType>>,
 
     #[field(storage = "direct", category = "transient")]
     pub transient_task_type: Arc<TransientTask>,
@@ -944,8 +944,13 @@ mod tests {
     fn test_schema_size() {
         assert_eq!(
             size_of::<TaskStorage>(),
-            136,
+            144,
             "TaskStorage size changed! If this is intentional, update this test."
         );
+        assert_eq!(
+            size_of::<LazyField>(),
+            56,
+            "LazyField size changed! If this is intentional, update this test."
+        );
     }
 }
Repository: ggml-org/llama.cpp
Pull request: common : fix gpt-oss content removal

I messed up in #20393 and didn't add a guard around the content removal after cleaning up that section of code.

Message content should only be removed, when in presence of reasoning, for assistant messages with tool calls.

Changed files:
filename: common/chat.cpp
patch: @@ -936,7 +936,9 @@ static common_chat_params common_chat_params_init_gpt_oss(const common_chat_temp
     for (auto msg : inputs.messages) {
         if (msg.contains("reasoning_content") && msg.at("reasoning_content").is_string()) {
             msg["thinking"] = msg.at("reasoning_content");
-            msg.erase("content");
+            if (msg.contains("tool_calls") && msg.at("tool_calls").is_array() && !msg.at("tool_calls").empty()) {
+                msg.erase("content");
+            }
         }
         adjusted_messages.push_back(msg);
     }
Repository: ollama/ollama
Pull request: file close check and close.


Changed files:
filename: convert/convert_test.go
patch: @@ -130,6 +130,7 @@ func TestConvertModel(t *testing.T) {
 			if err != nil {
 				t.Fatal(err)
 			}
+			defer expectFile.Close()
 
 			var expect map[string]string
 			if err := json.NewDecoder(expectFile).Decode(&expect); err != nil {

filename: integration/utils_test.go
patch: @@ -217,6 +217,7 @@ func InitServerConnection(ctx context.Context, t *testing.T) (*api.Client, strin
 					slog.Error("failed to open server log", "logfile", lifecycle.ServerLogFile, "error", err)
 					return
 				}
+				defer fp.Close()
 				data, err := io.ReadAll(fp)
 				if err != nil {
 					slog.Error("failed to read server log", "logfile", lifecycle.ServerLogFile, "error", err)
Repository: vuejs/vue
Pull request: [automated] Patreon backers update (Aug 2020

This is an automated pull request.

Changed files:
filename: BACKERS.md
patch: @@ -321,10 +321,9 @@ Funds donated via Patreon go directly to support Evan You's full-time work on Vu
 <!--50 start-->
 - Wasim Khamlichi
 - errorrik 
-- Konstantin Levinski
 - Sean Ferguson
 - Johnny Ray Austin
-- Manuel Guzman
+- Peter Imburg
 <!--50 end-->
 
 <h2 align="center">Backers via Patreon</h2>
@@ -333,85 +332,79 @@ Funds donated via Patreon go directly to support Evan You's full-time work on Vu
 - Masahiro Tanaka
 - Shawn Wildermuth
 - Keisuke Kita
-- Lars Andreas Ness
 - Benjamin Listwon
+- Lars Andreas Ness
 - Kirk Lewis
-- Victor Tolbert
 - Wen-Tien Chang
 - Stephen Michael Hartley
+- Victor Tolbert
+- username 
 - Luiz 
 - James J. Ye
 - Barbara Liau
+- Asaf Yishai
 - Matsumoto Takamasa
 - Guy Gavergun
 - Matt Jones
 - Niannian Modisette
 - Bernhard E. Reiter
-- Asaf Yishai
-- username 
 - Zoran Knezevic
 - Jon Hobbs-Smith
 - Pierre Vanhulst
-- Akiho Nagao
-- Anthony Estebe
 - Haim Yulzari
+- Anthony Estebe
 - Jim Raden
-- Jeremy Tan
 - IMGNRY 
-- Tyler 
 - Guilherme S L de Souza
-- Vivekanandhan Natarajan
-- Joe Gregory
+- Tyler 
 - Jordan Oroshiba
+- Joe Gregory
 - Marcos Moura
-- Jessie Hernandez
 - Eric 
-- Bohdan Kokotko
-- Oskar Lindgren
 - Jere Sjöroos
-- Donald Fischer
-- Alexander Weiher
 - Wakana Seki
+- Donald Fischer
 - David Ang
+- Oskar Lindgren
 - Jaeyoung Lee
 - David Kaplan
-- Andy 
 - Philip John Basile
 - Matt Sencenbaugh
-- Juan Bermudez
-- Elon Hung
 - Chris Calo
-- Daniel Mattingley
+- Juan Bermudez
 - Hannes Kochniß
-- Soichiro Isshiki
+- Daniel Mattingley
+- Elon Hung
 - Andrew Willis
 - Yusuke Kawabata
-- Nick Dandakis
-- Peter Matkovsky
 - 龙腾道 
-- Fabien GuySake Ungerer
-- Bill Condo
+- Peter Matkovsky
+- Nick Dandakis
 - Pierre Lebrun
 - Ryan Brewer
-- Martin Bastien
-- Alfonso Herrera
 - Bichinger Software & Consulting
+- Alfonso Herrera
 - Afif Sohaili
-- Nicolaas 
 - Riki Fridrich
-- Tomasz Kleszczewski
-- 琚致远 
 - Diana Bergholz
-- Parham 
+- 琚致远 
+- Parham Saidi
 - Allan McKernan
 - Roy Segall
-- Ronni Lin
-- Thomas Wiedemann
-- lucien144 
+- Abhay 
 - Nobuhide Esaki
+- Thomas Wiedemann
 - Santi Sanchez Canals
-- Zeth Odderskov
+- lucien144 
 - Evgeny Zislis
+- Zeth Odderskov
+- Kirill Tyurin
+- Jules 
+- Sunny Yuen
+- wickedwei 
+- Dennis Zanetti
+- Faizal Andyka
+- Aleksander Figiel
 <!--10 end-->
 
 <h2 align="center">Backers via OpenCollective</h2>
Repository: ollama/ollama
Pull request: win: ensure ollama paths come first

For all search path env vars make sure our dirs are first to avoid potentially finding other incompatible libraries on the users system.

Also fixes a minor build script glitch for windows rocm


Changed files:
filename: llm/server.go
patch: @@ -325,7 +325,9 @@ func NewLlamaServer(gpus discover.GpuInfoList, modelPath string, f *ggml.GGML, a
 			pathEnv = "LD_LIBRARY_PATH"
 		}
 
-		var libraryPaths []string
+		// Note: we always put our dependency paths first
+		// since these are the exact version we compiled/linked against
+		libraryPaths := []string{discover.LibOllamaPath}
 		if libraryPath, ok := os.LookupEnv(pathEnv); ok {
 			libraryPaths = append(libraryPaths, filepath.SplitList(libraryPath)...)
 		}
@@ -335,13 +337,11 @@ func NewLlamaServer(gpus discover.GpuInfoList, modelPath string, f *ggml.GGML, a
 			c := compatible[0]
 			if libpath, ok := libs[c]; ok {
 				slog.Debug("adding gpu library", "path", libpath)
-				libraryPaths = append(libraryPaths, libpath)
+				libraryPaths = append([]string{libpath}, libraryPaths...)
 				ggmlPaths = append(ggmlPaths, libpath)
 			}
 		}
 
-		// Note: we always put the dependency path first
-		// since this was the exact version we compiled/linked against
 		if gpus[0].DependencyPath != nil {
 			slog.Debug("adding gpu dependency paths", "paths", gpus[0].DependencyPath)
 			// assume gpus from the same library have the same dependency path

filename: scripts/build_windows.ps1
patch: @@ -121,7 +121,7 @@ function buildOllama() {
         if ($env:HIP_PATH) {
             write-host "Building ROCm backend libraries"
             if (-Not (get-command -ErrorAction silent ninja)) {
-                $NINJA_DIR=(gci -path (Get-CimInstance MSFT_VSInstance -Namespace root/cimv2/vs)[0].InstallLocation -r -fi ninja.exe) | split-path -parent
+                $NINJA_DIR=(gci -path (Get-CimInstance MSFT_VSInstance -Namespace root/cimv2/vs)[0].InstallLocation -r -fi ninja.exe).Directory.FullName
                 $env:PATH="$NINJA_DIR;$env:PATH"
             }
             $env:HIPCXX="${env:HIP_PATH}\bin\clang++.exe"
Repository: vercel/next.js
Pull request: Sort prerender manifest routes

Closes PACK-6753

Changed files:
filename: packages/next/src/build/index.ts
patch: @@ -222,6 +222,7 @@ import { handleBuildComplete } from './adapter/build-complete'
 import {
   sortPageObjects,
   sortPages,
+  sortPagesObject,
   sortSortableRouteObjects,
 } from '../shared/lib/router/utils/sortable-routes'
 import { cp, mkdir, writeFile } from 'fs/promises'
@@ -546,11 +547,13 @@ async function readManifest<T extends object>(filePath: string): Promise<T> {
 
 async function writePrerenderManifest(
   distDir: string,
-  manifest: DeepReadonly<PrerenderManifest>
+  manifest: PrerenderManifest
 ): Promise<void> {
+  // Sort for deterministic outputs
+  manifest.routes = sortPagesObject(manifest.routes)
+  manifest.dynamicRoutes = sortPagesObject(manifest.dynamicRoutes)
   await writeManifest(path.join(distDir, PRERENDER_MANIFEST), manifest)
 }
-
 async function writeClientSsgManifest(
   prerenderManifest: DeepReadonly<PrerenderManifest>,
   {

filename: packages/next/src/shared/lib/router/utils/sortable-routes.ts
patch: @@ -179,6 +179,28 @@ export function sortPages(pages: readonly string[]): readonly string[] {
   return [...pages].sort(compareRouteSegments)
 }
 
+/**
+ * Sorts an object by specificity of the keys using a deterministic depth-first traversal approach.
+ *
+ * @param obj - object of pages to sort
+ * @returns New sorted object (does not mutate input)
+ */
+export function sortPagesObject<T>(
+  obj: Readonly<Record<string, T>>
+): Record<string, T> {
+  // Because sort is always in-place, we need to create a shallow copy to avoid
+  // mutating the input.
+  return Object.keys(obj)
+    .sort(compareRouteSegments)
+    .reduce(
+      (acc, key) => {
+        acc[key] = obj[key]
+        return acc
+      },
+      {} as Record<string, T>
+    )
+}
+
 /**
  * Sorts an array of objects by sourcePage and page using a deterministic
  * depth-first traversal approach.
Repository: ollama/ollama
Pull request: add llama 4 models into readme


Changed files:
filename: README.md
patch: @@ -61,6 +61,8 @@ Here are some example models that can be downloaded:
 | QwQ                | 32B        | 20GB  | `ollama run qwq`                 |
 | DeepSeek-R1        | 7B         | 4.7GB | `ollama run deepseek-r1`         |
 | DeepSeek-R1        | 671B       | 404GB | `ollama run deepseek-r1:671b`    |
+| Llama 4            | 109B       | 67GB  | `ollama run llama4:scout`        |
+| Llama 4            | 400B       | 245GB | `ollama run llama4:maverick`     |
 | Llama 3.3          | 70B        | 43GB  | `ollama run llama3.3`            |
 | Llama 3.2          | 3B         | 2.0GB | `ollama run llama3.2`            |
 | Llama 3.2          | 1B         | 1.3GB | `ollama run llama3.2:1b`         |
Repository: ggml-org/llama.cpp
Pull request: cmake : fix build warning when kleidiai is enabled


Changed files:
filename: ggml/src/ggml-cpu/CMakeLists.txt
patch: @@ -570,24 +570,34 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
         set(KLEIDIAI_DOWNLOAD_URL "https://github.com/ARM-software/kleidiai/archive/refs/tags/${KLEIDIAI_COMMIT_TAG}.tar.gz")
         set(KLEIDIAI_ARCHIVE_MD5  "54049037570ab0ee0a0d126b2ba5ece1")
 
-        if (POLICY CMP0135)
-            cmake_policy(SET CMP0135 NEW)
-        endif()
-
-        # TODO: Use FetchContent_MakeAvailable with EXCLUDE_FROM_ALL after bumping minimum CMake version to 3.28+
-        # Using FetchContent_Populate instead to avoid EXCLUDE_FROM_ALL which requires CMake 3.28
-        FetchContent_Declare(KleidiAI_Download
+        set(KLEIDIAI_FETCH_ARGS
             URL ${KLEIDIAI_DOWNLOAD_URL}
             DOWNLOAD_EXTRACT_TIMESTAMP NEW
-            URL_HASH MD5=${KLEIDIAI_ARCHIVE_MD5})
+            URL_HASH MD5=${KLEIDIAI_ARCHIVE_MD5}
+        )
 
-        FetchContent_GetProperties(KleidiAI_Download
-            SOURCE_DIR  KLEIDIAI_SRC
-            POPULATED   KLEIDIAI_POPULATED)
+        if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.28")
+            FetchContent_Declare(KleidiAI_Download
+                ${KLEIDIAI_FETCH_ARGS}
+                EXCLUDE_FROM_ALL
+            )
 
-        if (NOT KLEIDIAI_POPULATED)
-            FetchContent_Populate(KleidiAI_Download)
+            FetchContent_MakeAvailable(KleidiAI_Download)
             FetchContent_GetProperties(KleidiAI_Download SOURCE_DIR KLEIDIAI_SRC)
+        else()
+            FetchContent_Declare(KleidiAI_Download
+                ${KLEIDIAI_FETCH_ARGS}
+            )
+
+            FetchContent_GetProperties(KleidiAI_Download
+                SOURCE_DIR KLEIDIAI_SRC
+                POPULATED KLEIDIAI_POPULATED
+            )
+
+            if (NOT KLEIDIAI_POPULATED)
+                FetchContent_Populate(KleidiAI_Download)
+                FetchContent_GetProperties(KleidiAI_Download SOURCE_DIR KLEIDIAI_SRC)
+            endif()
         endif()
 
         add_compile_definitions(GGML_USE_CPU_KLEIDIAI)
Repository: vuejs/vue
Pull request: Changing keyup to keypress to properly deal transform of Japanese chars

<!--
Please make sure to read the Pull Request Guidelines:
https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#pull-request-guidelines
-->

<!-- PULL REQUEST TEMPLATE -->
<!-- (Update "[ ]" to "[x]" to check a box) -->

**What kind of change does this PR introduce?** (check at least one)

- [x] Bugfix
- [ ] Feature
- [ ] Code style update
- [ ] Refactor
- [ ] Build-related changes
- [ ] Other, please describe:

**Does this PR introduce a breaking change?** (check one)

- [ ] Yes
- [x] No

If yes, please describe the impact and migration path for existing applications:

**The PR fulfills these requirements:**

- [x] It's submitted to the `dev` branch for v2.x (or to a previous version branch), _not_ the `master` branch
- [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. `fix #xxx[,#xxx]`, where "xxx" is the issue number)
- [ ] All tests are passing: https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#development-setup
- [ ] New/updated tests are included

If adding a **new feature**, the PR's description includes:
- [ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

**Other information:**
[[TodoMVC Example] [enter] key event to determin transform of Japanese characters makes the item added to list](https://github.com/vuejs/jp.vuejs.org/issues/1338)

Changed files:
filename: examples/todomvc/index.html
patch: @@ -15,7 +15,7 @@ <h1>todos</h1>
           autofocus autocomplete="off"
           placeholder="What needs to be done?"
           v-model="newTodo"
-          @keyup.enter="addTodo">
+          @keypress.enter="addTodo">
       </header>
       <section class="main" v-show="todos.length" v-cloak>
         <input class="toggle-all" type="checkbox" v-model="allDone">
@@ -33,7 +33,7 @@ <h1>todos</h1>
               v-model="todo.title"
               v-todo-focus="todo == editedTodo"
               @blur="doneEdit(todo)"
-              @keyup.enter="doneEdit(todo)"
+              @keypress.enter="doneEdit(todo)"
               @keyup.esc="cancelEdit(todo)">
           </li>
         </ul>
Repository: ollama/ollama
Pull request: ggml: Fix race that resulted in "context canceled" when loading

Successfully completing processing with an errgroup cancels the associated context. However, we also have a goroutine that is checking for cancelation of the context. As a result, there is a race where the goroutine can pick up the cancelation and report an error, replacing the sucessful error message.

To avoid that, this replaces the goroutine with a cancelation check when we are reading files. This also has the advantage of stopping all reads relatively quickly on error and also ensuring that there are no outstanding I/O operations when we return in this case.

The downside is that if a file read blocks forever (for example, over the network) then cancelation of the context effectively won't be honored. However, this is also true for other smaller files we read and the tensors are read in small chunks (128K), so it's consistent and better on balance overall.

Changed files:
filename: ml/backend/ggml/ggml.go
patch: @@ -341,6 +341,11 @@ func New(ctx context.Context, r *os.File, params ml.BackendParams) (ml.Backend,
 
 			var s uint64
 			for s < t.Size() {
+				// Stop if either the parent context has been canceled or if any of the other tensors returned an error
+				if err := ctx.Err(); err != nil {
+					return err
+				}
+
 				n, err := io.ReadFull(sr, bts[:min(len(bts), int(t.Size()-s))])
 				if err != nil {
 					slog.Warn("file read error", "file", r.Name(), "error", err)
@@ -363,14 +368,6 @@ func New(ctx context.Context, r *os.File, params ml.BackendParams) (ml.Backend,
 		})
 	}
 
-	// start a goroutine to cancel the errgroup if the parent context is done
-	go func() {
-		<-ctx.Done()
-		g.Go(func() error {
-			return ctx.Err()
-		})
-	}()
-
 	if err := g.Wait(); err != nil {
 		return nil, err
 	}
Repository: ggml-org/llama.cpp
Pull request: vocab : assert array size of scores and toktypes

Another non-automated non-slop version of another PR.

Changed files:
filename: src/llama-vocab.cpp
patch: @@ -2129,19 +2129,28 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
         throw std::runtime_error("cannot find tokenizer vocab in model file\n");
     }
 
+    const uint32_t n_tokens = gguf_get_arr_n(ctx, token_idx);
+
     const float * scores = nullptr;
     const int score_idx = gguf_find_key(ctx, kv(LLM_KV_TOKENIZER_SCORES).c_str());
     if (score_idx != -1) {
+        const uint32_t n_scores = gguf_get_arr_n(ctx, score_idx);
+        if (n_scores < n_tokens) {
+            throw std::runtime_error("Index out of array bounds for scores (" + std::to_string(n_scores) + " < " + std::to_string(n_tokens) + ")\n");
+        }
         scores = (const float * ) gguf_get_arr_data(ctx, score_idx);
     }
 
     const int * toktypes = nullptr;
     const int toktype_idx = gguf_find_key(ctx, kv(LLM_KV_TOKENIZER_TOKEN_TYPE).c_str());
     if (toktype_idx != -1) {
+        const uint32_t n_toktypes = gguf_get_arr_n(ctx, toktype_idx);
+        if (n_toktypes < n_tokens) {
+            throw std::runtime_error("Index out of array bounds for toktypes (" + std::to_string(n_toktypes) + " < " + std::to_string(n_tokens) + ")\n");
+        }
         toktypes = (const int * ) gguf_get_arr_data(ctx, toktype_idx);
     }
 
-    uint32_t n_tokens = gguf_get_arr_n(ctx, token_idx);
     id_to_token.resize(n_tokens);
 
     for (uint32_t i = 0; i < n_tokens; i++) {
Repository: huggingface/transformers
Pull request: Add XPU support to the tests for solar_open

# What does this PR do?

Hi @ydshieh , please help review this PR, thanks!

Changed files:
filename: tests/models/solar_open/test_modeling_solar_open.py
patch: @@ -19,6 +19,7 @@
 
 from transformers import is_torch_available
 from transformers.testing_utils import (
+    Expectations,
     cleanup,
     require_torch,
     require_torch_accelerator,
@@ -100,10 +101,18 @@ def test_batch_generation_dummy_bf16(self):
             "Lorem ipsum dolor sit amet",
         ]
         # expected random outputs from the tiny dummy model
-        EXPECTED_DECODED_TEXT = [
-            "Orange is the new blackRIB yshift yshift catheter merits catheterCCTV meritsCCTVCCTVCCTVCCTVCCTVCCTV SyllabusCCTVCCTVCCTVCCTV Syllabus",
-            "Lorem ipsum dolor sit amet=√=√=√ 치수 치수 치수 치수 치수 치수 치수 Shelley Shelley Shelley Shelley Shelley Shelley Shelley Shelley площа площа",
-        ]
+        EXPECTED_DECODED_TEXT = Expectations(
+            {
+                ("cuda", None): [
+                    "Orange is the new blackRIB yshift yshift catheter merits catheterCCTV meritsCCTVCCTVCCTVCCTVCCTVCCTV SyllabusCCTVCCTVCCTVCCTV Syllabus",
+                    "Lorem ipsum dolor sit amet=√=√=√ 치수 치수 치수 치수 치수 치수 치수 Shelley Shelley Shelley Shelley Shelley Shelley Shelley Shelley площа площа",
+                ],
+                ("xpu", 3): [
+                    "Orange is the new blackRIB yshift yshift merits catheter merits yshiftCCTVCCTVCCTVCCTVCCTVCCTVCCTVCCTVCCTVCCTV SyllabusCCTVCCTV",
+                    "Lorem ipsum dolor sit amet=√=√ 치수=√ 치수 치수 치수 치수 치수 Shelley Shelley Shelley Shelley Shelley Shelley Shelley Shelley Shelley площа площа",
+                ],
+            }
+        ).get_expectation()
 
         tokenizer = AutoTokenizer.from_pretrained(model_id)
         model = SolarOpenForCausalLM.from_pretrained(
Repository: vercel/next.js
Pull request: Keep pages/404.js to be able to dynamically render it anyway

Needed for https://github.com/vercel/vercel/pull/14795

Keep the file so that we can instead dynamically render it as opposed to having to bundle the prerender into the function

Changed files:
filename: packages/next/src/build/index.ts
patch: @@ -3179,6 +3179,11 @@ export default async function build(
 
           // remove server bundles that were exported
           for (const page of staticPages) {
+            if (page === '/404') {
+              // keep the pages 404 chunk as we might need it if we do want to runtime-render the
+              // 404 in the function later
+              continue
+            }
             const serverBundle = getPagePath(page, distDir, undefined, false)
             await fs.unlink(serverBundle)
           }

filename: test/integration/404-page/test/index.test.ts
patch: @@ -60,6 +60,12 @@ const runTests = (mode = 'server') => {
       expect(page.endsWith('.html')).toBe(true)
     })
 
+    it('should still output 404.js anyway', async () => {
+      expect(
+        await fs.pathExists(join(appDir, '.next/server/pages/404.js'))
+      ).toBeTrue()
+    })
+
     it('should add /404 to pages-manifest correctly', async () => {
       const manifest = await fs.readJSON(
         join(appDir, '.next', mode, 'pages-manifest.json')
Repository: ollama/ollama
Pull request: change granite 3.2 to 3.3

Update the list for readme

Changed files:
filename: README.md
patch: @@ -77,7 +77,7 @@ Here are some example models that can be downloaded:
 | Code Llama         | 7B         | 3.8GB | `ollama run codellama`           |
 | Llama 2 Uncensored | 7B         | 3.8GB | `ollama run llama2-uncensored`   |
 | LLaVA              | 7B         | 4.5GB | `ollama run llava`               |
-| Granite-3.2         | 8B         | 4.9GB | `ollama run granite3.2`          |
+| Granite-3.3         | 8B         | 4.9GB | `ollama run granite3.3`          |
 
 > [!NOTE]
 > You should have at least 8 GB of RAM available to run the 7B models, 16 GB to run the 13B models, and 32 GB to run the 33B models.