Nim version 2.2.8 released
23 February 2026 The Nim Team
The Nim Team is happy to announce version 2.2.8, the fourth patch release for our stable release, Nim 2.2.
It comes four months after the 2.2.6 release and it contains 89 commits, bringing bugfixes and improvements.
If you’re still on Nim 1.6, take a look at the version 2.0 release article to see all the features you’re missing. If you’ve been using Nim 2.0, the version 2.2 release article shows the improvements available in Nim 2.2.
The Nim 2.2.8 changelog is available here.
Highlights
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!
Installing Nim 2.2.8
Check out if the package manager of your OS already ships version 2.2.8 or install it as described here.
If you have installed a previous version of Nim using choosenim,
getting Nim 2.2.8 is as easy as:
$ choosenim update self
$ choosenim update stable
NOTE: We recommend you to install and use the latest version of choosenim, v.0.8.16, available in our choosenim repo.
Alternatively, you can download Nim 2.2.8 from our nightlies builds.
Bugfixes
- Fixed “Unexpected ambiguous call with
fieldsover object with default fields” (#25252) - Fixed “C++ styled name mangling must be opt-in via a different switch than –debuginfo” (#25263)
- 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.striptrailing fails on some characters” (#19846) - Fixed “Regression: .global initialization inside method hoisted to preInitProc without temporary variable declarations (invalid C codegen)” (#25284)
- Fixed “passing tuple with
itemsdefined as concept (UserDefinedClass) causes compiler crash” (#25227) - Fixed “
setLenslow when shrinking seq due to zero-filling of released area” (#19728) - Fixed “
setLenUninitmissing for--mm:refc” (#25007) - Fixed “Term rewriting stops processing on long files” (#25304)
- Fixed “
SIGSEGVregression 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” (#22305)
- 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” (#25306) - Fixed “Closure iterator swallows finally body when it contains try..except. Regression in 2.2.6/devel” (#25330)
- Fixed “Invalid
m_typeaccess 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/develwith importinglet 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
predinwhenswallowed” (#25254) - Fixed “Nim comment text + embedsrc breaks C codegen” (#25387)
- Fixed “Hooks do not work for specific instances of static generic objects” (#23394)
- Fixed “
shlcauses undefined behaviour” (#19983) - Fixed “
Error: fatal error: invalid kind for lastOrd(tyNone)withtype M = set” (#25419) - Fixed “Naked
raisedcauses wrong exception effect” (#25400) - Fixed “unhandled exception: field ‘intVal’ is not accessible for type ‘TNode’ using ‘kind = nkNilLit’ [FieldDefect]
withstatic: 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
distincttypes 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” (#25494)
- Fixed “
alignnot respected in refc, leading to SIGSEGV” (#25457) - Fixed “Invalid C code generation with
seq[array[...]]” (#25475)