summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/aliases.nim3
-rw-r--r--compiler/ast.nim3
-rw-r--r--compiler/astalgo.nim3
-rw-r--r--compiler/bitsets.nim3
-rw-r--r--compiler/btrees.nim3
-rw-r--r--compiler/ccgutils.nim3
-rw-r--r--compiler/cgen.nim4
-rw-r--r--compiler/cgmeth.nim4
-rw-r--r--compiler/closureiters.nim3
-rw-r--r--compiler/commands.nim3
-rw-r--r--compiler/concepts.nim3
-rw-r--r--compiler/dfa.nim3
-rw-r--r--compiler/enumtostr.nim4
-rw-r--r--compiler/errorhandling.nim3
-rw-r--r--compiler/extccomp.nim3
-rw-r--r--compiler/gorgeimpl.nim3
-rw-r--r--compiler/guards.nim3
-rw-r--r--compiler/hlo.nim3
-rw-r--r--compiler/ic/bitabs.nim3
-rw-r--r--compiler/ic/cbackend.nim3
-rw-r--r--compiler/ic/dce.nim4
-rw-r--r--compiler/ic/ic.nim3
-rw-r--r--compiler/ic/integrity.nim4
-rw-r--r--compiler/ic/navigator.nim3
-rw-r--r--compiler/ic/packed_ast.nim3
-rw-r--r--compiler/ic/replayer.nim3
-rw-r--r--compiler/ic/rodfiles.nim3
-rw-r--r--compiler/idents.nim3
-rw-r--r--compiler/importer.nim3
-rw-r--r--compiler/injectdestructors.nim3
-rw-r--r--compiler/int128.nim3
-rw-r--r--compiler/isolation_check.nim3
-rw-r--r--compiler/lambdalifting.nim3
-rw-r--r--compiler/lexer.nim3
-rw-r--r--compiler/liftdestructors.nim3
-rw-r--r--compiler/llstream.nim3
-rw-r--r--compiler/lookups.nim4
-rw-r--r--compiler/lowerings.nim3
-rw-r--r--compiler/main.nim4
-rw-r--r--compiler/modulegraphs.nim3
-rw-r--r--compiler/modules.nim3
-rw-r--r--compiler/msgs.nim4
-rw-r--r--compiler/ndi.nim3
-rw-r--r--compiler/nilcheck.nim3
-rw-r--r--compiler/nim.nim4
-rw-r--r--compiler/nimblecmd.nim3
-rw-r--r--compiler/nimconf.nim3
-rw-r--r--compiler/nimlexbase.nim3
-rw-r--r--compiler/nimpaths.nim4
-rw-r--r--compiler/nimsets.nim3
-rw-r--r--compiler/options.nim5
-rw-r--r--compiler/parser.nim3
-rw-r--r--compiler/passes.nim3
-rw-r--r--compiler/pathutils.nim2
-rw-r--r--compiler/patterns.nim3
-rw-r--r--compiler/platform.nim4
-rw-r--r--compiler/pragmas.nim3
-rw-r--r--compiler/renderer.nim3
-rw-r--r--compiler/reorder.nim3
-rw-r--r--compiler/rodutils.nim3
-rw-r--r--compiler/ropes.nim4
-rw-r--r--compiler/scriptconfig.nim3
-rw-r--r--compiler/semdata.nim3
-rw-r--r--compiler/semfold.nim3
-rw-r--r--compiler/sempass2.nim3
-rw-r--r--compiler/semtypinst.nim3
-rw-r--r--compiler/sighashes.nim4
-rw-r--r--compiler/sigmatch.nim3
-rw-r--r--compiler/syntaxes.nim3
-rw-r--r--compiler/transf.nim3
-rw-r--r--compiler/treetab.nim3
-rw-r--r--compiler/typeallowed.nim3
-rw-r--r--compiler/types.nim3
-rw-r--r--compiler/varpartitions.nim3
-rw-r--r--compiler/vmdeps.nim3
-rw-r--r--compiler/vmgen.nim3
-rw-r--r--compiler/vmhooks.nim3
-rw-r--r--compiler/vmmarshal.nim3
-rw-r--r--compiler/vmops.nim4
-rw-r--r--lib/core/macros.nim4
-rw-r--r--lib/pure/algorithm.nim4
-rw-r--r--lib/pure/browsers.nim3
-rw-r--r--lib/pure/collections/hashcommon.nim4
-rw-r--r--lib/pure/collections/sequtils.nim4
-rw-r--r--lib/pure/hashes.nim4
-rw-r--r--lib/pure/json.nim2
-rw-r--r--lib/pure/lexbase.nim3
-rw-r--r--lib/pure/math.nim4
-rw-r--r--lib/pure/options.nim4
-rw-r--r--lib/pure/os.nim2
-rw-r--r--lib/pure/osproc.nim4
-rw-r--r--lib/pure/parsejson.nim3
-rw-r--r--lib/pure/streamwrapper.nim4
-rw-r--r--lib/pure/strformat.nim4
-rw-r--r--lib/pure/strtabs.nim4
-rw-r--r--lib/pure/strutils.nim3
-rw-r--r--lib/pure/terminal.nim2
-rw-r--r--lib/pure/times.nim4
-rw-r--r--lib/pure/typetraits.nim4
-rw-r--r--lib/std/assertions.nim (renamed from lib/system/assertions.nim)14
-rw-r--r--lib/std/enumutils.nim4
-rw-r--r--lib/std/jsonutils.nim3
-rw-r--r--lib/std/packedsets.nim3
-rw-r--r--lib/std/private/globs.nim4
-rw-r--r--lib/std/sha1.nim3
-rw-r--r--lib/system.nim7
-rw-r--r--lib/system/dragonbox.nim2
-rw-r--r--lib/system/formatfloat.nim3
-rw-r--r--lib/system/iterators.nim3
-rw-r--r--lib/system/schubfach.nim3
110 files changed, 361 insertions, 10 deletions
diff --git a/compiler/aliases.nim b/compiler/aliases.nim
index 0006c9fe6..9ec72faa4 100644
--- a/compiler/aliases.nim
+++ b/compiler/aliases.nim
@@ -12,6 +12,9 @@
 import
   ast, astalgo, types, trees, intsets
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   TAnalysisResult* = enum
     arNo, arMaybe, arYes
diff --git a/compiler/ast.nim b/compiler/ast.nim
index ad5ec12f5..d1e5ae2bf 100644
--- a/compiler/ast.nim
+++ b/compiler/ast.nim
@@ -13,6 +13,9 @@ import
   lineinfos, hashes, options, ropes, idents, int128, tables
 from strutils import toLowerAscii
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 export int128
 
 type
diff --git a/compiler/astalgo.nim b/compiler/astalgo.nim
index 94fa9da93..bc5b7d6e1 100644
--- a/compiler/astalgo.nim
+++ b/compiler/astalgo.nim
@@ -15,6 +15,9 @@ import
   ast, hashes, intsets, strutils, options, lineinfos, ropes, idents, rodutils,
   msgs
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc hashNode*(p: RootRef): Hash
 proc treeToYaml*(conf: ConfigRef; n: PNode, indent: int = 0, maxRecDepth: int = - 1): Rope
   # Convert a tree into its YAML representation; this is used by the
diff --git a/compiler/bitsets.nim b/compiler/bitsets.nim
index e0d94409e..67598f9ca 100644
--- a/compiler/bitsets.nim
+++ b/compiler/bitsets.nim
@@ -10,6 +10,9 @@
 # this unit handles Nim sets; it implements bit sets
 # the code here should be reused in the Nim standard library
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   ElemType = byte
   TBitSet* = seq[ElemType]    # we use byte here to avoid issues with
diff --git a/compiler/btrees.nim b/compiler/btrees.nim
index d5e7e8099..1701f8d7b 100644
--- a/compiler/btrees.nim
+++ b/compiler/btrees.nim
@@ -10,6 +10,9 @@
 ## BTree implementation with few features, but good enough for the
 ## Nim compiler's needs.
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 const
   M = 512    # max children per B-tree node = M-1
              # (must be even and greater than 2)
diff --git a/compiler/ccgutils.nim b/compiler/ccgutils.nim
index 06b75a20f..e19fccfa7 100644
--- a/compiler/ccgutils.nim
+++ b/compiler/ccgutils.nim
@@ -13,6 +13,9 @@ import
   ast, types, hashes, strutils, msgs, wordrecg,
   platform, trees, options, cgendata
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc getPragmaStmt*(n: PNode, w: TSpecialWord): PNode =
   case n.kind
   of nkStmtList:
diff --git a/compiler/cgen.nim b/compiler/cgen.nim
index 2865473fb..ad59b759f 100644
--- a/compiler/cgen.nim
+++ b/compiler/cgen.nim
@@ -17,6 +17,10 @@ import
   lowerings, tables, sets, ndi, lineinfos, pathutils, transf,
   injectdestructors, astmsgs
 
+
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 when not defined(leanCompiler):
   import spawn, semparallel
 
diff --git a/compiler/cgmeth.nim b/compiler/cgmeth.nim
index 484bc9d97..dab8826c1 100644
--- a/compiler/cgmeth.nim
+++ b/compiler/cgmeth.nim
@@ -13,6 +13,10 @@ import
   intsets, options, ast, msgs, idents, renderer, types, magicsys,
   sempass2, strutils, modulegraphs, lineinfos
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 proc genConv(n: PNode, d: PType, downcast: bool; conf: ConfigRef): PNode =
   var dest = skipTypes(d, abstractPtrs)
   var source = skipTypes(n.typ, abstractPtrs)
diff --git a/compiler/closureiters.nim b/compiler/closureiters.nim
index 4d9aeb3f7..6370d0dcb 100644
--- a/compiler/closureiters.nim
+++ b/compiler/closureiters.nim
@@ -133,6 +133,9 @@ import
   renderer, magicsys, lowerings, lambdalifting, modulegraphs, lineinfos,
   tables, options
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   Ctx = object
     g: ModuleGraph
diff --git a/compiler/commands.nim b/compiler/commands.nim
index b21b48801..4c1cec3d2 100644
--- a/compiler/commands.nim
+++ b/compiler/commands.nim
@@ -31,6 +31,9 @@ import
 
 from ast import setUseIc, eqTypeFlags, tfGcSafe, tfNoSideEffect
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 # but some have deps to imported modules. Yay.
 bootSwitch(usedTinyC, hasTinyCBackend, "-d:tinyc")
 bootSwitch(usedFFI, hasFFI, "-d:nimHasLibFFI")
diff --git a/compiler/concepts.nim b/compiler/concepts.nim
index 885b69c60..89a2bdc10 100644
--- a/compiler/concepts.nim
+++ b/compiler/concepts.nim
@@ -15,6 +15,9 @@ import ast, astalgo, semdata, lookups, lineinfos, idents, msgs, renderer, types,
 
 from magicsys import addSonSkipIntLit
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 const
   logBindings = false
 
diff --git a/compiler/dfa.nim b/compiler/dfa.nim
index d68e7be82..5b048ff6e 100644
--- a/compiler/dfa.nim
+++ b/compiler/dfa.nim
@@ -32,6 +32,9 @@
 import ast, intsets, lineinfos, renderer
 import std/private/asciitables
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   InstrKind* = enum
     goto, fork, def, use
diff --git a/compiler/enumtostr.nim b/compiler/enumtostr.nim
index 9bfa7001a..4a28d066c 100644
--- a/compiler/enumtostr.nim
+++ b/compiler/enumtostr.nim
@@ -1,6 +1,10 @@
 
 import ast, idents, lineinfos, modulegraphs, magicsys
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 proc genEnumToStrProc*(t: PType; info: TLineInfo; g: ModuleGraph; idgen: IdGenerator): PSym =
   result = newSym(skProc, getIdent(g.cache, "$"), nextSymId idgen, t.owner, info)
 
diff --git a/compiler/errorhandling.nim b/compiler/errorhandling.nim
index cda7ab3f4..a8361105e 100644
--- a/compiler/errorhandling.nim
+++ b/compiler/errorhandling.nim
@@ -12,6 +12,9 @@
 
 import ast, renderer, options, strutils, types
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   ErrorKind* = enum ## expand as you need.
     RawTypeMismatchError
diff --git a/compiler/extccomp.nim b/compiler/extccomp.nim
index 124cc2c34..09a1dfbb3 100644
--- a/compiler/extccomp.nim
+++ b/compiler/extccomp.nim
@@ -16,6 +16,9 @@ import ropes, platform, condsyms, options, msgs, lineinfos, pathutils
 
 import std/[os, strutils, osproc, sha1, streams, sequtils, times, strtabs, json, jsonutils, sugar]
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 type
   TInfoCCProp* = enum         # properties of the C compiler:
     hasSwitchRange,           # CC allows ranges in switch statements (GNU C)
diff --git a/compiler/gorgeimpl.nim b/compiler/gorgeimpl.nim
index d4aeb6a77..f58ac5de9 100644
--- a/compiler/gorgeimpl.nim
+++ b/compiler/gorgeimpl.nim
@@ -12,6 +12,9 @@
 import msgs, std / sha1, os, osproc, streams, options,
   lineinfos, pathutils
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 proc readOutput(p: Process): (string, int) =
   result[0] = ""
   var output = p.outputStream
diff --git a/compiler/guards.nim b/compiler/guards.nim
index d1265d42c..a50593aca 100644
--- a/compiler/guards.nim
+++ b/compiler/guards.nim
@@ -12,6 +12,9 @@
 import ast, astalgo, msgs, magicsys, nimsets, trees, types, renderer, idents,
   saturate, modulegraphs, options, lineinfos, int128
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 const
   someEq = {mEqI, mEqF64, mEqEnum, mEqCh, mEqB, mEqRef, mEqProc,
     mEqStr, mEqSet, mEqCString}
diff --git a/compiler/hlo.nim b/compiler/hlo.nim
index af54cabbb..8620c4c4d 100644
--- a/compiler/hlo.nim
+++ b/compiler/hlo.nim
@@ -9,6 +9,9 @@
 
 # This include implements the high level optimization pass.
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc hlo(c: PContext, n: PNode): PNode
 
 proc evalPattern(c: PContext, n, orig: PNode): PNode =
diff --git a/compiler/ic/bitabs.nim b/compiler/ic/bitabs.nim
index 0bce30b5d..ae673b574 100644
--- a/compiler/ic/bitabs.nim
+++ b/compiler/ic/bitabs.nim
@@ -3,6 +3,9 @@
 
 import hashes, rodfiles
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   LitId* = distinct uint32
 
diff --git a/compiler/ic/cbackend.nim b/compiler/ic/cbackend.nim
index f5811cb3b..e7ab000e6 100644
--- a/compiler/ic/cbackend.nim
+++ b/compiler/ic/cbackend.nim
@@ -20,6 +20,9 @@
 
 import std/packedsets, algorithm, tables
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import ".."/[ast, options, lineinfos, modulegraphs, cgendata, cgen,
   pathutils, extccomp, msgs]
 
diff --git a/compiler/ic/dce.nim b/compiler/ic/dce.nim
index 0a436a5d1..bc61a38de 100644
--- a/compiler/ic/dce.nim
+++ b/compiler/ic/dce.nim
@@ -10,6 +10,10 @@
 ## Dead code elimination (=DCE) for IC.
 
 import std/[intsets, tables]
+
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import ".." / [ast, options, lineinfos, types]
 
 import packed_ast, ic, bitabs
diff --git a/compiler/ic/ic.nim b/compiler/ic/ic.nim
index 7387d165b..193e5f517 100644
--- a/compiler/ic/ic.nim
+++ b/compiler/ic/ic.nim
@@ -14,6 +14,9 @@ import ".." / [ast, idents, lineinfos, msgs, ropes, options,
 #import ".." / [renderer, astalgo]
 from os import removeFile, isAbsolute
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 type
   PackedConfig* = object
     backend: TBackend
diff --git a/compiler/ic/integrity.nim b/compiler/ic/integrity.nim
index ed367ef61..d341fd653 100644
--- a/compiler/ic/integrity.nim
+++ b/compiler/ic/integrity.nim
@@ -11,6 +11,10 @@
 ## The set must cover a complete Nim project.
 
 import sets
+
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import ".." / [ast, modulegraphs]
 import packed_ast, bitabs, ic
 
diff --git a/compiler/ic/navigator.nim b/compiler/ic/navigator.nim
index a1a14885d..cbba591c5 100644
--- a/compiler/ic/navigator.nim
+++ b/compiler/ic/navigator.nim
@@ -16,6 +16,9 @@ import sets
 from os import nil
 from std/private/miscdollars import toLocation
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import ".." / [ast, modulegraphs, msgs, options]
 import packed_ast, bitabs, ic
 
diff --git a/compiler/ic/packed_ast.nim b/compiler/ic/packed_ast.nim
index 17beda2c1..c78fe56f5 100644
--- a/compiler/ic/packed_ast.nim
+++ b/compiler/ic/packed_ast.nim
@@ -16,6 +16,9 @@ import hashes, tables, strtabs
 import bitabs
 import ".." / [ast, options]
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   SymId* = distinct int32
   ModuleId* = distinct int32
diff --git a/compiler/ic/replayer.nim b/compiler/ic/replayer.nim
index 61aa0e697..0188eaee3 100644
--- a/compiler/ic/replayer.nim
+++ b/compiler/ic/replayer.nim
@@ -16,6 +16,9 @@ import ".." / [ast, modulegraphs, trees, extccomp, btrees,
 
 import tables
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import packed_ast, ic, bitabs
 
 proc replayStateChanges*(module: PSym; g: ModuleGraph) =
diff --git a/compiler/ic/rodfiles.nim b/compiler/ic/rodfiles.nim
index a52bd18b3..d811b9b99 100644
--- a/compiler/ic/rodfiles.nim
+++ b/compiler/ic/rodfiles.nim
@@ -16,6 +16,9 @@
 
 from typetraits import supportsCopyMem
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 ## Overview
 ## ========
 ## `RodFile` represents a Rod File (versioned binary format), and the
diff --git a/compiler/idents.nim b/compiler/idents.nim
index d2a84fd36..f36ce09f3 100644
--- a/compiler/idents.nim
+++ b/compiler/idents.nim
@@ -14,6 +14,9 @@
 import
   hashes, wordrecg
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   PIdent* = ref TIdent
   TIdent*{.acyclic.} = object
diff --git a/compiler/importer.nim b/compiler/importer.nim
index acca2c644..719b75f0f 100644
--- a/compiler/importer.nim
+++ b/compiler/importer.nim
@@ -15,6 +15,9 @@ import
   modulegraphs, wordrecg, tables
 from strutils import `%`
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc readExceptSet*(c: PContext, n: PNode): IntSet =
   assert n.kind in {nkImportExceptStmt, nkExportExceptStmt}
   result = initIntSet()
diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim
index 985f27878..6500c5bc7 100644
--- a/compiler/injectdestructors.nim
+++ b/compiler/injectdestructors.nim
@@ -19,6 +19,9 @@ import
   lineinfos, parampatterns, sighashes, liftdestructors, optimizer,
   varpartitions
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 from trees import exprStructuralEquivalent, getRoot
 
 type
diff --git a/compiler/int128.nim b/compiler/int128.nim
index 6ba7c1961..afa07094b 100644
--- a/compiler/int128.nim
+++ b/compiler/int128.nim
@@ -5,6 +5,9 @@
 
 from math import trunc
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   Int128* = object
     udata: array[4, uint32]
diff --git a/compiler/isolation_check.nim b/compiler/isolation_check.nim
index 68a212794..2674605dc 100644
--- a/compiler/isolation_check.nim
+++ b/compiler/isolation_check.nim
@@ -13,6 +13,9 @@
 import
   ast, types, renderer, intsets
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc canAlias(arg, ret: PType; marker: var IntSet): bool
 
 proc canAliasN(arg: PType; n: PNode; marker: var IntSet): bool =
diff --git a/compiler/lambdalifting.nim b/compiler/lambdalifting.nim
index a622f6de6..6838fd80d 100644
--- a/compiler/lambdalifting.nim
+++ b/compiler/lambdalifting.nim
@@ -14,6 +14,9 @@ import
   idents, renderer, types, magicsys, lowerings, tables, modulegraphs, lineinfos,
   transf, liftdestructors, typeallowed
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 discard """
   The basic approach is that captured vars need to be put on the heap and
   that the calling chain needs to be explicitly modelled. Things to consider:
diff --git a/compiler/lexer.nim b/compiler/lexer.nim
index 506b0e924..e795d52c0 100644
--- a/compiler/lexer.nim
+++ b/compiler/lexer.nim
@@ -19,6 +19,9 @@ import
   hashes, options, msgs, strutils, platform, idents, nimlexbase, llstream,
   wordrecg, lineinfos, pathutils, parseutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 const
   MaxLineLength* = 80         # lines longer than this lead to a warning
   numChars*: set[char] = {'0'..'9', 'a'..'z', 'A'..'Z'}
diff --git a/compiler/liftdestructors.nim b/compiler/liftdestructors.nim
index 51b4ddfb0..68c93a179 100644
--- a/compiler/liftdestructors.nim
+++ b/compiler/liftdestructors.nim
@@ -15,6 +15,9 @@ import modulegraphs, lineinfos, idents, ast, renderer, semdata,
 
 from trees import isCaseObj
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   TLiftCtx = object
     g: ModuleGraph
diff --git a/compiler/llstream.nim b/compiler/llstream.nim
index 865a98ee0..004d990fa 100644
--- a/compiler/llstream.nim
+++ b/compiler/llstream.nim
@@ -12,6 +12,9 @@
 import
   pathutils
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 # support `useGnuReadline`, `useLinenoise` for backwards compatibility
 const hasRstdin = (defined(nimUseLinenoise) or defined(useLinenoise) or defined(useGnuReadline)) and
   not defined(windows)
diff --git a/compiler/lookups.nim b/compiler/lookups.nim
index fc30408e5..d61e15915 100644
--- a/compiler/lookups.nim
+++ b/compiler/lookups.nim
@@ -9,6 +9,10 @@
 
 # This module implements lookup helpers.
 import std/[algorithm, strutils]
+
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import
   intsets, ast, astalgo, idents, semdata, types, msgs, options,
   renderer, nimfix/prettybase, lineinfos, modulegraphs, astmsgs
diff --git a/compiler/lowerings.nim b/compiler/lowerings.nim
index 37405d8d9..20003b946 100644
--- a/compiler/lowerings.nim
+++ b/compiler/lowerings.nim
@@ -15,6 +15,9 @@ const
 import ast, astalgo, types, idents, magicsys, msgs, options, modulegraphs,
   lineinfos
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc newDeref*(n: PNode): PNode {.inline.} =
   result = newNodeIT(nkHiddenDeref, n.info, n.typ[0])
   result.add n
diff --git a/compiler/main.nim b/compiler/main.nim
index e4ec4d729..3cddbffb3 100644
--- a/compiler/main.nim
+++ b/compiler/main.nim
@@ -22,6 +22,10 @@ import
   modules,
   modulegraphs, lineinfos, pathutils, vmprofiler
 
+
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 import ic / [cbackend, integrity, navigator]
 from ic / ic import rodViewer
 
diff --git a/compiler/modulegraphs.nim b/compiler/modulegraphs.nim
index 28e0ddb82..c44908dc3 100644
--- a/compiler/modulegraphs.nim
+++ b/compiler/modulegraphs.nim
@@ -15,6 +15,9 @@ import intsets, tables, hashes, md5_old
 import ast, astalgo, options, lineinfos,idents, btrees, ropes, msgs, pathutils
 import ic / [packed_ast, ic]
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   SigHash* = distinct MD5Digest
 
diff --git a/compiler/modules.nim b/compiler/modules.nim
index 6fba606b2..dd5db63fa 100644
--- a/compiler/modules.nim
+++ b/compiler/modules.nim
@@ -14,6 +14,9 @@ import
   idents, lexer, passes, syntaxes, llstream, modulegraphs,
   lineinfos, pathutils, tables
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 import ic / replayer
 
 proc resetSystemArtifacts*(g: ModuleGraph) =
diff --git a/compiler/msgs.nim b/compiler/msgs.nim
index 56531eb68..9d111b2e2 100644
--- a/compiler/msgs.nim
+++ b/compiler/msgs.nim
@@ -12,6 +12,10 @@ import
   std/private/miscdollars,
   options, ropes, lineinfos, pathutils, strutils2
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
+
 type InstantiationInfo* = typeof(instantiationInfo())
 template instLoc*(): InstantiationInfo = instantiationInfo(-2, fullPaths = true)
 
diff --git a/compiler/ndi.nim b/compiler/ndi.nim
index 5af87237f..a9d9cfe79 100644
--- a/compiler/ndi.nim
+++ b/compiler/ndi.nim
@@ -12,6 +12,9 @@
 
 import ast, msgs, ropes, options, pathutils
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 type
   NdiFile* = object
     enabled: bool
diff --git a/compiler/nilcheck.nim b/compiler/nilcheck.nim
index 9c2d091f7..49ceb8942 100644
--- a/compiler/nilcheck.nim
+++ b/compiler/nilcheck.nim
@@ -10,6 +10,9 @@
 import ast, renderer, intsets, tables, msgs, options, lineinfos, strformat, idents, treetab, hashes
 import sequtils, strutils, sets
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 # IMPORTANT: notes not up to date, i'll update this comment again
 #
 # notes:
diff --git a/compiler/nim.nim b/compiler/nim.nim
index 86c7ab524..bfb07ba20 100644
--- a/compiler/nim.nim
+++ b/compiler/nim.nim
@@ -8,6 +8,10 @@
 #
 
 import std/[os, strutils, parseopt]
+
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 when defined(windows) and not defined(nimKochBootstrap):
   # remove workaround pending bootstrap >= 1.5.1
   # refs https://github.com/nim-lang/Nim/issues/18334#issuecomment-867114536
diff --git a/compiler/nimblecmd.nim b/compiler/nimblecmd.nim
index 9cd2941ba..b6b08ccd4 100644
--- a/compiler/nimblecmd.nim
+++ b/compiler/nimblecmd.nim
@@ -12,6 +12,9 @@
 import parseutils, strutils, os, options, msgs, sequtils, lineinfos, pathutils,
   std/sha1, tables
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 proc addPath*(conf: ConfigRef; path: AbsoluteDir, info: TLineInfo) =
   if not conf.searchPaths.contains(path):
     conf.searchPaths.insert(path, 0)
diff --git a/compiler/nimconf.nim b/compiler/nimconf.nim
index 1cf22e20a..319a3de6d 100644
--- a/compiler/nimconf.nim
+++ b/compiler/nimconf.nim
@@ -13,6 +13,9 @@ import
   llstream, commands, os, strutils, msgs, lexer, ast,
   options, idents, wordrecg, strtabs, lineinfos, pathutils, scriptconfig
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 # ---------------- configuration file parser -----------------------------
 # we use Nim's lexer here to save space and work
 
diff --git a/compiler/nimlexbase.nim b/compiler/nimlexbase.nim
index b8cb9f78a..3bc9af9c9 100644
--- a/compiler/nimlexbase.nim
+++ b/compiler/nimlexbase.nim
@@ -15,6 +15,9 @@
 import
   llstream, strutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 const
   Lrz* = ' '
   Apo* = '\''
diff --git a/compiler/nimpaths.nim b/compiler/nimpaths.nim
index a93b488fd..216071c5c 100644
--- a/compiler/nimpaths.nim
+++ b/compiler/nimpaths.nim
@@ -19,6 +19,10 @@ Unstable API
 
 import os, strutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 const
   docCss* = "$nimr/doc/nimdoc.css"
   docHackNim* = "$nimr/tools/dochack/dochack.nim"
diff --git a/compiler/nimsets.nim b/compiler/nimsets.nim
index 8683604af..49c80065a 100644
--- a/compiler/nimsets.nim
+++ b/compiler/nimsets.nim
@@ -12,6 +12,9 @@
 import
   ast, astalgo, lineinfos, bitsets, types, options
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc inSet*(s: PNode, elem: PNode): bool =
   assert s.kind == nkCurly
   if s.kind != nkCurly:
diff --git a/compiler/options.nim b/compiler/options.nim
index 9c0c9df72..69eafb67f 100644
--- a/compiler/options.nim
+++ b/compiler/options.nim
@@ -14,6 +14,11 @@ import
 from terminal import isatty
 from times import utc, fromUnix, local, getTime, format, DateTime
 from std/private/globs import nativeToUnixPath
+
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
+
 const
   hasTinyCBackend* = defined(tinyc)
   useEffectSystem* = true
diff --git a/compiler/parser.nim b/compiler/parser.nim
index 0fb60440c..7973f7d37 100644
--- a/compiler/parser.nim
+++ b/compiler/parser.nim
@@ -36,6 +36,9 @@ import
 when defined(nimpretty):
   import layouter
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   Parser* = object            # A Parser object represents a file that
                               # is being parsed
diff --git a/compiler/passes.nim b/compiler/passes.nim
index 3debce1f6..ce52b10c5 100644
--- a/compiler/passes.nim
+++ b/compiler/passes.nim
@@ -16,6 +16,9 @@ import
   syntaxes, modulegraphs, reorder,
   lineinfos, pathutils
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 type
   TPassData* = tuple[input: PNode, closeOutput: PNode]
 
diff --git a/compiler/pathutils.nim b/compiler/pathutils.nim
index 3a501a417..1ef0143d5 100644
--- a/compiler/pathutils.nim
+++ b/compiler/pathutils.nim
@@ -13,7 +13,7 @@
 import os, pathnorm
 
 when defined(nimPreviewSlimSystem):
-  import std/syncio
+  import std/[syncio, assertions]
 
 type
   AbsoluteFile* = distinct string
diff --git a/compiler/patterns.nim b/compiler/patterns.nim
index 4b39de3ba..87e9c825c 100644
--- a/compiler/patterns.nim
+++ b/compiler/patterns.nim
@@ -13,6 +13,9 @@
 import
   ast, types, semdata, sigmatch, idents, aliases, parampatterns, trees
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   TPatternContext = object
     owner: PSym
diff --git a/compiler/platform.nim b/compiler/platform.nim
index 4e6054d5c..4b4316bc2 100644
--- a/compiler/platform.nim
+++ b/compiler/platform.nim
@@ -16,6 +16,10 @@
 import
   strutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 type
   TSystemOS* = enum # Also add OS in initialization section and alias
                     # conditionals to condsyms (end of module).
diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim
index 702a9e082..01399d4ff 100644
--- a/compiler/pragmas.nim
+++ b/compiler/pragmas.nim
@@ -14,6 +14,9 @@ import
   wordrecg, ropes, options, strutils, extccomp, math, magicsys, trees,
   types, lookups, lineinfos, pathutils, linter
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 from ic / ic import addCompilerProc
 
 const
diff --git a/compiler/renderer.nim b/compiler/renderer.nim
index 22a2d4cbd..3503c4bf6 100644
--- a/compiler/renderer.nim
+++ b/compiler/renderer.nim
@@ -17,6 +17,9 @@ when defined(nimHasUsed):
 import
   lexer, options, idents, strutils, ast, msgs, lineinfos
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 type
   TRenderFlag* = enum
     renderNone, renderNoBody, renderNoComments, renderDocComments,
diff --git a/compiler/reorder.nim b/compiler/reorder.nim
index 65c1fb9ee..daeb48248 100644
--- a/compiler/reorder.nim
+++ b/compiler/reorder.nim
@@ -4,6 +4,9 @@ import
   msgs, modulegraphs, syntaxes, options, modulepaths,
   lineinfos
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   DepN = ref object
     pnode: PNode
diff --git a/compiler/rodutils.nim b/compiler/rodutils.nim
index a4f7a5146..95b7b2d9e 100644
--- a/compiler/rodutils.nim
+++ b/compiler/rodutils.nim
@@ -10,6 +10,9 @@
 ## Serialization utilities for the compiler.
 import strutils, math
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 # bcc on windows doesn't have C99 functions
 when defined(windows) and defined(bcc):
   {.emit: """#if defined(_MSC_VER) && _MSC_VER < 1900
diff --git a/compiler/ropes.nim b/compiler/ropes.nim
index cd696a545..a44d84ddc 100644
--- a/compiler/ropes.nim
+++ b/compiler/ropes.nim
@@ -60,6 +60,10 @@ import
 
 from pathutils import AbsoluteFile
 
+when defined(nimPreviewSlimSystem):
+  import std/[assertions, syncio]
+
+
 type
   FormatStr* = string  # later we may change it to CString for better
                        # performance of the code generator (assignments
diff --git a/compiler/scriptconfig.nim b/compiler/scriptconfig.nim
index 89510f6b2..adc228d1e 100644
--- a/compiler/scriptconfig.nim
+++ b/compiler/scriptconfig.nim
@@ -16,6 +16,9 @@ import
   os, times, osproc, wordrecg, strtabs, modulegraphs,
   pathutils
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 # we support 'cmpIgnoreStyle' natively for efficiency:
 from strutils import cmpIgnoreStyle, contains
 
diff --git a/compiler/semdata.nim b/compiler/semdata.nim
index 422d1223a..d7a4d2c1c 100644
--- a/compiler/semdata.nim
+++ b/compiler/semdata.nim
@@ -11,6 +11,9 @@
 
 import tables
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import
   intsets, options, ast, astalgo, msgs, idents, renderer,
   magicsys, vmdef, modulegraphs, lineinfos, sets, pathutils
diff --git a/compiler/semfold.nim b/compiler/semfold.nim
index d0473b5ce..d2bbc63be 100644
--- a/compiler/semfold.nim
+++ b/compiler/semfold.nim
@@ -17,6 +17,9 @@ import
 
 from system/memory import nimCStrLen
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc errorType*(g: ModuleGraph): PType =
   ## creates a type representing an error state
   result = newType(tyError, nextTypeId(g.idgen), g.owners[^1])
diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim
index d6cc4180b..9bc811a03 100644
--- a/compiler/sempass2.nim
+++ b/compiler/sempass2.nim
@@ -12,6 +12,9 @@ import
   wordrecg, strutils, options, guards, lineinfos, semfold, semdata,
   modulegraphs, varpartitions, typeallowed, nilcheck, errorhandling, tables
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 when defined(useDfa):
   import dfa
 
diff --git a/compiler/semtypinst.nim b/compiler/semtypinst.nim
index 5d300fc58..504b83b4c 100644
--- a/compiler/semtypinst.nim
+++ b/compiler/semtypinst.nim
@@ -14,6 +14,9 @@ import ast, astalgo, msgs, types, magicsys, semdata, renderer, options,
 
 from concepts import makeTypeDesc
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 const tfInstClearedFlags = {tfHasMeta, tfUnresolved}
 
 proc checkPartialConstructedType(conf: ConfigRef; info: TLineInfo, t: PType) =
diff --git a/compiler/sighashes.nim b/compiler/sighashes.nim
index 3d36d2533..1835d9d0f 100644
--- a/compiler/sighashes.nim
+++ b/compiler/sighashes.nim
@@ -13,6 +13,10 @@ import ast, tables, ropes, md5_old, modulegraphs
 from hashes import Hash
 import types
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 proc `&=`(c: var MD5Context, s: string) = md5Update(c, s, s.len)
 proc `&=`(c: var MD5Context, ch: char) =
   # XXX suspicious code here; relies on ch being zero terminated?
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim
index 14f4c5e19..f195c4e45 100644
--- a/compiler/sigmatch.nim
+++ b/compiler/sigmatch.nim
@@ -15,6 +15,9 @@ import
   magicsys, idents, lexer, options, parampatterns, strutils, trees,
   linter, lineinfos, lowerings, modulegraphs, concepts
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   MismatchKind* = enum
     kUnknown, kAlreadyGiven, kUnknownNamedParam, kTypeMismatch, kVarNeeded,
diff --git a/compiler/syntaxes.nim b/compiler/syntaxes.nim
index 03a9702a3..e47b0483d 100644
--- a/compiler/syntaxes.nim
+++ b/compiler/syntaxes.nim
@@ -13,6 +13,9 @@ import
   strutils, llstream, ast, idents, lexer, options, msgs, parser,
   filters, filter_tmpl, renderer, lineinfos, pathutils
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
 export Parser, parseAll, parseTopLevelStmt, closeParser
 
 type
diff --git a/compiler/transf.nim b/compiler/transf.nim
index edb8d3573..bdd7c680c 100644
--- a/compiler/transf.nim
+++ b/compiler/transf.nim
@@ -24,6 +24,9 @@ import
   lowerings, liftlocals,
   modulegraphs, lineinfos
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc transformBody*(g: ModuleGraph; idgen: IdGenerator, prc: PSym, cache: bool): PNode
 
 import closureiters, lambdalifting
diff --git a/compiler/treetab.nim b/compiler/treetab.nim
index 26afd102c..d8dd8d33e 100644
--- a/compiler/treetab.nim
+++ b/compiler/treetab.nim
@@ -12,6 +12,9 @@
 import
   hashes, ast, astalgo, types
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc hashTree*(n: PNode): Hash =
   if n.isNil:
     return
diff --git a/compiler/typeallowed.nim b/compiler/typeallowed.nim
index 3d6ea0edb..57dd039ad 100644
--- a/compiler/typeallowed.nim
+++ b/compiler/typeallowed.nim
@@ -13,6 +13,9 @@
 import
   intsets, ast, renderer, options, semdata, types
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   TTypeAllowedFlag* = enum
     taField,
diff --git a/compiler/types.nim b/compiler/types.nim
index 007a61356..4d2801633 100644
--- a/compiler/types.nim
+++ b/compiler/types.nim
@@ -13,6 +13,9 @@ import
   intsets, ast, astalgo, trees, msgs, strutils, platform, renderer, options,
   lineinfos, int128, modulegraphs, astmsgs
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   TPreferedDesc* = enum
     preferName, # default
diff --git a/compiler/varpartitions.nim b/compiler/varpartitions.nim
index 721de900e..d04a7b40c 100644
--- a/compiler/varpartitions.nim
+++ b/compiler/varpartitions.nim
@@ -32,6 +32,9 @@ import ast, types, lineinfos, options, msgs, renderer, typeallowed, modulegraphs
 from trees import getMagic, isNoSideEffectPragma, stupidStmtListExpr
 from isolation_check import canAlias
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   AbstractTime = distinct int
 
diff --git a/compiler/vmdeps.nim b/compiler/vmdeps.nim
index 1afda14b0..118a3031e 100644
--- a/compiler/vmdeps.nim
+++ b/compiler/vmdeps.nim
@@ -10,6 +10,9 @@
 import ast, types, msgs, os, options, idents, lineinfos
 from pathutils import AbsoluteFile
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 proc opSlurp*(file: string, info: TLineInfo, module: PSym; conf: ConfigRef): string =
   try:
     var filename = parentDir(toFullPath(conf, info)) / file
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim
index 1551fbb80..72bcef4db 100644
--- a/compiler/vmgen.nim
+++ b/compiler/vmgen.nim
@@ -29,6 +29,9 @@
 
 import tables
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 import
   strutils, ast, types, msgs, renderer, vmdef,
   intsets, magicsys, options, lowerings, lineinfos, transf, astmsgs
diff --git a/compiler/vmhooks.nim b/compiler/vmhooks.nim
index 1ede87e5e..84ecf586f 100644
--- a/compiler/vmhooks.nim
+++ b/compiler/vmhooks.nim
@@ -9,6 +9,9 @@
 
 import pathutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 template setX(k, field) {.dirty.} =
   a.slots[a.ra].ensureKind(k)
   a.slots[a.ra].field = v
diff --git a/compiler/vmmarshal.nim b/compiler/vmmarshal.nim
index d28f0325b..83c441283 100644
--- a/compiler/vmmarshal.nim
+++ b/compiler/vmmarshal.nim
@@ -12,6 +12,9 @@
 import streams, json, intsets, tables, ast, astalgo, idents, types, msgs,
   options, lineinfos
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc ptrToInt(x: PNode): int {.inline.} =
   result = cast[int](x) # don't skip alignment
 
diff --git a/compiler/vmops.nim b/compiler/vmops.nim
index f13e4b1cc..640826cc8 100644
--- a/compiler/vmops.nim
+++ b/compiler/vmops.nim
@@ -31,6 +31,10 @@ from std/osproc import nil
 from system/formatfloat import addFloatRoundtrip, addFloatSprintf
 
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
+
 # There are some useful procs in vmconv.
 import vmconv, vmmarshal
 
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index 4d040cebc..f20ca9385 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -10,6 +10,10 @@
 include "system/inclrtl"
 import std/private/since
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 ## This module contains the interface to the compiler's abstract syntax
 ## tree (`AST`:idx:). Macros operate on this tree.
 ##
diff --git a/lib/pure/algorithm.nim b/lib/pure/algorithm.nim
index 1ddcc9843..c43545f78 100644
--- a/lib/pure/algorithm.nim
+++ b/lib/pure/algorithm.nim
@@ -44,6 +44,10 @@ runnableExamples:
 
 import std/private/since
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 type
   SortOrder* = enum
     Descending, Ascending
diff --git a/lib/pure/browsers.nim b/lib/pure/browsers.nim
index 08f5208d2..c36e31b11 100644
--- a/lib/pure/browsers.nim
+++ b/lib/pure/browsers.nim
@@ -16,6 +16,9 @@ import std/private/since
 
 import strutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 when defined(windows):
   import winlean
   from os import absolutePath
diff --git a/lib/pure/collections/hashcommon.nim b/lib/pure/collections/hashcommon.nim
index a169418ce..deff8fa21 100644
--- a/lib/pure/collections/hashcommon.nim
+++ b/lib/pure/collections/hashcommon.nim
@@ -10,6 +10,10 @@
 # An `include` file which contains common code for
 # hash sets and tables.
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 const
   growthFactor = 2
 
diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim
index 64a7be7a9..5e9b492c2 100644
--- a/lib/pure/collections/sequtils.nim
+++ b/lib/pure/collections/sequtils.nim
@@ -84,6 +84,10 @@ import std/private/since
 
 import macros
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 when defined(nimHasEffectsOf):
   {.experimental: "strictEffects".}
 else:
diff --git a/lib/pure/hashes.nim b/lib/pure/hashes.nim
index 47dacec7d..e88210757 100644
--- a/lib/pure/hashes.nim
+++ b/lib/pure/hashes.nim
@@ -67,6 +67,10 @@ runnableExamples:
 
 import std/private/since
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 type
   Hash* = int ## A hash value. Hash tables using these values should
               ## always have a size of a power of two so they can use the `and`
diff --git a/lib/pure/json.nim b/lib/pure/json.nim
index bdc9fe5ab..dd9232ea6 100644
--- a/lib/pure/json.nim
+++ b/lib/pure/json.nim
@@ -165,7 +165,7 @@ import options # xxx remove this dependency using same approach as https://githu
 import std/private/since
 
 when defined(nimPreviewSlimSystem):
-  import std/syncio
+  import std/[syncio, assertions]
 
 export
   tables.`$`
diff --git a/lib/pure/lexbase.nim b/lib/pure/lexbase.nim
index bbc0a38ae..336a57ec1 100644
--- a/lib/pure/lexbase.nim
+++ b/lib/pure/lexbase.nim
@@ -14,6 +14,9 @@
 import
   strutils, streams
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 const
   EndOfFile* = '\0' ## end of file marker
   NewLines* = {'\c', '\L'}
diff --git a/lib/pure/math.nim b/lib/pure/math.nim
index 1c47258bc..15324f882 100644
--- a/lib/pure/math.nim
+++ b/lib/pure/math.nim
@@ -60,6 +60,10 @@ import std/private/since
 
 import bitops, fenv
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 when defined(c) or defined(cpp):
   proc c_isnan(x: float): bool {.importc: "isnan", header: "<math.h>".}
     # a generic like `x: SomeFloat` might work too if this is implemented via a C macro.
diff --git a/lib/pure/options.nim b/lib/pure/options.nim
index 850bfa555..562ed6361 100644
--- a/lib/pure/options.nim
+++ b/lib/pure/options.nim
@@ -71,6 +71,10 @@ supports pattern matching on `Option`s, with the `Some(<pattern>)` and
 
 import typetraits
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 when (NimMajor, NimMinor) >= (1, 1):
   type
     SomePointer = ref | ptr | pointer | proc
diff --git a/lib/pure/os.nim b/lib/pure/os.nim
index 7c0c64276..fa379a228 100644
--- a/lib/pure/os.nim
+++ b/lib/pure/os.nim
@@ -35,7 +35,7 @@ import std/private/since
 import strutils, pathnorm
 
 when defined(nimPreviewSlimSystem):
-  import std/syncio
+  import std/[syncio, assertions]
 
 const weirdTarget = defined(nimscript) or defined(js)
 
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim
index 3da9737ec..dca5099a4 100644
--- a/lib/pure/osproc.nim
+++ b/lib/pure/osproc.nim
@@ -31,6 +31,10 @@ else:
 when defined(linux) and defined(useClone):
   import linux
 
+when defined(nimPreviewSlimSystem):
+  import std/[syncio, assertions]
+
+
 type
   ProcessOption* = enum ## Options that can be passed to `startProcess proc
                         ## <#startProcess,string,string,openArray[string],StringTableRef,set[ProcessOption]>`_.
diff --git a/lib/pure/parsejson.nim b/lib/pure/parsejson.nim
index 196d8c360..c92eac26e 100644
--- a/lib/pure/parsejson.nim
+++ b/lib/pure/parsejson.nim
@@ -14,6 +14,9 @@
 import strutils, lexbase, streams, unicode
 import std/private/decode_helpers
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   JsonEventKind* = enum ## enumeration of all events that may occur when parsing
     jsonError,          ## an error occurred during parsing
diff --git a/lib/pure/streamwrapper.nim b/lib/pure/streamwrapper.nim
index 7a501760b..a6c1901d2 100644
--- a/lib/pure/streamwrapper.nim
+++ b/lib/pure/streamwrapper.nim
@@ -13,6 +13,10 @@
 
 import deques, streams
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 type
   PipeOutStream*[T] = ref object of T
     # When stream peek operation is called, it reads from base stream
diff --git a/lib/pure/strformat.nim b/lib/pure/strformat.nim
index 40a33951c..ce3439600 100644
--- a/lib/pure/strformat.nim
+++ b/lib/pure/strformat.nim
@@ -316,6 +316,10 @@ single letter DSLs.
 import macros, parseutils, unicode
 import strutils except format
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 proc mkDigit(v: int, typ: char): string {.inline.} =
   assert(v < 26)
   if v < 10:
diff --git a/lib/pure/strtabs.nim b/lib/pure/strtabs.nim
index 3b90fea50..aa2886cfa 100644
--- a/lib/pure/strtabs.nim
+++ b/lib/pure/strtabs.nim
@@ -53,6 +53,10 @@ import std/private/since
 import
   hashes, strutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 when defined(js) or defined(nimscript) or defined(Standalone):
   {.pragma: rtlFunc.}
 else:
diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim
index 5e505ec3a..bf7bd6aa8 100644
--- a/lib/pure/strutils.nim
+++ b/lib/pure/strutils.nim
@@ -82,6 +82,9 @@ include "system/inclrtl"
 import std/private/since
 from std/private/strimpl import cmpIgnoreStyleImpl, cmpIgnoreCaseImpl, startsWithImpl, endsWithImpl
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 
 const
   Whitespace* = {' ', '\t', '\v', '\r', '\l', '\f'}
diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim
index 5755e142a..571c9b13c 100644
--- a/lib/pure/terminal.nim
+++ b/lib/pure/terminal.nim
@@ -67,7 +67,7 @@ when defined(windows):
   import winlean
 
 when defined(nimPreviewSlimSystem):
-  import std/syncio
+  import std/[syncio, assertions]
 
 type
   PTerminal = ref object
diff --git a/lib/pure/times.nim b/lib/pure/times.nim
index 7851bf158..b70c5cedc 100644
--- a/lib/pure/times.nim
+++ b/lib/pure/times.nim
@@ -201,6 +201,10 @@ import strutils, math, options
 import std/private/since
 include "system/inclrtl"
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 when defined(js):
   import jscore
 
diff --git a/lib/pure/typetraits.nim b/lib/pure/typetraits.nim
index 8dc1b8cf2..3fc1c7c5c 100644
--- a/lib/pure/typetraits.nim
+++ b/lib/pure/typetraits.nim
@@ -15,6 +15,10 @@
 import std/private/since
 export system.`$` # for backward compatibility
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 type HoleyEnum* = (not Ordinal) and enum ## Enum with holes.
 type OrdinalEnum* = Ordinal and enum ## Enum without holes.
 
diff --git a/lib/system/assertions.nim b/lib/std/assertions.nim
index 6f64a55b7..3d2112b1a 100644
--- a/lib/system/assertions.nim
+++ b/lib/std/assertions.nim
@@ -1,7 +1,13 @@
-## This module provides various assertion utilities.
-##
-## **Note:** This module is reexported by `system` and thus does not need to be
-## imported directly (with `system/assertions`).
+#
+#
+#            Nim's Runtime Library
+#        (c) Copyright 2022 Nim contributors
+#
+#    See the file "copying.txt", included in this
+#    distribution, for details about the copyright.
+#
+
+## This module implements assertion handling.
 
 when not declared(sysFatal):
   include "system/fatal"
diff --git a/lib/std/enumutils.nim b/lib/std/enumutils.nim
index b7d2b9f89..9d4ff1bcf 100644
--- a/lib/std/enumutils.nim
+++ b/lib/std/enumutils.nim
@@ -10,6 +10,10 @@
 import macros
 from typetraits import OrdinalEnum, HoleyEnum
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 # xxx `genEnumCaseStmt` needs tests and runnableExamples
 
 macro genEnumCaseStmt*(typ: typedesc, argSym: typed, default: typed,
diff --git a/lib/std/jsonutils.nim b/lib/std/jsonutils.nim
index 19384b5d1..722ea49b5 100644
--- a/lib/std/jsonutils.nim
+++ b/lib/std/jsonutils.nim
@@ -34,6 +34,9 @@ import macros
 from enumutils import symbolName
 from typetraits import OrdinalEnum
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 when not defined(nimFixedForwardGeneric):
   # xxx remove pending csources_v1 update >= 1.2.0
   proc to[T](node: JsonNode, t: typedesc[T]): T =
diff --git a/lib/std/packedsets.nim b/lib/std/packedsets.nim
index b2ee917eb..1e2892658 100644
--- a/lib/std/packedsets.nim
+++ b/lib/std/packedsets.nim
@@ -24,6 +24,9 @@
 import std/private/since
 import hashes
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 type
   BitScalar = uint
 
diff --git a/lib/std/private/globs.nim b/lib/std/private/globs.nim
index 190316f93..28a810372 100644
--- a/lib/std/private/globs.nim
+++ b/lib/std/private/globs.nim
@@ -8,6 +8,10 @@ import os
 when defined(windows):
   from strutils import replace
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
+
 when defined(nimHasEffectsOf):
   {.experimental: "strictEffects".}
 else:
diff --git a/lib/std/sha1.nim b/lib/std/sha1.nim
index ed962707b..50175024c 100644
--- a/lib/std/sha1.nim
+++ b/lib/std/sha1.nim
@@ -29,6 +29,9 @@ runnableExamples("-r:off"):
 import strutils
 from endians import bigEndian32, bigEndian64
 
+when defined(nimPreviewSlimSystem):
+  import std/syncio
+
 const Sha1DigestSize = 20
 
 type
diff --git a/lib/system.nim b/lib/system.nim
index 572768de2..4080fee06 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -1830,8 +1830,11 @@ when not defined(nimscript):
 when defined(nimV2):
   include system/arc
 
-import system/assertions
-export assertions
+when not defined(nimPreviewSlimSystem):
+  {.deprecated: """assertions is about to move out of system; use `-d:nimPreviewSlimSystem` and
+                import `std/assertions`.""".}
+  import std/assertions
+  export assertions
 
 import system/iterators
 export iterators
diff --git a/lib/system/dragonbox.nim b/lib/system/dragonbox.nim
index 336c982c1..34ae9e210 100644
--- a/lib/system/dragonbox.nim
+++ b/lib/system/dragonbox.nim
@@ -24,6 +24,8 @@
 
 import std/private/digitsutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
 
 const
   dtoaMinBufferLength*: cint = 64
diff --git a/lib/system/formatfloat.nim b/lib/system/formatfloat.nim
index 3bcd3257b..aada3e1bf 100644
--- a/lib/system/formatfloat.nim
+++ b/lib/system/formatfloat.nim
@@ -7,6 +7,9 @@
 #    distribution, for details about the copyright.
 #
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 proc c_memcpy(a, b: pointer, size: csize_t): pointer {.importc: "memcpy", header: "<string.h>", discardable.}
 
 proc addCstringN(result: var string, buf: cstring; buflen: int) =
diff --git a/lib/system/iterators.nim b/lib/system/iterators.nim
index f23f7aa11..6d33fc0bc 100644
--- a/lib/system/iterators.nim
+++ b/lib/system/iterators.nim
@@ -1,3 +1,6 @@
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 when defined(nimHasLentIterators) and not defined(nimNoLentIterators):
   template lent2(T): untyped = lent T
 else:
diff --git a/lib/system/schubfach.nim b/lib/system/schubfach.nim
index 06813f632..7d6861e35 100644
--- a/lib/system/schubfach.nim
+++ b/lib/system/schubfach.nim
@@ -12,6 +12,9 @@
 
 import std/private/digitsutils
 
+when defined(nimPreviewSlimSystem):
+  import std/assertions
+
 
 template sf_Assert(x: untyped): untyped =
   assert(x)