Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nim for openSUSE:Factory checked in at 2026-11-02 16:39:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nim (Old) and /work/SRC/openSUSE:Factory/.nim.new.1255 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nim" Mon Nov 2 16:39:58 2026 rev:37 rq:1394427 version:2.4.0 Changes: -------- --- /work/SRC/openSUSE:Factory/nim/nim.changes 2026-09-09 16:22:00.232157803 +0200 +++ /work/SRC/openSUSE:Factory/.nim.new.1255/nim.changes 2026-11-02 16:40:49.819398060 +0100 @@ -1,0 +2,27 @@ +Thu Oct 29 07:56:33 UTC 2026 - Andrea Manzini <[email protected]> + +- Update to version 2.4.0: + * SSO-based strings API + * Incremental compilation via --ic:on + * Support for cyclic module dependencies + * New --mm:yrc thread-safe cycle collector + * Stdlib security hardening: httpclient drops Authorization, + Cookie and Host on cross-origin redirects and rejects CR/LF/NUL + in requests; asyncnet checks TLS IP SANs; asynchttpserver + rejects ambiguous body framing; xmlparser and htmlparser cap + nesting depth +- Package the new nifler and nifmake tools used by incremental + compilation +- Refreshed patches to apply cleanly: + * nim-fix-tests-i586.patch + * nim-nim-gdb_fix_interpreter.patch +- Rebase nim-2.2.2-pcre2.patch for 2.4.0 (pcre2 port of re and + nre from closed upstream PR #24405; upstream's fix for #23668 + is std/nre2, which needs nim-regex) +- Re-enable tests (tmath, t22305, tio, t13115, tatomics except + on ppc64le) +- Skip nimhcr hot code reloading tests on aarch64 and ppc64le, and + tstrtabs on ppc64le +- Exclude tests/stdlib/tnre2.nim (needs network for nimble install) + +------------------------------------------------------------------- Old: ---- nim-2.2.12.tar.xz New: ---- nim-2.4.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nim.spec ++++++ --- /var/tmp/diff_new_pack.IP84vC/_old 2026-11-02 16:40:52.038491034 +0100 +++ /var/tmp/diff_new_pack.IP84vC/_new 2026-11-02 16:40:52.040491118 +0100 @@ -19,7 +19,7 @@ %define _atlas_version 0.14.7 %define _sat_commit 9d52513b3c68bfb929dbd687d4fb2836cfee6936 Name: nim -Version: 2.2.12 +Version: 2.4.0 Release: 0 Summary: A statically typed compiled systems programming language License: MIT @@ -28,10 +28,13 @@ Source1: https://github.com/nim-lang/atlas/archive/refs/tags/%{_atlas_version}.tar.gz#/atlas-%{_atlas_version}.tar.gz Source2: nim-rpmlintrc Source3: https://github.com/nim-lang/sat/archive/%{_sat_commit}.tar.gz#/sat-%{_sat_commit}.tar.gz +# PATCH-FIX-OPENSUSE nim-nim-gdb_fix_interpreter.patch [email protected] -- bin/nim-gdb: use /usr/bin/bash shebang Patch0: nim-nim-gdb_fix_interpreter.patch +# PATCH-FIX-OPENSUSE nim-fix-tests-i586.patch [email protected] -- skip tests that fail on i586 Patch1: nim-fix-tests-i586.patch # https://github.com/nim-lang/Nim/issues/23668 -# https://github.com/nim-lang/Nim/pull/24405 +# https://github.com/nim-lang/Nim/pull/24405 (closed, not merged) +# PATCH-FIX-OPENSUSE nim-2.2.2-pcre2.patch [email protected] -- port re.nim and nre.nim to pcre2, libpcre1 not in Factory Patch2: nim-2.2.2-pcre2.patch BuildRequires: binutils-devel BuildRequires: ca-certificates @@ -150,26 +153,16 @@ tests/cpp/tasync_cpp.nim # expects Nim to be in PATH... tests/stdlib/tosproc.nim - # following tests are flaky - tests/stdlib/tio.nim + # needs network: nimble install unicodedb/regex (new in 2.4.0) + tests/stdlib/tnre2.nim + # gcc rejects -march=native on ppc64le tests/arc/thard_alignment.nim - # this one needs NodeJS althought its not required by the build + # needs NodeJS, which the SLE 15 / Leap 15 build roots lack tests/nimdoc/trunnableexamples.nim + # this one needs NodeJS although its not required by the build tests/js/tnativeexc.nim - # broken in Leap 15.3 - tests/exception/t13115.nim # no SFML in plain SLE and missing in backport repos tests/niminaction/Chapter8/sfml/sfml_test.nim - # GCC 14 related errors - #tests/objects/toop1.nim - #tests/vm/tvmmisc.nim - #tests/cpp/tmanual_exception.nim - #tests/objects/tobjcov.nim - # GCC 15 related errors - tests/stdlib/concurrency/tatomics.nim - # exits with 1 for some reason - tests/stdlib/tmath.nim - tests/generics/t22305.nim EOT %ifarch i586 @@ -218,6 +211,14 @@ tests/misc/tvcc.nim tests/threads/t7172.nim tests/dll/nimhcr_basic.nim + tests/dll/nimhcr_async.nim + tests/dll/nimhcr_logging.nim + tests/dll/nimhcr_integration.nim + tests/dll/nimhcr_global_ref.nim + tests/dll/nimhcr_methods.nim + tests/dll/nimhcr_threadvar.nim + tests/misc/thcr_threadvars.nim + lib/nimhcr.nim tests/threads/t8535.nim tests/threads/threadex.nim tests/threads/tmanyjoin.nim @@ -230,6 +231,15 @@ EOT %endif +%ifarch ppc64le +cat << EOT >> tests_to_skip + # tatomics: weak compare-exchange fails in cpp --mm:orc; + # tstrtabs: memory accounting check fails + tests/stdlib/concurrency/tatomics.nim + tests/stdlib/tstrtabs.nim +EOT +%endif + %if 0%{?suse_version} < 1501 cat << EOT >> tests_to_skip # deactivate all tests that require node, as node version in @@ -324,6 +334,8 @@ strip --strip-all %{buildroot}%{_libdir}/nim/bin/nimgrep strip --strip-all %{buildroot}%{_libdir}/nim/bin/nimpretty strip --strip-all %{buildroot}%{_libdir}/nim/bin/nimsuggest +strip --strip-all %{buildroot}%{_libdir}/nim/bin/nifler +strip --strip-all %{buildroot}%{_libdir}/nim/bin/nifmake # nim requires symlinks to executables, as it looks for its # standard library by resolving the link and then checking for @@ -335,6 +347,8 @@ ln -s %{_libdir}/nim/bin/nimgrep %{buildroot}%{_bindir} ln -s %{_libdir}/nim/bin/nimpretty %{buildroot}%{_bindir} ln -s %{_libdir}/nim/bin/nimsuggest %{buildroot}%{_bindir} +ln -s %{_libdir}/nim/bin/nifler %{buildroot}%{_bindir} +ln -s %{_libdir}/nim/bin/nifmake %{buildroot}%{_bindir} mv $TARGET/nim/compiler* %{buildroot}%{_libdir}/nim/ mv $TARGET/nim/lib %{buildroot}%{_libdir}/nim/ @@ -353,6 +367,8 @@ %{_bindir}/nimgrep %{_bindir}/nimpretty %{_bindir}/nimsuggest +%{_bindir}/nifler +%{_bindir}/nifmake %dir %{_sysconfdir}/nim %config %{_sysconfdir}/nim/* ++++++ nim-2.2.2-pcre2.patch ++++++ --- /var/tmp/diff_new_pack.IP84vC/_old 2026-11-02 16:40:52.082492878 +0100 +++ /var/tmp/diff_new_pack.IP84vC/_new 2026-11-02 16:40:52.086493045 +0100 @@ -1,20 +1,12 @@ From 8c2ec2a7b010ef1a43b967205324ac83d11815d1 Mon Sep 17 00:00:00 2001 From: ringabout <[email protected]> Date: Mon, 4 Nov 2024 22:32:12 +0800 -Subject: [PATCH 1/7] fixes #23668; migrates from pcre to pcre2 +Subject: fixes #23668; migrates from pcre to pcre2 (rebased for nim 2.4.0) --- - lib/impure/nre.nim | 168 +++++----- - lib/impure/re.nim | 199 ++++++----- - lib/wrappers/pcre2.nim | 683 ++++++++++++++++++++++++++++++++++++++ - tests/stdlib/nre/init.nim | 18 +- - 4 files changed, 893 insertions(+), 175 deletions(-) - create mode 100644 lib/wrappers/pcre2.nim - -Index: nim-2.2.12/lib/impure/nre.nim -=================================================================== ---- nim-2.2.12.orig/lib/impure/nre.nim -+++ nim-2.2.12/lib/impure/nre.nim +diff -ruN o/lib/impure/nre.nim p/lib/impure/nre.nim +--- nim-2.4.0.orig/lib/impure/nre.nim 2026-10-29 10:32:07.759422238 +0100 ++++ nim-2.4.0.patched/lib/impure/nre.nim 2026-10-29 10:32:07.816181019 +0100 @@ -1,6 +1,6 @@ # # Nim's Runtime Library @@ -23,7 +15,7 @@ # # See the file "copying.txt", included in this # distribution, for details about the copyright. -@@ -61,7 +61,7 @@ runnableExamples: +@@ -66,7 +66,7 @@ assert find("uxabc", re"(?<=x|y)ab", start = 1).get.captures[-1] == "ab" assert find("uxabc", re"ab", start = 3).isNone @@ -32,7 +24,7 @@ import nre/private/util import std/tables from std/strutils import `%` -@@ -76,8 +76,7 @@ export options +@@ -81,8 +81,7 @@ type RegexDesc* = object pattern*: string @@ -42,7 +34,7 @@ captureNameToId: Table[string, int] -@@ -137,8 +136,6 @@ type +@@ -142,8 +141,6 @@ ## are recognized only in UTF-8 mode. ## — man pcre ## @@ -51,7 +43,7 @@ ## ## For more details on the leading option groups, see the `Option ## Setting <https://man7.org/linux/man-pages/man3/pcresyntax.3.html#OPTION_SETTING>`_ -@@ -191,7 +188,7 @@ type +@@ -196,7 +193,7 @@ pattern*: Regex ## The regex doing the matching. ## Not nil. str*: string ## The string that was matched against. @@ -60,7 +52,7 @@ ## Other items are the captures ## `a` is inclusive start, `b` is exclusive end -@@ -222,37 +219,31 @@ when defined(gcDestructors): +@@ -227,38 +224,32 @@ when defined(nimAllowNonVarDestructor) and defined(nimPreviewNonVarDestructor): proc `=destroy`(pattern: RegexDesc) = `=destroy`(pattern.pattern) @@ -87,8 +79,9 @@ `=destroy`(pattern.captureNameToId) -proc getinfo[T](pattern: Regex, opt: cint): T = -- let retcode = pcre.fullinfo(pattern.pcreObj, pattern.pcreExtra, opt, addr result) +proc getinfo[T](pattern: Regex, opt: uint32): T = + result = default(T) +- let retcode = pcre.fullinfo(pattern.pcreObj, pattern.pcreExtra, opt, addr result) + let retcode = pcre2.pattern_info(pattern.pcreObj, opt, addr result) if retcode < 0: @@ -106,7 +99,7 @@ result = initTable[string, int]() -@@ -268,53 +259,49 @@ proc getNameToNumberTable(pattern: Regex +@@ -274,53 +265,49 @@ result[name] = num @@ -118,8 +111,8 @@ new(result, destroyRegex) result.pattern = pattern -- var errorMsg: cstring -- var errOffset: cint +- var errorMsg: cstring = "" +- var errOffset: cint = 0 - - result.pcreObj = pcre.compile(cstring(pattern), - # better hope int is at least 4 bytes.. @@ -139,15 +132,14 @@ - if study: - var options: cint = 0 -- var hasJit: cint ++ if not noJit: + var hasJit: cint = cint(0) - if pcre.config(pcre.CONFIG_JIT, addr hasJit) == 0: - if hasJit == 1'i32: - options = pcre.STUDY_JIT_COMPILE - result.pcreExtra = pcre.study(result.pcreObj, options, addr errorMsg) - if errorMsg != nil: - raise StudyError(msg: $errorMsg) -+ if not noJit: -+ var hasJit: cint = cint(0) + if pcre2.config(pcre2.CONFIG_JIT, addr hasJit) == 0: + if hasJit == 1'i32 and pcre2.jit_compile(result.pcreObj, pcre2.JIT_COMPLETE) != 0: + raise StudyError(msg: "JIT compilation failed.") @@ -174,13 +166,13 @@ return true # get flags from build config - var confFlags: cint + var confFlags: cint = cint(0) - if pcre.config(pcre.CONFIG_NEWLINE, addr confFlags) != 0: + if pcre2.config(pcre2.CONFIG_NEWLINE, addr confFlags) != 0: assert(false, "CONFIG_NEWLINE apparently got screwed up") case confFlags -@@ -332,7 +319,7 @@ func captures*(pattern: RegexMatch): Cap +@@ -338,7 +325,7 @@ func contains*(pattern: CaptureBounds, i: int): bool = let pattern = RegexMatch(pattern) @@ -189,7 +181,7 @@ func contains*(pattern: Captures, i: int): bool = i in CaptureBounds(pattern) -@@ -343,7 +330,7 @@ func `[]`*(pattern: CaptureBounds, i: in +@@ -349,7 +336,7 @@ raise newException(IndexDefect, "Group '" & $i & "' was not captured") let bounds = pattern.pcreMatchBounds[i + 1] @@ -198,7 +190,7 @@ func `[]`*(pattern: Captures, i: int): string = let pattern = RegexMatch(pattern) -@@ -431,8 +418,7 @@ proc `$`*(pattern: RegexMatch): string = +@@ -437,8 +424,7 @@ proc `==`*(a, b: Regex): bool = if not a.isNil and not b.isNil: return a.pattern == b.pattern and @@ -208,7 +200,7 @@ else: return system.`==`(a, b) -@@ -441,14 +427,14 @@ proc `==`*(a, b: RegexMatch): bool = +@@ -447,14 +433,14 @@ a.str == b.str const PcreOptions = { @@ -230,7 +222,7 @@ # Options that are supported inside regular expressions themselves const SkipOptions = [ -@@ -457,8 +443,8 @@ const SkipOptions = [ +@@ -463,8 +449,8 @@ "CR", "LF", "CRLF", "ANYCRLF", "ANY", "BSR_ANYCRLF", "BSR_UNICODE" ] @@ -241,7 +233,7 @@ var optionStart = 0 var equals = false -@@ -477,9 +463,9 @@ proc extractOptions(pattern: string): tu +@@ -483,9 +469,9 @@ if equals or name in SkipOptions: result.pattern.add pattern[optionStart .. i] elif PcreOptions.hasKey name: @@ -253,7 +245,7 @@ else: break optionStart = i+1 -@@ -496,45 +482,50 @@ proc extractOptions(pattern: string): tu +@@ -502,45 +488,50 @@ result.pattern.add pattern[optionStart .. pattern.high] proc re*(pattern: string): Regex = @@ -321,7 +313,7 @@ else: raise RegexInternalError(msg: "Unknown internal error: " & $execRet) -@@ -553,7 +544,7 @@ proc match*(str: string, pattern: Regex, +@@ -559,7 +550,7 @@ assert 0 in "abc".match(re"(\w)").get.captureBounds assert "abc".match(re"").get.captureBounds[-1] == 0 .. -1 assert "abc".match(re"abc").get.captureBounds[-1] == 0 .. 2 @@ -330,7 +322,7 @@ iterator findIter*(str: string, pattern: Regex, start = 0, endpos = int.high): RegexMatch = ## Works the same as `find(...)<#find,string,Regex,int>`_, but finds every -@@ -569,26 +560,26 @@ iterator findIter*(str: string, pattern: +@@ -575,26 +566,26 @@ ## - `proc findAll(...)` returns a `seq[string]` # see pcredemo for explanation => https://www.pcre.org/original/doc/html/pcredemo.html let matchesCrLf = pattern.matchesCrLf() @@ -340,7 +332,7 @@ + pcre2.UTF) > 0u32 # TODO: let strlen = if endpos == int.high: str.len else: endpos+1 var offset = start - var match: Option[RegexMatch] + var match: Option[RegexMatch] = default(Option[RegexMatch]) var neverMatched = true while true: @@ -363,10 +355,9 @@ break if matchesCrLf and offset < (str.len - 1) and -Index: nim-2.2.12/lib/impure/re.nim -=================================================================== ---- nim-2.2.12.orig/lib/impure/re.nim -+++ nim-2.2.12/lib/impure/re.nim +diff -ruN o/lib/impure/re.nim p/lib/impure/re.nim +--- nim-2.4.0.orig/lib/impure/re.nim 2026-10-29 10:32:07.759354699 +0100 ++++ nim-2.4.0.patched/lib/impure/re.nim 2026-10-29 10:32:07.816181019 +0100 @@ -1,7 +1,7 @@ # # @@ -376,7 +367,7 @@ # # See the file "copying.txt", included in this # distribution, for details about the copyright. -@@ -36,7 +36,9 @@ runnableExamples: +@@ -40,7 +40,9 @@ # can't match start of string since we're starting at 1 import @@ -387,7 +378,7 @@ when defined(nimPreviewSlimSystem): import std/syncio -@@ -57,7 +59,6 @@ type +@@ -61,7 +63,6 @@ RegexDesc = object h: ptr Pcre @@ -395,7 +386,7 @@ Regex* = ref RegexDesc ## a compiled regular expression -@@ -67,14 +68,10 @@ type +@@ -71,14 +72,10 @@ when defined(gcDestructors): when defined(nimAllowNonVarDestructor): proc `=destroy`(x: RegexDesc) = @@ -412,7 +403,7 @@ proc raiseInvalidRegex(msg: string) {.noinline, noreturn.} = var e: ref RegexError -@@ -82,21 +79,19 @@ proc raiseInvalidRegex(msg: string) {.no +@@ -86,21 +83,19 @@ e.msg = msg raise e @@ -440,7 +431,7 @@ proc re*(s: string, flags = {reStudy}): Regex = ## Constructor of regular expressions. -@@ -112,16 +107,18 @@ proc re*(s: string, flags = {reStudy}): +@@ -116,16 +111,18 @@ result = Regex() else: new(result, finalizeRegEx) @@ -469,7 +460,7 @@ proc rex*(s: string, flags = {reStudy, reExtended}): Regex = ## Constructor for extended regular expressions. -@@ -139,20 +136,23 @@ proc bufSubstr(b: cstring, sPos, ePos: i +@@ -143,20 +140,23 @@ result.setLen(sz) proc matchOrFind(buf: cstring, pattern: Regex, matches: var openArray[string], @@ -500,7 +491,7 @@ const MaxReBufSize* = high(cint) ## Maximum PCRE (API 1) buffer start/size equal to `high(cint)`, which even -@@ -169,15 +169,18 @@ proc findBounds*(buf: cstring, pattern: +@@ -173,15 +173,18 @@ ## Note: The memory for `matches` needs to be allocated before this function is ## called, otherwise it will just remain empty. var @@ -524,7 +515,7 @@ else: matches[i-1] = "" return (rawMatches[0].int, rawMatches[1].int - 1) -@@ -209,15 +212,18 @@ proc findBounds*(buf: cstring, pattern: +@@ -213,15 +216,18 @@ ## ## .. note:: The memory for `matches` needs to be allocated before this function is called, otherwise it will just remain empty. var @@ -547,7 +538,7 @@ else: matches[i-1] = (-1,0) return (rawMatches[0].int, rawMatches[1].int - 1) -@@ -240,16 +246,18 @@ proc findBounds*(s: string, pattern: Reg +@@ -244,16 +250,18 @@ min(start, MaxReBufSize), min(s.len, MaxReBufSize)) proc findBoundsImpl(buf: cstring, pattern: Regex, @@ -573,7 +564,7 @@ proc findBounds*(buf: cstring, pattern: Regex, start = 0, bufSize: int): tuple[first, last: int] = -@@ -257,10 +265,13 @@ proc findBounds*(buf: cstring, pattern: +@@ -261,10 +269,13 @@ ## where `buf` has length `bufSize` (not necessarily `'\0'` terminated). ## If it does not match, `(-1,0)` is returned. var @@ -591,7 +582,7 @@ if res < 0'i32: return (int(res), 0) return (int(rawMatches[0]), int(rawMatches[1]-1)) -@@ -275,14 +286,18 @@ proc findBounds*(s: string, pattern: Reg +@@ -279,14 +290,18 @@ result = findBounds(cstring(s), pattern, min(start, MaxReBufSize), min(s.len, MaxReBufSize)) @@ -615,7 +606,7 @@ proc matchLen*(s: string, pattern: Regex, matches: var openArray[string], start = 0): int {.inline.} = -@@ -291,7 +306,7 @@ proc matchLen*(s: string, pattern: Regex +@@ -295,7 +310,7 @@ ## of zero can happen. ## ## .. note:: The memory for `matches` needs to be allocated before this function is called, otherwise it will just remain empty. @@ -624,7 +615,7 @@ proc matchLen*(buf: cstring, pattern: Regex, matches: var openArray[string], start = 0, bufSize: int): int {.inline.} = -@@ -300,7 +315,7 @@ proc matchLen*(buf: cstring, pattern: Re +@@ -304,7 +319,7 @@ ## of zero can happen. ## ## .. note:: The memory for `matches` needs to be allocated before this function is called, otherwise it will just remain empty. @@ -633,7 +624,7 @@ proc matchLen*(s: string, pattern: Regex, start = 0): int {.inline.} = ## the same as `match`, but it returns the length of the match, -@@ -311,13 +326,13 @@ proc matchLen*(s: string, pattern: Regex +@@ -315,13 +330,13 @@ doAssert matchLen("abcdefg", re"cde", 2) == 3 doAssert matchLen("abcdefg", re"abcde") == 5 doAssert matchLen("abcdefg", re"cde") == -1 @@ -649,7 +640,7 @@ proc match*(s: string, pattern: Regex, start = 0): bool {.inline.} = ## returns `true` if `s[start..]` matches the `pattern`. -@@ -358,17 +373,20 @@ proc find*(buf: cstring, pattern: Regex, +@@ -362,17 +377,20 @@ ## ## .. note:: The memory for `matches` needs to be allocated before this function is called, otherwise it will just remain empty. var @@ -675,7 +666,7 @@ proc find*(s: string, pattern: Regex, matches: var openArray[string], start = 0): int {.inline.} = -@@ -384,12 +402,15 @@ proc find*(buf: cstring, pattern: Regex, +@@ -388,12 +406,15 @@ ## where `buf` has length `bufSize` (not necessarily `'\0'` terminated). ## If it does not match, `-1` is returned. var @@ -695,7 +686,7 @@ proc find*(s: string, pattern: Regex, start = 0): int {.inline.} = ## returns the starting position of `pattern` in `s`. If it does not -@@ -410,18 +431,21 @@ iterator findAll*(s: string, pattern: Re +@@ -414,18 +435,21 @@ ## Note that since this is an iterator you should not modify the string you ## are iterating over: bad things could happen. var @@ -723,7 +714,7 @@ iterator findAll*(buf: cstring, pattern: Regex, start = 0, bufSize: int): string = ## Yields all matching `substrings` of `s` that match `pattern`. -@@ -430,19 +454,22 @@ iterator findAll*(buf: cstring, pattern: +@@ -434,19 +458,22 @@ ## are iterating over: bad things could happen. var i = int32(start) @@ -751,7 +742,7 @@ proc findAll*(s: string, pattern: Regex, start = 0): seq[string] {.inline.} = ## returns all matching `substrings` of `s` that match `pattern`. -@@ -499,7 +526,7 @@ proc replace*(s: string, sub: Regex, by +@@ -503,7 +530,7 @@ doAssert "var1=key; var2=key2".replace(re"(\w+)=(\w+)", "?") == "?; ?" result = "" var prev = 0 @@ -760,7 +751,7 @@ while prev < s.len: var match = findBoundsImpl(s.cstring, sub, prev, s.len, flags) flags = 0 -@@ -508,7 +535,7 @@ proc replace*(s: string, sub: Regex, by +@@ -512,7 +539,7 @@ add(result, by) if match.first > match.last: # 0-len match @@ -769,10 +760,9 @@ prev = match.last + 1 add(result, substr(s, prev)) -Index: nim-2.2.12/lib/wrappers/pcre2.nim -=================================================================== ---- /dev/null -+++ nim-2.2.12/lib/wrappers/pcre2.nim +diff -ruN o/lib/wrappers/pcre2.nim p/lib/wrappers/pcre2.nim +--- nim-2.4.0.orig/lib/wrappers/pcre2.nim 1970-01-01 01:00:00.000000000 +0100 ++++ nim-2.4.0.patched/lib/wrappers/pcre2.nim 2026-10-29 10:32:07.821651239 +0100 @@ -0,0 +1,561 @@ +# +# @@ -1335,10 +1325,9 @@ +{.pop.} +{.pop.} + -Index: nim-2.2.12/tests/stdlib/nre/init.nim -=================================================================== ---- nim-2.2.12.orig/tests/stdlib/nre/init.nim -+++ nim-2.2.12/tests/stdlib/nre/init.nim +diff -ruN o/tests/stdlib/nre/init.nim p/tests/stdlib/nre/init.nim +--- nim-2.4.0.orig/tests/stdlib/nre/init.nim 2026-10-29 10:32:07.790576710 +0100 ++++ nim-2.4.0.patched/tests/stdlib/nre/init.nim 2026-10-29 10:32:07.846254249 +0100 @@ -1,6 +1,8 @@ import unittest include nre @@ -1348,7 +1337,7 @@ block: # Test NRE initialization block: # correct initialization check(re("[0-9]+") != nil) -@@ -8,26 +10,26 @@ block: # Test NRE initialization +@@ -8,26 +10,26 @@ block: # options check(extractOptions("(*NEVER_UTF)") == ++++++ nim-2.2.12.tar.xz -> nim-2.4.0.tar.xz ++++++ /work/SRC/openSUSE:Factory/nim/nim-2.2.12.tar.xz /work/SRC/openSUSE:Factory/.nim.new.1255/nim-2.4.0.tar.xz differ: char 25, line 1 ++++++ nim-fix-tests-i586.patch ++++++ --- /var/tmp/diff_new_pack.IP84vC/_old 2026-11-02 16:40:52.113494177 +0100 +++ /var/tmp/diff_new_pack.IP84vC/_new 2026-11-02 16:40:52.116494302 +0100 @@ -1,8 +1,6 @@ -Index: nim-2.2.12/tests/misc/trunner.nim -=================================================================== ---- nim-2.2.12.orig/tests/misc/trunner.nim -+++ nim-2.2.12/tests/misc/trunner.nim -@@ -284,14 +284,14 @@ sub/mmain.idx""", context +--- nim-2.4.0.orig/tests/misc/trunner.nim 2026-10-28 06:14:50.000000000 +0100 ++++ nim-2.4.0.patched/tests/misc/trunner.nim 2026-10-29 09:02:29.245552142 +0100 +@@ -299,14 +299,14 @@ sub/mmain.idx""", context let cmd = fmt"{nim} r --hints:off --nimcache:{nimcache} --hintAsError:XDeclaredButNotUsed {file}" check execCmdEx(cmd) == ("12\n", 0) ++++++ nim-nim-gdb_fix_interpreter.patch ++++++ --- /var/tmp/diff_new_pack.IP84vC/_old 2026-11-02 16:40:52.127494763 +0100 +++ /var/tmp/diff_new_pack.IP84vC/_new 2026-11-02 16:40:52.132494973 +0100 @@ -1,7 +1,5 @@ -Index: nim-2.2.12/bin/nim-gdb -=================================================================== ---- nim-2.2.12.orig/bin/nim-gdb -+++ nim-2.2.12/bin/nim-gdb +--- nim-2.4.0.orig/bin/nim-gdb 2026-10-28 06:14:50.000000000 +0100 ++++ nim-2.4.0.patched/bin/nim-gdb 2026-10-29 09:02:39.862603494 +0100 @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/bash
