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-04-08 17:15:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nim (Old)
 and      /work/SRC/openSUSE:Factory/.nim.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nim"

Wed Apr  8 17:15:06 2026 rev:34 rq:1345031 version:2.2.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/nim/nim.changes  2025-12-11 18:45:22.467640281 
+0100
+++ /work/SRC/openSUSE:Factory/.nim.new.21863/nim.changes       2026-04-08 
17:15:23.055066984 +0200
@@ -1,0 +2,66 @@
+Tue Apr  7 13:45:28 UTC 2026 - Andrea Manzini <[email protected]>
+
+- Update to version 2.2.8
+  * We think that for everyday users the most impactful bugfix is that for 
+    heavily multi-threaded code the default allocator is now much more stable.
+    The days where the workaround -d:useMalloc is required might be beyond us.
+    Please give us feedback!
+  * Fixed "Unexpected ambiguous call with fields over object with default 
+    fields"
+  * Fixed "C++ styled name mangling must be opt-in via a different switch than
+    –debuginfo"
+  * Fixed "Regression in 2.2.6: SIGBUS with iterator over const Table lookup
+     - premature temporary destruction” (#25251)
+  * Fixed "Unable to build Nim 2.2.6 tools from source" (#25265)
+  * Fixed "std/unicode.strip trailing fails on some characters" (#19846)
+  * Fixed "Regression: .global initialization inside method hoisted to 
+    preInitProc without temporary variable declarations (invalid C codegen)"
+  * Fixed "passing tuple with items defined as concept (UserDefinedClass) 
+    causes compiler crash"
+  * Fixed "setLen slow when shrinking seq due to zero-filling of released area"
+  * Fixed "setLenUninit missing for --mm:refc" (#25007)
+  * Fixed "Term rewriting stops processing on long files" (#25304)
+  * Fixed "SIGSEGV regression from Nim v2.2.4 to v2.2.6/devel with closure 
+    iteratures" (#25261)
+  * Fixed "Combination of generic destructor and closure fails in certain 
cases"
+  * Fixed "Channel incorrectly takes a sink argument, when in fact it performs
+    a deep copy internally" (#25324)
+  * Fixed "Dangling pointers in stack traces with -d:nimStackTraceOverride" 
+  * Fixed "Closure iterator swallows finally body when it contains try..except.
+    Regression in 2.2.6/devel" (#25330)
+  * Fixed "Invalid m_type access in hooks for distinct generic types under 
+    ARC/ORC/HOOKS/ATOMICARC" (#25341)
+  * Fixed "Wrong type for second parameter of procedures "inc", "dec", "succ" 
+    and "pred"" (#25329)
+  * Fixed "Regression from v2.2.6 to version-2-2/devel with importing 
+    let u {.global.} = default(ref int)" (#25369)
+  * Fixed "[Concepts] Recursive concepts cause a compiler segfault when 
+    testing with is" (#17630)
+  * Fixed "httpclient generates bad HTTPS requests through HTTP proxy" (#25319)
+  * Fixed "Invalid pred in when swallowed" (#25254)
+  * Fixed "Nim comment text + embedsrc breaks C codegen" (#25387)
+  * Fixed "Hooks do not work for specific instances of static generic objects"
+  * Fixed "shl causes undefined behaviour" (#19983)
+  * Fixed "Error: fatal error: invalid kind for lastOrd(tyNone) with 
+    type M = set" (#25419)
+  * Fixed "Naked raised causes wrong exception effect" (#25400)
+  * Fixed "unhandled exception: field ‘intVal’ is not accessible for type
+    'TNode' using 'kind = nkNilLit' [FieldDefect] with static: discard 
+    castpointer" (#25446)
+  * Fixed "Long integer literal truncated without warning" (#25074)
+  * Fixed "add --styleCheck:warn" (#19831)
+  * Fixed "SIGSEGV when trying to compile generic + void-type + typeclass
+    combo" (#25441)
+  * Fixed "Crash when compiling invalid generic instantiation" (#25231)
+  * Fixed "SIGSEGV in refc with distinct types and assign to heap-allocated
+    object" (#25459)
+  * Fixed "Warn on implicit range downsizing" (#24706)
+  * Fixed "ICE leaking temporary 3 slotTempInt" (#25482)
+  * Fixed "Computed types violate isa transitivity" (#25340)
+  * Fixed "Strings can be compared against nil" (#25488)
+  * Fixed "Crash on enum ranges as default parameters in generic procs"
+  * Fixed "align not respected in refc, leading to SIGSEGV" (#25457)
+  * Fixed "Invalid C code generation with seq[array[...]]" (#25475)
+
+
+-------------------------------------------------------------------

Old:
----
  atlas-0.9.5.tar.gz
  nim-2.2.6.tar.xz
  sat-d67107e94f92c4cf6f0791542f473b21329bbd97.tar.gz

New:
----
  atlas-0.10.1.tar.gz
  nim-2.2.8.tar.xz
  sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ nim.spec ++++++
--- /var/tmp/diff_new_pack.9wQouu/_old  2026-04-08 17:15:24.519127177 +0200
+++ /var/tmp/diff_new_pack.9wQouu/_new  2026-04-08 17:15:24.523127341 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package nim
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,11 +16,11 @@
 #
 
 
-%define _atlas_version 0.9.5
-%define _sat_commit d67107e94f92c4cf6f0791542f473b21329bbd97
+%define _atlas_version 0.10.1
+%define _sat_commit e63eaea8baf00bed8bcd5a29ffd8823abb265b39
 
 Name:           nim
-Version:        2.2.6
+Version:        2.2.8
 Release:        0
 Summary:        A statically typed compiled systems programming language
 License:        MIT
@@ -170,6 +170,7 @@
   tests/stdlib/concurrency/tatomics.nim
   # exits with 1 for some reason
   tests/stdlib/tmath.nim
+  tests/generics/t22305.nim
 EOT
 
 %ifarch i586

++++++ atlas-0.9.5.tar.gz -> atlas-0.10.1.tar.gz ++++++
++++ 5792 lines of diff (skipped)

++++++ nim-2.2.2-pcre2.patch ++++++
--- /var/tmp/diff_new_pack.9wQouu/_old  2026-04-08 17:15:24.815139347 +0200
+++ /var/tmp/diff_new_pack.9wQouu/_new  2026-04-08 17:15:24.819139512 +0200
@@ -11,10 +11,10 @@
  4 files changed, 893 insertions(+), 175 deletions(-)
  create mode 100644 lib/wrappers/pcre2.nim
 
-Index: nim-2.2.6/lib/impure/nre.nim
+Index: nim-2.2.8/lib/impure/nre.nim
 ===================================================================
---- nim-2.2.6.orig/lib/impure/nre.nim
-+++ nim-2.2.6/lib/impure/nre.nim
+--- nim-2.2.8.orig/lib/impure/nre.nim
++++ nim-2.2.8/lib/impure/nre.nim
 @@ -1,6 +1,6 @@
  #
  #            Nim's Runtime Library
@@ -363,10 +363,10 @@
          break
  
        if matchesCrLf and offset < (str.len - 1) and
-Index: nim-2.2.6/lib/impure/re.nim
+Index: nim-2.2.8/lib/impure/re.nim
 ===================================================================
---- nim-2.2.6.orig/lib/impure/re.nim
-+++ nim-2.2.6/lib/impure/re.nim
+--- nim-2.2.8.orig/lib/impure/re.nim
++++ nim-2.2.8/lib/impure/re.nim
 @@ -1,7 +1,7 @@
  #
  #
@@ -769,10 +769,10 @@
      prev = match.last + 1
    add(result, substr(s, prev))
  
-Index: nim-2.2.6/lib/wrappers/pcre2.nim
+Index: nim-2.2.8/lib/wrappers/pcre2.nim
 ===================================================================
 --- /dev/null
-+++ nim-2.2.6/lib/wrappers/pcre2.nim
++++ nim-2.2.8/lib/wrappers/pcre2.nim
 @@ -0,0 +1,561 @@
 +#
 +#
@@ -1335,10 +1335,10 @@
 +{.pop.}
 +{.pop.}
 +
-Index: nim-2.2.6/tests/stdlib/nre/init.nim
+Index: nim-2.2.8/tests/stdlib/nre/init.nim
 ===================================================================
---- nim-2.2.6.orig/tests/stdlib/nre/init.nim
-+++ nim-2.2.6/tests/stdlib/nre/init.nim
+--- nim-2.2.8.orig/tests/stdlib/nre/init.nim
++++ nim-2.2.8/tests/stdlib/nre/init.nim
 @@ -1,6 +1,8 @@
  import unittest
  include nre

++++++ nim-2.2.6.tar.xz -> nim-2.2.8.tar.xz ++++++
/work/SRC/openSUSE:Factory/nim/nim-2.2.6.tar.xz 
/work/SRC/openSUSE:Factory/.nim.new.21863/nim-2.2.8.tar.xz differ: char 25, 
line 1

++++++ nim-nim-gdb_fix_interpreter.patch ++++++
--- /var/tmp/diff_new_pack.9wQouu/_old  2026-04-08 17:15:24.855140992 +0200
+++ /var/tmp/diff_new_pack.9wQouu/_new  2026-04-08 17:15:24.867141485 +0200
@@ -1,7 +1,7 @@
-Index: nim-2.2.6/bin/nim-gdb
+Index: nim-2.2.8/bin/nim-gdb
 ===================================================================
---- nim-2.2.6.orig/bin/nim-gdb
-+++ nim-2.2.6/bin/nim-gdb
+--- nim-2.2.8.orig/bin/nim-gdb
++++ nim-2.2.8/bin/nim-gdb
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env bash
 +#!/usr/bin/bash

++++++ sat-d67107e94f92c4cf6f0791542f473b21329bbd97.tar.gz -> 
sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/.github/workflows/ci.yml 
new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/.github/workflows/ci.yml
--- old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/.github/workflows/ci.yml   
2025-11-25 11:27:42.000000000 +0100
+++ new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/.github/workflows/ci.yml   
2026-02-09 10:02:19.000000000 +0100
@@ -62,7 +62,7 @@
       - name: Restore MinGW-W64 (Windows) from cache
         if: runner.os == 'Windows'
         id: windows-mingw-cache
-        uses: actions/cache@v4
+        uses: actions/cache@v5
         with:
           path: external/mingw-${{ matrix.target.cpu }}
           key: 'mingw-${{ matrix.target.cpu }}'
@@ -70,7 +70,7 @@
       - name: Restore Nim DLLs dependencies (Windows) from cache
         if: runner.os == 'Windows'
         id: windows-dlls-cache
-        uses: actions/cache@v4
+        uses: actions/cache@v5
         with:
           path: external/dlls-${{ matrix.target.cpu }}
           key: 'dlls-${{ matrix.target.cpu }}'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/.gitignore 
new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/.gitignore
--- old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/.gitignore 1970-01-01 
01:00:00.000000000 +0100
+++ new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/.gitignore 2026-02-09 
10:02:19.000000000 +0100
@@ -0,0 +1,5 @@
+*
+!*/
+!*.*
+nim.cfg
+.nimcache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/config.nims 
new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/config.nims
--- old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/config.nims        
1970-01-01 01:00:00.000000000 +0100
+++ new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/config.nims        
2026-02-09 10:02:19.000000000 +0100
@@ -0,0 +1,10 @@
+--nimcache:".nimcache/"
+
+import std/[algorithm, sequtils, strutils, os]
+
+task test, "run unit test":
+  for testFile in listFiles("tests/"):
+    if testFile.endsWith(".nim") and testFile.splitPath.tail.startsWith("t"):
+      echo "TEST: ", testFile
+      exec("nim c -r " & testFile)
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/sat.nimble 
new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/sat.nimble
--- old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/sat.nimble 2025-11-25 
11:27:42.000000000 +0100
+++ new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/sat.nimble 2026-02-09 
10:02:19.000000000 +0100
@@ -1,6 +1,6 @@
 # Package
 
-version       = "0.1.0"
+version       = "0.1.1"
 author        = "Araq"
 description   = "A SAT solver written in Nim."
 license       = "MIT"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/src/sat/sat.nim 
new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/src/sat/sat.nim
--- old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/src/sat/sat.nim    
2025-11-25 11:27:42.000000000 +0100
+++ new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/src/sat/sat.nim    
2026-02-09 10:02:19.000000000 +0100
@@ -429,13 +429,13 @@
     # We have a variable to guess.
     # Construct the two guesses.
     # Return whether either one of them works.
-    let prevValue = s.getVar(v)
+    let branchBase = s
     s.setVar(v, SetToFalse)
 
     var falseGuess: Formular
-    let res = simplify(falseGuess, f, FormPos 0, s)
+    let falseRes = simplify(falseGuess, f, FormPos 0, s)
 
-    if res == TrueForm:
+    if falseRes == TrueForm:
       result = true
     else:
       result = satisfiableIter(falseGuess, s, iters)
@@ -443,20 +443,21 @@
         return false
 
       if not result:
-        s.setVar(v, SetToTrue)
+        var trueState = branchBase
+        trueState.setVar(v, SetToTrue)
 
         var trueGuess: Formular
-        let res = simplify(trueGuess, f, FormPos 0, s)
+        let trueRes = simplify(trueGuess, f, FormPos 0, trueState)
 
-        if res == TrueForm:
+        if trueRes == TrueForm:
           result = true
+          s = trueState
         else:
-          result = satisfiableIter(trueGuess, s, iters)
+          result = satisfiableIter(trueGuess, trueState, iters)
           if iters == 0:
             return
-          #if not result:
-          # Revert the assignment after trying the second option
-          #  s.setVar(v, prevValue)
+          if result:
+            s = trueState
     if result:
       sout = s
 {.push stackTrace:on.}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/tests/tsat_state.nim 
new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/tests/tsat_state.nim
--- old/sat-d67107e94f92c4cf6f0791542f473b21329bbd97/tests/tsat_state.nim       
1970-01-01 01:00:00.000000000 +0100
+++ new/sat-e63eaea8baf00bed8bcd5a29ffd8823abb265b39/tests/tsat_state.nim       
2026-02-09 10:02:19.000000000 +0100
@@ -0,0 +1,44 @@
+import std/unittest
+import sat/[sat, satvars]
+
+const StateLeakFormulaText = "(&(1>=v0) (1==v1) (|(~v1) v0))"
+
+proc buildStateLeakFormula(): Formular =
+  ## This formula is satisfiable with v0=true, v1=true.
+  ## It previously triggered a false UNSAT in the fast solver due to
+  ## branch-state leakage between false/true guesses.
+
+  var b: Builder
+  b.openOpr(AndForm)
+
+  b.openOpr(ZeroOrOneOfForm)
+  b.add(VarId(0))
+  b.closeOpr()
+
+  b.openOpr(ExactlyOneOfForm)
+  b.add(VarId(1))
+  b.closeOpr()
+
+  b.openOpr(OrForm)
+  b.addNegated(VarId(1))
+  b.add(VarId(0))
+  b.closeOpr()
+
+  b.closeOpr()
+  result = toForm(b)
+
+suite "sat solver state isolation":
+  test "fast solver keeps guess branches isolated":
+    let f = buildStateLeakFormula()
+    check $f == StateLeakFormulaText
+
+    var fast = createSolution(maxVariable(f))
+    let fastSat = satisfiable(f, fast)
+
+    var slow = createSolution(maxVariable(f))
+    let slowSat = satisfiableSlow(f, slow)
+
+    check slowSat
+    check fastSat
+    check slowSat == fastSat
+    check eval(f, fast)

Reply via email to