diff --git a/manual/luatex-callbacks.tex b/manual/luatex-callbacks.tex
index a65b6e8d1f23a04111f397ad166444e90cb9a309..af914483aec37ab3ef6e8ac5cb7fd50730385f44 100644
--- a/manual/luatex-callbacks.tex
+++ b/manual/luatex-callbacks.tex
@@ -933,6 +933,21 @@ end
 This callback replaces the code that prints the error message. The usual
 interaction after the message is not affected.
 
+\subsection{\cbk {show_ignored_error_message}}
+
+\topicindex{callbacks+errors}
+
+\startfunctioncall
+function()
+end
+\stopfunctioncall
+
+This callback replaces the code that prints the error message
+when \prm {ignoreprimitiveerror} is enabled.
+As before, the usual
+interaction after the message is not affected.
+
+
 \subsection{\cbk {show_lua_error_hook}}
 
 \topicindex{callbacks+errors}
diff --git a/manual/luatex-enhancements.tex b/manual/luatex-enhancements.tex
index 537961661f5cc0828d033819a6af7888f5dc3752..2fe818cc962267f4ab138d5670371d247d707974 100644
--- a/manual/luatex-enhancements.tex
+++ b/manual/luatex-enhancements.tex
@@ -1161,6 +1161,9 @@ but don't apply the related callbacks.
 The \prm {vsplit} primitive has to be followed by a specification of the required
 height. As alternative for the \type {to} keyword you can use \type {upto} to get
 a split of the given size but result has the natural dimensions then.
+If \prm {ignoreprimitiveerror} = 1 , the error
+"Infinite glue shrinkage found in box being split" that occurs
+when vsplit-ting a box containing infinite negative glue is turned into a warning.
 
 \stopsubsection
 
diff --git a/manual/luatex.pdf b/manual/luatex.pdf
index 3108455c4628e31fcba8fef6dd77d8c6949463d5..f2e14ab1d81e37ca3fc39a23e5b983f7fe472793 100644
Binary files a/manual/luatex.pdf and b/manual/luatex.pdf differ
diff --git a/source/texk/web2c/luatexdir/ChangeLog b/source/texk/web2c/luatexdir/ChangeLog
index cfb81172427814d886f0026b354fda61a35a1f63..2972639d143b89f5756a261d0f29f4b22f5b4910 100644
--- a/source/texk/web2c/luatexdir/ChangeLog
+++ b/source/texk/web2c/luatexdir/ChangeLog
@@ -1,3 +1,8 @@
+2025-01-19 Luigi Scarso <luigi.scarso@gmail.com>
+	* \ignoreprimitiveerror as in pdftex
+
+
+
 2025-01-19 Luigi Scarso <luigi.scarso@gmail.com>
 	* Fixed \shapemode does not reset at end of paragraphs (thanks to udifoglle@gmail.com)
 
diff --git a/source/texk/web2c/luatexdir/lua/lcallbacklib.c b/source/texk/web2c/luatexdir/lua/lcallbacklib.c
index c4472c07f7ff8bb0517ad3adc765a61158d118c0..4c5bf74c03684c07bd39ae011009d7e43db228c5 100644
--- a/source/texk/web2c/luatexdir/lua/lcallbacklib.c
+++ b/source/texk/web2c/luatexdir/lua/lcallbacklib.c
@@ -68,7 +68,7 @@ static const char *const callbacknames[] = {
     "finish_pdffile",
     "finish_pdfpage",
     "pre_dump","start_file", "stop_file",
-    "show_error_message","show_lua_error_hook",
+    "show_error_message","show_lua_error_hook","show_ignored_error_message",
     "show_warning_message",
     "hpack_quality", "vpack_quality",
     "process_rule",
diff --git a/source/texk/web2c/luatexdir/lua/luainit.c b/source/texk/web2c/luatexdir/lua/luainit.c
index 1b932a29ca29f99b14b7e14d8e1123843e7b958a..dad4ef7167fe1b876ee7b60eb5fa65a7d975b224 100644
--- a/source/texk/web2c/luatexdir/lua/luainit.c
+++ b/source/texk/web2c/luatexdir/lua/luainit.c
@@ -491,7 +491,7 @@ static void parse_options(int ac, char **av)
                  "the terms of the GNU General Public License, version 2 or (at your option)\n"
                  "any later version. For more information about these matters, see the file\n"
                  "named COPYING and the LuaTeX source.\n\n"
-                 "LuaTeX is Copyright 2022 Taco Hoekwater and the LuaTeX Team.\n");
+                 "LuaTeX is Copyright 2025 Taco Hoekwater and the LuaTeX Team.\n");
             /* *INDENT-ON* */
             uexit(0);
         } else if (ARGUMENT_IS("credits")) {
diff --git a/source/texk/web2c/luatexdir/luatex_svnversion.h b/source/texk/web2c/luatexdir/luatex_svnversion.h
index b963f5fbb45b7c7551bf05eeaae0b3b0e9883f94..ce097305255a606c4a0e5f5a694c731a447ad773 100644
--- a/source/texk/web2c/luatexdir/luatex_svnversion.h
+++ b/source/texk/web2c/luatexdir/luatex_svnversion.h
@@ -1,4 +1,4 @@
 #ifndef luatex_svn_revision_h
 #define luatex_svn_revision_h
-#define luatex_svn_revision 7644
+#define luatex_svn_revision 7645
 #endif
diff --git a/source/texk/web2c/luatexdir/luatexcallbackids.h b/source/texk/web2c/luatexdir/luatexcallbackids.h
index 7a56a86b9320ce01599b3e916b550d139ee48134..fbb037462ad5a39f306c7067a6f9e41606b71c72 100644
--- a/source/texk/web2c/luatexdir/luatexcallbackids.h
+++ b/source/texk/web2c/luatexdir/luatexcallbackids.h
@@ -60,7 +60,7 @@ typedef enum {
     finish_pdfpage_callback,
     pre_dump_callback,
     start_file_callback, stop_file_callback,
-    show_error_message_callback, show_lua_error_hook_callback,
+    show_error_message_callback, show_lua_error_hook_callback,show_ignored_error_message_callback,
     show_warning_message_callback,
     hpack_quality_callback, vpack_quality_callback,
     process_rule_callback,
diff --git a/source/texk/web2c/luatexdir/tex/commands.c b/source/texk/web2c/luatexdir/tex/commands.c
index 1c768cb174b6c10fad471ece04fc55b8804c7d0b..371626daf53d3f0c59b9b2749e40fc37f26021c6 100644
--- a/source/texk/web2c/luatexdir/tex/commands.c
+++ b/source/texk/web2c/luatexdir/tex/commands.c
@@ -789,6 +789,7 @@ void initialize_etex_commands(void)
     primitive_etex("lastlinefit", assign_int_cmd, int_base + last_line_fit_code, int_base);
     primitive_etex("savingvdiscards", assign_int_cmd, int_base + saving_vdiscards_code, int_base);
     primitive_etex("savinghyphcodes", assign_int_cmd, int_base + saving_hyph_codes_code, int_base);
+    primitive_etex("ignoreprimitiveerror", assign_int_cmd, int_base + ignore_primitive_error_code, int_base);
     primitive_luatex("suppressfontnotfounderror", assign_int_cmd, int_base + suppress_fontnotfound_error_code, int_base);
     primitive_luatex("suppresslongerror", assign_int_cmd, int_base + suppress_long_error_code, int_base);
     primitive_luatex("suppressprimitiveerror", assign_int_cmd, int_base + suppress_primitive_error_code, int_base);
diff --git a/source/texk/web2c/luatexdir/tex/equivalents.h b/source/texk/web2c/luatexdir/tex/equivalents.h
index f755af60a3f427f2a3ff445a9e3385f11627f178..bf329b3a1be1c3cb273ef38cb76b7aeaaf1515ff 100644
--- a/source/texk/web2c/luatexdir/tex/equivalents.h
+++ b/source/texk/web2c/luatexdir/tex/equivalents.h
@@ -316,7 +316,10 @@ the |number_regs| \.{\\dimen} registers.
 #  define math_eq_dir_mode_code 123
 #  define var_fam_code 124
 
-#  define math_option_code 125
+#  define ignore_primitive_error_code 125 				/*ignore some primitive/engine errors*/
+
+#  define math_option_code 126
+
 
 #  define mathoption_int_base_code (math_option_code+1)                 /* one reserve */
 #  define mathoption_int_last_code (mathoption_int_base_code+8)
@@ -805,6 +808,7 @@ extern halfword last_cs_name;
 #define default_hyphen_char_par            int_par(default_hyphen_char_code)
 #define default_skew_char_par              int_par(default_skew_char_code)
 #define saving_hyph_codes_par              int_par(saving_hyph_codes_code)
+#define ignore_primitive_error_par         int_par(ignore_primitive_error_code)
 
 #define hyphen_penalty_mode_par            int_par(hyphen_penalty_mode_code)
 #define automatic_hyphen_penalty_par       int_par(automatic_hyphen_penalty_code)
diff --git a/source/texk/web2c/luatexdir/tex/errors.c b/source/texk/web2c/luatexdir/tex/errors.c
index 01b6f44aada8f38cbdab4bfc7a2a94b40a7a9e18..5246940482459f25655253aaef3cff11b2953cef 100644
--- a/source/texk/web2c/luatexdir/tex/errors.c
+++ b/source/texk/web2c/luatexdir/tex/errors.c
@@ -106,7 +106,12 @@ void flush_err(void)
         if (callback_id > 0) {
             run_callback(callback_id, "->");
         } else {
-            tprint(s);
+	    callback_id = callback_defined(show_ignored_error_message_callback);
+	    if (callback_id > 0) {
+	      run_callback(callback_id, "->");
+	    } else {
+              tprint(s);
+	    }  
         }
         in_error = 0 ;
     }
@@ -136,6 +141,30 @@ void print_err(const char *s)
     }
 }
 
+void print_ignored_err(const char *s)
+{
+    int callback_id = callback_defined(show_ignored_error_message_callback);
+    if (interaction == error_stop_mode) {
+        wake_up_terminal();
+    }
+    if (callback_id > 0) {
+        err_old_setting = selector;
+        selector = new_string;
+        in_error = 1 ;
+    }
+    if (filelineerrorstylep) {
+        print_file_line();
+    } else {
+        tprint_nl("ignored error ");
+    }
+    tprint(s);
+    if (callback_id <= 0) {
+        xfree(last_error);
+        last_error = (string) xmalloc((unsigned) (strlen(s) + 1));
+        strcpy(last_error,s);
+    }
+}
+
 /*tex
 
 \TeX\ is careful not to call |error| when the print |selector| setting might be
diff --git a/source/texk/web2c/luatexdir/tex/packaging.c b/source/texk/web2c/luatexdir/tex/packaging.c
index 3d23c8b73207bc83448b88c5eef4abb5ae26e295..c69f65d7aa8a9d0bddfa10a6678c41585a0d944e 100644
--- a/source/texk/web2c/luatexdir/tex/packaging.c
+++ b/source/texk/web2c/luatexdir/tex/packaging.c
@@ -1854,7 +1854,11 @@ halfword vert_break(halfword p, scaled h, scaled d)
             active_height[2 + stretch_order(p)] += stretch(p);
             active_height[7] += shrink(p);
             if ((shrink_order(p) != normal) && (shrink(p) != 0)) {
+	      if (((unsigned int)ignore_primitive_error_par) & 0x1){
+		print_ignored_err("Infinite glue shrinkage found in box being split");
+	      } else {
                 print_err("Infinite glue shrinkage found in box being split");
+		
                 help4(
                     "The box you are \\vsplitting contains some infinitely",
                     "shrinkable glue, e.g., `\\vss' or `\\vskip 0pt minus 1fil'.",
@@ -1862,7 +1866,8 @@ halfword vert_break(halfword p, scaled h, scaled d)
                     "since the offensive shrinkability has been made finite."
                 );
                 error();
-                shrink_order(p) = normal;
+	      }
+	    shrink_order(p) = normal;
             }
         }
         cur_height = cur_height + prev_dp + width(p);