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)
