Index: lang/nim/Makefile
===================================================================
RCS file: /cvs/ports/lang/nim/Makefile,v
retrieving revision 1.29
diff -u -p -r1.29 Makefile
--- lang/nim/Makefile	21 Oct 2026 01:35:14 -0000	1.29
+++ lang/nim/Makefile	30 Oct 2026 05:43:34 -0000
@@ -2,7 +2,7 @@ ONLY_FOR_ARCHS =	amd64 arm64 i386
 
 COMMENT =		statically typed systems programming language
 
-DISTNAME =		nim-2.2.12
+DISTNAME =		nim-2.4.0
 EXTRACT_SUFX =		.tar.xz
 
 CATEGORIES =		lang
@@ -12,11 +12,7 @@ SITES =			${HOMEPAGE}download/
 
 MAINTAINER =		Alfred Morgan <alfred@54.org>
 
-NIMBLE_CHRONOS_V =	536169b4ab6b7772f57993284331b7de716b6e99
-
 DIST_TUPLE =		github nim-lang atlas 0.16.3 .
-DIST_TUPLE +=		github nim-lang nimble v0.26.0 .
-DIST_TUPLE +=		github status-im nim-chronos ${NIMBLE_CHRONOS_V} .
 
 # MIT, BSD, Apache 2.0
 PERMIT_PACKAGE =	Yes
@@ -39,13 +35,6 @@ TEST_DEPENDS =		archivers/7zip,-main \
 SUBST_VARS +=		CFLAGS
 
 post-extract:
-	# Reuse bundled dependencies except for Nimble's updated Chronos revision.
-	rm -R ${WRKDIR}/nimble-*/vendor
-	mv ${WRKDIST}/dist/nimble/vendor ${WRKDIR}/nimble-*/
-	rm -R ${WRKDIST}/dist/nimble
-	mv ${WRKDIR}/nimble-* ${WRKDIST}/dist/nimble
-	rm -R ${WRKDIST}/dist/nimble/vendor/chronos
-	mv ${WRKDIR}/nim-chronos-* ${WRKDIST}/dist/nimble/vendor/chronos
 	mv ${WRKDIR}/atlas-* ${WRKDIST}/dist/atlas
 	mkdir -p ${WRKDIST}/dist/atlas/dist
 	cp -R ${WRKDIST}/dist/nimble/vendor/sat ${WRKDIST}/dist/atlas/dist/sat
@@ -77,6 +66,14 @@ do-build:
 		--listCmd --putenv:"PATH=${PATH}"
 .endfor
 
+.for t in nifler nifmake
+	cd ${WRKSRC} && bin/nim c -o:bin/$t -d:release \
+		--parallelBuild:${MAKE_JOBS} --lib:lib --noNimblePath \
+		--skipUserCfg --skipParentCfg --hints:off \
+		--nimcache:"${WRKSRC}/nimcache-port" \
+		dist/nimony/src/$t/$t.nim
+.endfor
+
 	cd ${WRKSRC} && ./koch atlas -d:release --parallelBuild:${MAKE_JOBS} \
 		--lib:lib --skipUserCfg --skipParentCfg --hints:off \
 		--nimcache:"${WRKSRC}/nimcache-port" --listFullPaths \
@@ -87,7 +84,8 @@ do-build:
 		dist/atlas/src/atlasrun.nim
 
 do-install:
-.for b in atlas atlas-run nim nimble nimgrep nimpretty nimsuggest testament
+.for b in atlas atlas-run nifler nifmake nim nimble nimgrep nimpretty \
+		nimsuggest testament
 	${INSTALL_PROGRAM} ${WRKSRC}/bin/$b ${PREFIX}/bin
 .endfor
 	${INSTALL_DATA_DIR} ${PREFIX}/lib/nim
Index: lang/nim/distinfo
===================================================================
RCS file: /cvs/ports/lang/nim/distinfo,v
retrieving revision 1.13
diff -u -p -r1.13 distinfo
--- lang/nim/distinfo	21 Oct 2026 01:35:14 -0000	1.13
+++ lang/nim/distinfo	30 Oct 2026 05:43:34 -0000
@@ -1,8 +1,4 @@
-SHA256 (nim-2.2.12.tar.xz) = Jjmgal6np/z1ffHn4e9NGyvuWMesm9ANvSqlvqHlpWo=
+SHA256 (nim-2.4.0.tar.xz) = T6AIU7xqyS692STY4s5CUJ0/cI12o//MA04WKI4OAyU=
 SHA256 (nim-lang-atlas-0.16.3.tar.gz) = pQG5wWgd2ZNn4vw7GUXeUTgiVKZa87kS8jhRNd0fBGs=
-SHA256 (nim-lang-nimble-v0.26.0.tar.gz) = p0fgqocZNg+Fj7Ady+cW91VHQmogtkzGv1mTTULSm10=
-SHA256 (status-im-nim-chronos-536169b4ab6b7772f57993284331b7de716b6e99.tar.gz) = 7tK1X7tOwzFHenM1O5wfLoBO5fMDnw8OkFZDRAFeO2Y=
-SIZE (nim-2.2.12.tar.xz) = 10259940
+SIZE (nim-2.4.0.tar.xz) = 16957544
 SIZE (nim-lang-atlas-0.16.3.tar.gz) = 206062
-SIZE (nim-lang-nimble-v0.26.0.tar.gz) = 893733
-SIZE (status-im-nim-chronos-536169b4ab6b7772f57993284331b7de716b6e99.tar.gz) = 698219
Index: lang/nim/patches/patch-build_sh
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-build_sh,v
retrieving revision 1.8
diff -u -p -r1.8 patch-build_sh
--- lang/nim/patches/patch-build_sh	19 Mar 2026 23:43:39 -0000	1.8
+++ lang/nim/patches/patch-build_sh	30 Oct 2026 05:43:34 -0000
@@ -7,8 +7,8 @@ Index: build.sh
    fi
    CC="sem -j $parallel --id $$ ${CC}"
  fi
--COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-} -w -fmax-errors=3 -fno-strict-aliasing -O3 -fno-ident -fno-math-errno $extraBuildArgs"
-+COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-} -w -fmax-errors=3 -fno-strict-aliasing -fno-ident -fno-math-errno $extraBuildArgs"
- LINK_FLAGS="${LDFLAGS:-} "
+-COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-}  -w -fmax-errors=3 -fno-strict-aliasing -pthread -O3 -fno-ident -fno-math-errno $extraBuildArgs"
++COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-}  -w -fmax-errors=3 -fno-strict-aliasing -pthread -fno-ident -fno-math-errno $extraBuildArgs"
+ LINK_FLAGS="${LDFLAGS:-} -pthread -pthread"
  PS4=""
  # platform detection
Index: lang/nim/patches/patch-compiler_options_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-compiler_options_nim,v
retrieving revision 1.3
diff -u -p -r1.3 patch-compiler_options_nim
--- lang/nim/patches/patch-compiler_options_nim	21 Oct 2026 01:35:14 -0000	1.3
+++ lang/nim/patches/patch-compiler_options_nim	30 Oct 2026 05:43:34 -0000
@@ -9,7 +9,7 @@ Index: compiler/options.nim
    hasTinyCBackend* = defined(tinyc)
    useEffectSystem* = true
    useWriteTracking* = false
-@@ -584,7 +585,7 @@ proc newConfigRef*(): ConfigRef =
+@@ -728,7 +729,7 @@ proc newConfigRef*(): ConfigRef =
      outFile: RelativeFile"",
      outDir: AbsoluteDir"",
      prefixDir: AbsoluteDir"",
Index: lang/nim/patches/patch-dist_nimble_src_nimblepkg_options_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-dist_nimble_src_nimblepkg_options_nim,v
retrieving revision 1.5
diff -u -p -r1.5 patch-dist_nimble_src_nimblepkg_options_nim
--- lang/nim/patches/patch-dist_nimble_src_nimblepkg_options_nim	21 Oct 2026 01:35:14 -0000	1.5
+++ lang/nim/patches/patch-dist_nimble_src_nimblepkg_options_nim	30 Oct 2026 05:43:34 -0000
@@ -3,7 +3,7 @@ don't exec git
 Index: dist/nimble/src/nimblepkg/options.nim
 --- dist/nimble/src/nimblepkg/options.nim.orig
 +++ dist/nimble/src/nimblepkg/options.nim
-@@ -377,15 +377,7 @@ const
+@@ -386,15 +386,7 @@ const
    ## sources outside the git tree of Nimble:
    git_revision_override* {.strdefine.} = ""
  
Index: lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_bearssl_ssl_nim
===================================================================
RCS file: lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_bearssl_ssl_nim
diff -N lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_bearssl_ssl_nim
--- lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_bearssl_ssl_nim	21 Oct 2026 01:35:14 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,35 +0,0 @@
-Match BearSSL's size_t output parameters instead of Nim's native uint.
-
-Index: dist/nimble/vendor/bearssl/bearssl/abi/bearssl_ssl.nim
---- dist/nimble/vendor/bearssl/bearssl/abi/bearssl_ssl.nim.orig
-+++ dist/nimble/vendor/bearssl/bearssl/abi/bearssl_ssl.nim
-@@ -823,25 +823,25 @@ proc sslEngineLastError*(cc: var SslEngineContext): ci
-   return cc.err
- 
- 
--proc sslEngineSendappBuf*(cc: var SslEngineContext; len: var uint): ptr byte {.
-+proc sslEngineSendappBuf*(cc: var SslEngineContext; len: var csize_t): ptr byte {.
-     importcFunc, importc: "br_ssl_engine_sendapp_buf", header: "bearssl_ssl.h".}
- 
- proc sslEngineSendappAck*(cc: var SslEngineContext; len: csize_t) {.importcFunc,
-     importc: "br_ssl_engine_sendapp_ack", header: "bearssl_ssl.h".}
- 
--proc sslEngineRecvappBuf*(cc: var SslEngineContext; len: var uint): ptr byte {.
-+proc sslEngineRecvappBuf*(cc: var SslEngineContext; len: var csize_t): ptr byte {.
-     importcFunc, importc: "br_ssl_engine_recvapp_buf", header: "bearssl_ssl.h".}
- 
- proc sslEngineRecvappAck*(cc: var SslEngineContext; len: csize_t) {.importcFunc,
-     importc: "br_ssl_engine_recvapp_ack", header: "bearssl_ssl.h".}
- 
--proc sslEngineSendrecBuf*(cc: var SslEngineContext; len: var uint): ptr byte {.
-+proc sslEngineSendrecBuf*(cc: var SslEngineContext; len: var csize_t): ptr byte {.
-     importcFunc, importc: "br_ssl_engine_sendrec_buf", header: "bearssl_ssl.h".}
- 
- proc sslEngineSendrecAck*(cc: var SslEngineContext; len: csize_t) {.importcFunc,
-     importc: "br_ssl_engine_sendrec_ack", header: "bearssl_ssl.h".}
- 
--proc sslEngineRecvrecBuf*(cc: var SslEngineContext; len: var uint): ptr byte {.
-+proc sslEngineRecvrecBuf*(cc: var SslEngineContext; len: var csize_t): ptr byte {.
-     importcFunc, importc: "br_ssl_engine_recvrec_buf", header: "bearssl_ssl.h".}
- 
- proc sslEngineRecvrecAck*(cc: var SslEngineContext; len: csize_t) {.importcFunc,
Index: lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_csources_nim
===================================================================
RCS file: lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_csources_nim
diff -N lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_csources_nim
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ lang/nim/patches/patch-dist_nimble_vendor_bearssl_bearssl_abi_csources_nim	30 Oct 2026 05:43:34 -0000
@@ -0,0 +1,13 @@
+Pass the selected standard-library path to the compile-time patch helper.
+
+Index: dist/nimble/vendor/bearssl/bearssl/abi/csources.nim
+--- dist/nimble/vendor/bearssl/bearssl/abi/csources.nim.orig
++++ dist/nimble/vendor/bearssl/bearssl/abi/csources.nim
+@@ -59,6 +59,7 @@ else:
+         let (output, exitCode) = gorgeEx(
+           quoteShell(getCurrentCompilerExe()) &
+           " e --hints:off --warnings:off" &
++          " --lib:" & quoteShell(querySetting(libPath)) &
+           " --skipUserCfg --skipParentCfg --skipProjCfg " &
+           quoteShell(bearssl & "abi/csources_patch.nims") & " " &
+           quoteShell(bearssl) & " " & quoteShell(dest))
Index: lang/nim/patches/patch-dist_nimble_vendor_chronos_chronos_streams_tlsstream_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-dist_nimble_vendor_chronos_chronos_streams_tlsstream_nim,v
retrieving revision 1.1
diff -u -p -r1.1 patch-dist_nimble_vendor_chronos_chronos_streams_tlsstream_nim
--- lang/nim/patches/patch-dist_nimble_vendor_chronos_chronos_streams_tlsstream_nim	21 Oct 2026 01:35:14 -0000	1.1
+++ lang/nim/patches/patch-dist_nimble_vendor_chronos_chronos_streams_tlsstream_nim	30 Oct 2026 05:43:34 -0000
@@ -43,7 +43,7 @@ Index: dist/nimble/vendor/chronos/chrono
        copyMem(pbytes, buf, n)
        sslEngineRecvappAck(engine[], n)
        return n.int
-@@ -387,12 +387,12 @@ proc write(
+@@ -384,12 +384,12 @@ proc write(
  
      if (state and SSL_SENDAPP) == SSL_SENDAPP:
        # Application data can be queued for encryption
Index: lang/nim/patches/patch-koch_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-koch_nim,v
retrieving revision 1.5
diff -u -p -r1.5 patch-koch_nim
--- lang/nim/patches/patch-koch_nim	21 Oct 2026 01:35:14 -0000	1.5
+++ lang/nim/patches/patch-koch_nim	30 Oct 2026 05:43:34 -0000
@@ -1,9 +1,9 @@
-Use the bundled dependencies when building the compiler and tools.
+Use bundled dependencies; the port builds the NIF tools separately.
 
 Index: koch.nim
 --- koch.nim.orig
 +++ koch.nim
-@@ -156,10 +156,6 @@ proc bundleC2nim(args: string) =
+@@ -167,10 +167,6 @@ proc bundleC2nim(args: string) =
               options = "--noNimblePath --path:. " & args)
  
  proc bundleNimbleExe(latest: bool, args: string) =
@@ -14,7 +14,7 @@ Index: koch.nim
    nimCompile("dist/nimble/src/nimble.nim",
               options = "-d:release --noNimblePath " & args)
    const zippyTests = "dist/nimble/vendor/zippy/tests"
-@@ -167,11 +163,6 @@ proc bundleNimbleExe(latest: bool, args: string) =
+@@ -178,11 +174,6 @@ proc bundleNimbleExe(latest: bool, args: string) =
      removeDir(zippyTests)
  
  proc bundleAtlasExe(latest: bool, args: string) =
@@ -26,19 +26,18 @@ Index: koch.nim
    # installer.ini expects it under $nim/bin
    nimCompile("dist/atlas/src/atlas.nim",
               options = "-d:release --noNimblePath -d:nimAtlasBootstrap " & args)
-@@ -181,7 +172,6 @@ proc bundleChecksums(latest: bool) =
-   cloneDependency(distDir, "https://github.com/nim-lang/checksums.git", commit, allowBundled = true)
+@@ -227,7 +218,6 @@ proc bundleChecksums(latest: bool) =
+   bundleNifTool("nifmake", "dist/nimony/src/nifmake/nifmake.nim")
  
  proc bundleNimsuggest(args: string) =
 -  bundleChecksums(false)
    nimCompileFold("Compile nimsuggest", "nimsuggest/nimsuggest.nim",
                   options = "-d:danger " & args)
  
-@@ -344,8 +334,6 @@ proc boot(args: string, skipIntegrityCheck: bool) =
-   let useCpp = doUseCpp()
+@@ -391,7 +381,6 @@ proc boot(args: string, skipIntegrityCheck: bool) =
    let smartNimcache = (if "release" in args or "danger" in args: "nimcache/r_" else: "nimcache/d_") &
                        hostOS & "_" & hostCPU
--
+ 
 -  bundleChecksums(false)
  
    let usingLibFFI = "nimHasLibFFI" in args
Index: lang/nim/patches/patch-lib_posix_posix_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-lib_posix_posix_nim,v
retrieving revision 1.1
diff -u -p -r1.1 patch-lib_posix_posix_nim
--- lang/nim/patches/patch-lib_posix_posix_nim	17 Jul 2026 00:54:38 -0000	1.1
+++ lang/nim/patches/patch-lib_posix_posix_nim	30 Oct 2026 05:43:34 -0000
@@ -1,7 +1,7 @@
 Index: lib/posix/posix.nim
 --- lib/posix/posix.nim.orig
 +++ lib/posix/posix.nim
-@@ -275,7 +275,7 @@ proc setlocale*(a1: cint, a2: cstring): cstring {.
+@@ -274,7 +274,7 @@ proc setlocale*(a1: cint, a2: cstring): cstring {.
  proc strfmon*(a1: cstring, a2: int, a3: cstring): int {.varargs,
     importc, header: "<monetary.h>".}
  
Index: lang/nim/patches/patch-lib_pure_parsejson_nim
===================================================================
RCS file: lang/nim/patches/patch-lib_pure_parsejson_nim
diff -N lang/nim/patches/patch-lib_pure_parsejson_nim
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ lang/nim/patches/patch-lib_pure_parsejson_nim	30 Oct 2026 05:43:34 -0000
@@ -0,0 +1,27 @@
+Keep SSO string prefixes synchronized after bulk JSON string writes.
+Use the string storage API for copy-on-write and prefix maintenance.
+
+Index: lib/pure/parsejson.nim
+--- lib/pure/parsejson.nim.orig
++++ lib/pure/parsejson.nim
+@@ -181,9 +181,9 @@ proc addSpan(dst: var string; src: string; startPos, e
+     return
+ 
+   let old = dst.len
+-  dst.setLen old + n
+ 
+   template impl =
++    dst.setLen old + n
+     for i in 0..<n:
+       dst[old + i] = src[startPos + i]
+ 
+@@ -194,7 +194,8 @@ proc addSpan(dst: var string; src: string; startPos, e
+       impl
+     else:
+       {.noSideEffect.}:
+-        copyMem dst[old].addr, src[startPos].unsafeAddr, n
++        copyMem beginStore(dst, old + n, old), readRawData(src, startPos), n
++        endStore(dst)
+ 
+ proc parseString(my: var JsonParser): TokKind =
+   result = tkString
Index: lang/nim/patches/patch-lib_std_private_threadtypes_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-lib_std_private_threadtypes_nim,v
retrieving revision 1.1
diff -u -p -r1.1 patch-lib_std_private_threadtypes_nim
--- lang/nim/patches/patch-lib_std_private_threadtypes_nim	19 Mar 2026 23:43:39 -0000	1.1
+++ lang/nim/patches/patch-lib_std_private_threadtypes_nim	30 Oct 2026 05:43:34 -0000
@@ -3,7 +3,7 @@
 Index: lib/std/private/threadtypes.nim
 --- lib/std/private/threadtypes.nim.orig
 +++ lib/std/private/threadtypes.nim
-@@ -77,7 +77,7 @@ else:
+@@ -79,7 +79,7 @@ else:
        Pthread_attr* {.importc: "pthread_attr_t",
                      header: "<sys/types.h>".} = object
          abi: array[56 div sizeof(clong), clong]
Index: lang/nim/patches/patch-lib_std_typedthreads_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-lib_std_typedthreads_nim,v
retrieving revision 1.1
diff -u -p -r1.1 patch-lib_std_typedthreads_nim
--- lang/nim/patches/patch-lib_std_typedthreads_nim	17 Jul 2026 00:54:38 -0000	1.1
+++ lang/nim/patches/patch-lib_std_typedthreads_nim	30 Oct 2026 05:43:34 -0000
@@ -1,7 +1,7 @@
 Index: lib/std/typedthreads.nim
 --- lib/std/typedthreads.nim.orig
 +++ lib/std/typedthreads.nim
-@@ -292,7 +292,7 @@ else:
+@@ -296,7 +296,7 @@ else:
      ##
      ## In other words sets a thread's `affinity`:idx:.
      ## If you don't know what this means, you shouldn't use this proc.
Index: lang/nim/patches/patch-lib_system_nim
===================================================================
RCS file: /cvs/ports/lang/nim/patches/patch-lib_system_nim,v
retrieving revision 1.2
diff -u -p -r1.2 patch-lib_system_nim
--- lang/nim/patches/patch-lib_system_nim	21 Oct 2026 01:35:14 -0000	1.2
+++ lang/nim/patches/patch-lib_system_nim	30 Oct 2026 05:43:34 -0000
@@ -1,7 +1,7 @@
 Index: lib/system.nim
 --- lib/system.nim.orig
 +++ lib/system.nim
-@@ -1108,7 +1108,7 @@ when defined(boehmgc):
+@@ -1116,7 +1116,7 @@ when defined(boehmgc):
    elif defined(macosx):
      const boehmLib = "libgc.dylib"
    elif defined(openbsd):
Index: lang/nim/pkg/PLIST
===================================================================
RCS file: /cvs/ports/lang/nim/pkg/PLIST,v
retrieving revision 1.12
diff -u -p -r1.12 PLIST
--- lang/nim/pkg/PLIST	17 Jul 2026 00:54:38 -0000	1.12
+++ lang/nim/pkg/PLIST	30 Oct 2026 05:43:35 -0000
@@ -3,6 +3,8 @@
 @sample ${SYSCONFDIR}/nim/
 @bin bin/atlas
 @bin bin/atlas-run
+@bin bin/nifler
+@bin bin/nifmake
 @bin bin/nim
 @bin bin/nimble
 @bin bin/nimgrep
@@ -233,6 +235,8 @@ lib/nim/std/jsheaders.nim
 lib/nim/std/jsonutils.nim
 lib/nim/std/logic.nim
 lib/nim/std/monotimes.nim
+lib/nim/std/nre2.nim
+lib/nim/std/nre2.nims
 lib/nim/std/objectdollar.nim
 lib/nim/std/oserrors.nim
 lib/nim/std/outparams.nim
@@ -349,6 +353,7 @@ lib/nim/system/repr.nim
 lib/nim/system/repr_impl.nim
 lib/nim/system/repr_v2.nim
 lib/nim/system/reprjs.nim
+lib/nim/system/rwlocks.nim
 lib/nim/system/seqs_v2.nim
 lib/nim/system/seqs_v2_reimpl.nim
 lib/nim/system/setops.nim
@@ -356,12 +361,18 @@ lib/nim/system/sets.nim
 lib/nim/system/stacktraces.nim
 lib/nim/system/strmantle.nim
 lib/nim/system/strs_v2.nim
+lib/nim/system/strs_v3.nim
 lib/nim/system/sysmem.nim
 lib/nim/system/sysstr.nim
 lib/nim/system/threadids.nim
 lib/nim/system/threadimpl.nim
 lib/nim/system/threadlocalstorage.nim
 lib/nim/system/timers.nim
+lib/nim/system/yrc.nim
+lib/nim/system/yrc_opt_proof.lean
+lib/nim/system/yrc_proof.lean
+lib/nim/system/yrc_proof.tla
+lib/nim/system/yrc_tarjan_proof.lean
 lib/nim/system_overview.rst
 lib/nim/windows/
 lib/nim/windows/registry.nim
