chore: update nim 2.2.8 (#1424)

Signed-off-by: Arnaud <arno.deville@gmail.com>
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
This commit is contained in:
Arnaud 2026-04-22 17:57:14 +04:00 committed by GitHub
parent 4c9ecd0766
commit 2dd97631ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 65 additions and 113 deletions

View File

@ -9,7 +9,7 @@ on:
env:
cache_nonce: 0 # Allows for easily busting actions/cache caches
nim_version: v2.2.4
nim_version: v2.2.8
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}

View File

@ -15,7 +15,7 @@
#
# If NIM_COMMIT is set to "nimbusbuild", this will use the
# version pinned by nimbus-build-system.
PINNED_NIM_VERSION := v2.2.4
PINNED_NIM_VERSION := v2.2.8
ifeq ($(NIM_COMMIT),)
NIM_COMMIT := $(PINNED_NIM_VERSION)

View File

@ -115,7 +115,8 @@ proc createStorage(
except ValueError as err:
return err("Failed to create Storage: invalid value for log level: " & err.msg)
conf.setupMetrics()
if err =? conf.setupMetrics().errorOption:
return err("Failed to start metrics server: " & err.msg)
if not (checkAndCreateDataDir((conf.dataDir).string)):
# We are unable to access/create data folder or data folder's

View File

@ -65,7 +65,9 @@ when isMainModule:
echo "Invalid value for --log-level. " & err.msg
quit QuitFailure
config.setupMetrics()
if err =? config.setupMetrics().errorOption:
fatal "Failed to start metrics server", err = err.msg
quit QuitFailure
if not (checkAndCreateDataDir((config.dataDir).string)):
# We are unable to access/create data folder or data folder's

View File

@ -617,14 +617,17 @@ proc setupLogging*(conf: StorageConf): Option[IoHandle] =
return ioHandle
proc setupMetrics*(config: StorageConf) =
proc setupMetrics*(config: StorageConf): ?!void =
if config.metricsEnabled:
let metricsAddress = config.metricsAddress
notice "Starting metrics HTTP server",
url = "http://" & $metricsAddress & ":" & $config.metricsPort & "/metrics"
let server = MetricsHttpServerRef.new($metricsAddress, config.metricsPort).valueOr:
return failure($error)
try:
startMetricsHttpServer($metricsAddress, config.metricsPort)
except CatchableError as exc:
raiseAssert exc.msg
except Exception as exc:
raiseAssert exc.msg # TODO fix metrics
waitFor server.start()
except MetricsError as exc:
return failure(exc.msg)
except CancelledError:
return failure("Metrics server start was cancelled")
success()

View File

@ -119,7 +119,7 @@ proc retrieveCid(
while not stream.atEof:
var
buff = newSeqUninitialized[byte](DefaultBlockSize.int)
buff = newSeqUninit[byte](DefaultBlockSize.int)
len = await stream.readOnce(addr buff[0], buff.len)
buff.setLen(len)

View File

@ -7,8 +7,6 @@
## This file may not be copied, modified, or distributed except according to
## those terms.
import std/sugar
import pkg/presto
import pkg/chronos
import pkg/libp2p

View File

@ -1,5 +1,4 @@
import pkg/questionable
import pkg/stew/byteutils
import pkg/libp2p
import pkg/codexdht/discv5/node as dn
import pkg/codexdht/discv5/routing_table as rt

View File

@ -338,7 +338,8 @@ method listBlocks*(
if queryIter.finished:
iter.finish
else:
if pair =? (await queryIter.next()) and cid =? pair.key:
let res = await queryIter.next()
if pair =? res and cid =? pair.key:
doAssert pair.data.len == 0
trace "Retrieved record from repo", cid
return Cid.init(cid.value).mapFailure

View File

@ -10,7 +10,6 @@
{.push raises: [].}
import std/enumerate
import std/parseutils
import std/options
@ -41,24 +40,6 @@ func roundUp*[T](a, b: T): T =
proc orElse*[A](a, b: Option[A]): Option[A] =
if (a.isSome()): a else: b
template findIt*(s, pred: untyped): untyped =
## Returns the index of the first object matching a predicate, or -1 if no
## object matches it.
runnableExamples:
type MyType = object
att: int
var s = @[MyType(att: 1), MyType(att: 2), MyType(att: 3)]
doAssert s.findIt(it.att == 2) == 1
doAssert s.findIt(it.att == 4) == -1
var index = -1
for i, it {.inject.} in enumerate(items(s)):
if pred:
index = i
break
index
when not declared(parseDuration): # Odd code formatting to minimize diff v. mainLine
const Whitespace = {' ', '\t', '\v', '\r', '\l', '\f'}

View File

@ -1,4 +1,3 @@
import std/options
import std/typetraits
from pkg/libp2p import
Cid, PeerId, SignedPeerRecord, MultiAddress, AddressInfo, init, `$`

View File

@ -15,8 +15,7 @@ proc `as`*[T](value: T, U: type): ?U =
# In that case, we do not need to do anything, just return the value as it is.
when value is Option[U]:
return value
when value is U:
elif value is U:
return some value
elif value is ref object:
if value of U:

View File

@ -1,31 +1,13 @@
import pkg/storage/streams/storestream
import pkg/unittest2
# From lip2p/tests/helpers
const trackerNames = [StoreStreamTrackerName]
iterator testTrackers*(extras: openArray[string] = []): TrackerBase =
for name in trackerNames:
let t = getTracker(name)
if not isNil(t):
yield t
for name in extras:
let t = getTracker(name)
if not isNil(t):
yield t
proc checkTracker*(name: string) =
var tracker = getTracker(name)
if tracker.isLeaked():
checkpoint tracker.dump()
fail()
proc checkTrackers*() =
for tracker in testTrackers():
if tracker.isLeaked():
checkpoint tracker.dump()
for name in trackerNames:
let counter = getTrackerCounter(name)
if counter.opened != counter.closed:
# show how many streams were opened vs closed to help diagnose the leak
checkpoint name & ": opened=" & $counter.opened & ", closed=" & $counter.closed
fail()
try:
GC_fullCollect()
except:
discard
GC_fullCollect()

View File

@ -106,7 +106,7 @@ method restart*(node: StorageProcess) {.async.} =
await node.waitUntilStarted()
trace "storage process restarted"
method stop*(node: StorageProcess) {.async: (raises: []).} =
method stop*(node: StorageProcess, expectedExitCode: int = 0) {.async: (raises: []).} =
logScope:
nodeName = node.name

View File

@ -43,7 +43,7 @@ proc lenPrefix*(msg: openArray[byte]): seq[byte] =
##
let vbytes = PB.toBytes(msg.len().uint64)
var buf = newSeqUninitialized[byte](msg.len() + vbytes.len)
var buf = newSeqUninit[byte](msg.len() + vbytes.len)
buf[0 ..< vbytes.len] = vbytes.toOpenArray()
buf[vbytes.len ..< buf.len] = msg

View File

@ -20,7 +20,7 @@ proc new*(
method getBlock*(
self: CountingStore, address: BlockAddress
): Future[?!Block] {.async.} =
): Future[?!Block] {.async: (raises: [CancelledError]).} =
self.lookups.mgetOrPut(address.cid, 0).inc
await procCall getBlock(NetworkStore(self), address)

View File

@ -1,5 +1,4 @@
import std/os
import std/options
import std/math
import std/importutils

View File

@ -12,23 +12,31 @@ asyncchecksuite "AsyncStreamWrapper":
let data = "0123456789012345678901234567890123456789"
let address = initTAddress("127.0.0.1:46001")
proc serveReadingClient(server: StreamServer, transp: StreamTransport) {.async.} =
var wstream = newAsyncStreamWriter(transp)
await wstream.write(data)
await wstream.finish()
await wstream.closeWait()
await transp.closeWait()
server.stop()
server.close()
proc serveWritingClient(buf: pointer, bufLen: int): auto =
return proc(server: StreamServer, transp: StreamTransport) {.async.} =
var rstream = newAsyncStreamReader(transp)
discard await rstream.readOnce(buf, bufLen)
await rstream.closeWait()
proc serveReadingClient(
server: StreamServer, transp: StreamTransport
) {.async: (raises: []).} =
try:
var wstream = newAsyncStreamWriter(transp)
await wstream.write(data)
await wstream.finish()
await wstream.closeWait()
await transp.closeWait()
server.stop()
server.close()
except CatchableError as e:
raiseAssert e.msg
proc serveWritingClient(buf: pointer, bufLen: int): auto =
return proc(server: StreamServer, transp: StreamTransport) {.async: (raises: []).} =
try:
var rstream = newAsyncStreamReader(transp)
discard await rstream.readOnce(buf, bufLen)
await rstream.closeWait()
await transp.closeWait()
server.stop()
server.close()
except CatchableError as e:
raiseAssert e.msg
test "Read all data":
var server = createStreamServer(address, serveReadingClient, {ReuseAddr})

View File

@ -1,7 +1,6 @@
import pkg/unittest2
import storage/clock
import ./helpers
suite "Clock":
proc testConversion(seconds: SecondsSince1970) =

View File

@ -2,7 +2,6 @@ import std/times
import pkg/unittest2
import pkg/storage/systemclock
import ./helpers
suite "SystemClock":
test "Should get now":

View File

@ -2,24 +2,6 @@ import pkg/unittest2
import pkg/storage/utils
suite "findIt":
setup:
type AnObject = object
attribute1*: int
var objList = @[
AnObject(attribute1: 1),
AnObject(attribute1: 3),
AnObject(attribute1: 5),
AnObject(attribute1: 3),
]
test "should retur index of first object matching predicate":
assert objList.findIt(it.attribute1 == 3) == 1
test "should return -1 when no object matches predicate":
assert objList.findIt(it.attribute1 == 15) == -1
suite "parseDuration":
test "should parse durations":
var res: Duration # caller must still know if 'b' refers to bytes|bits

2
vendor/asynctest vendored

@ -1 +1 @@
Subproject commit 73c08f77afc5cc2a5628d00f915b97bf72f70c9b
Subproject commit 572c897a4e1177e905105a3bafe8c5573d9bae83

@ -1 +1 @@
Subproject commit 99884b5971759a0da437db3d2e834b92a058527d
Subproject commit 67dbc3fe137144f07d6088c44906bf29fc317fae

2
vendor/nim-bearssl vendored

@ -1 +1 @@
Subproject commit f08d72203f9e110c099c6f393e1c0640fcbe176f
Subproject commit 22c6a76ce015bc07e011562bdcfc51d9446c1e82

2
vendor/nim-chronos vendored

@ -1 +1 @@
Subproject commit 0646c444fce7c7ed08ef6f2c9a7abfd172ffe655
Subproject commit 785fcf4ddec1101a3df1f044d6331504d7ab95c6

@ -1 +1 @@
Subproject commit c53852d9e24205b6363bba517fa8ee7bde823691
Subproject commit f142cb2e8bd812dd002a6493b6082827bb248592

@ -1 +1 @@
Subproject commit 99bc2ba16bc2d44f9a97e706304f64744d913d7f
Subproject commit ebc972d99769633b9ef3ee766778ee5aa1996499

2
vendor/nim-metrics vendored

@ -1 +1 @@
Subproject commit 9b9afee96357ad82dabf4563cf292f89b50423df
Subproject commit a1296caf3ebb5f30f51a5feae7749a30df2824c2

2
vendor/nim-quic vendored

@ -1 +1 @@
Subproject commit 525842aeca6111fd5035568d0f59aa2b338cc29d
Subproject commit 6d8678a159bfb902f9725f0081d542134cd93916

@ -1 +1 @@
Subproject commit f808ed5e7a7bfc42204ec7830f14b7a42b63c284
Subproject commit d8f1288b7c72f00be5fc2c5ea72bf5cae1eafb15

@ -1 +1 @@
Subproject commit 6797c31836bff377bf50f1ac7bf8122449bf99ba
Subproject commit 8240e8e2819dfce1b67fa2733135d01b5cc80ae0

@ -1 +1 @@
Subproject commit e4d37dc1652d5c63afb89907efb5a5e812261797
Subproject commit 6ce5e5e2301ccbc04b09d27ff78741ff4d352b4d

@ -1 +1 @@
Subproject commit 845b6af28b9f68f02d320e03ad18eccccea7ddb9
Subproject commit 26f2ef3ae0ec72a2a75bfe557e02e88f6a31c189

2
vendor/nimcrypto vendored

@ -1 +1 @@
Subproject commit dc07e3058c6904eef965394493b6ea99aa2adefc
Subproject commit b3dbc9c4d08e58c5b7bfad6dc7ef2ee52f2f4c08

2
vendor/questionable vendored

@ -1 +1 @@
Subproject commit 47692e0d923ada8f7f731275b2a87614c0150987
Subproject commit 82d90b67bcfb7f2e918b61dace2ff1a4ced60935