summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2021-04-21 07:41:33 +0200
committerGitHub <noreply@github.com>2021-04-21 07:41:33 +0200
commita9b62de8956af50424767408bbe30631c63b331b (patch)
tree1bedd3362d89ee8b2d4f0b6552630a2e203ef8f0
parent7bce1f8578eafffacd599401e709de279528e68b (diff)
downloadNim-a9b62de8956af50424767408bbe30631c63b331b.tar.gz
CIs: attempt to use csources_v1 (#16282)
* CIs: attempt to use csources_v1
* also updated the BSDs
* also updated azure pipelines
* std modules should not itself use the 'std/' import dir...
* compiler has to be careful with std/ for v1 booting
-rw-r--r--.builds/freebsd.yml2
-rw-r--r--.builds/openbsd_0.yml2
-rw-r--r--.builds/openbsd_1.yml2
-rw-r--r--.github/workflows/ci_docs.yml4
-rw-r--r--azure-pipelines.yml2
-rw-r--r--ci/build.bat2
-rw-r--r--ci/build.sh2
-rw-r--r--ci/nsis_build.bat2
-rw-r--r--compiler/extccomp.nim2
-rw-r--r--compiler/ic/cbackend.nim6
-rw-r--r--compiler/ic/dce.nim2
-rw-r--r--compiler/ic/ic.nim6
-rw-r--r--compiler/ic/integrity.nim2
-rw-r--r--compiler/ic/navigator.nim2
-rw-r--r--compiler/ic/packed_ast.nim2
-rw-r--r--compiler/int128.nim4
-rw-r--r--compiler/jsgen.nim2
-rw-r--r--compiler/lookups.nim2
-rw-r--r--compiler/modulegraphs.nim2
-rw-r--r--compiler/nilcheck.nim2
-rw-r--r--compiler/nim.nim2
-rw-r--r--compiler/nimpaths.nim2
-rw-r--r--compiler/rodutils.nim2
-rw-r--r--compiler/semdata.nim2
-rw-r--r--compiler/semtypes.nim2
-rw-r--r--compiler/vmdef.nim2
-rw-r--r--compiler/vmgen.nim2
-rw-r--r--compiler/vmops.nim16
-rw-r--r--compiler/wordrecg.nim80
-rw-r--r--lib/pure/cgi.nim2
-rw-r--r--lib/pure/collections/deques.nim2
-rw-r--r--lib/pure/collections/tables.nim2
-rw-r--r--lib/pure/complex.nim2
-rw-r--r--lib/pure/cookies.nim6
-rw-r--r--lib/pure/distros.nim6
-rw-r--r--lib/pure/json.nim7
-rw-r--r--lib/pure/marshal.nim2
-rw-r--r--lib/pure/math.nim2
-rw-r--r--lib/pure/oids.nim2
-rw-r--r--lib/pure/options.nim2
-rw-r--r--lib/pure/os.nim8
-rw-r--r--lib/pure/random.nim4
-rw-r--r--lib/pure/rationals.nim2
-rw-r--r--lib/pure/ropes.nim2
-rw-r--r--lib/pure/stats.nim2
-rw-r--r--lib/pure/strformat.nim4
-rw-r--r--lib/pure/sugar.nim2
-rw-r--r--lib/pure/typetraits.nim2
-rw-r--r--lib/pure/unittest.nim8
-rw-r--r--lib/pure/uri.nim2
-rw-r--r--lib/std/enumutils.nim8
-rw-r--r--lib/std/jsonutils.nim18
-rw-r--r--lib/std/monotimes.nim4
-rw-r--r--lib/std/private/globs.nim2
-rw-r--r--lib/std/setutils.nim2
-rw-r--r--lib/std/sha1.nim4
-rw-r--r--lib/std/sysrand.nim10
-rw-r--r--lib/std/wrapnils.nim4
58 files changed, 142 insertions, 143 deletions
diff --git a/.builds/freebsd.yml b/.builds/freebsd.yml
index 6898a80fd..443be798a 100644
--- a/.builds/freebsd.yml
+++ b/.builds/freebsd.yml
@@ -15,7 +15,7 @@ environment:
 tasks:
 - setup: |
     cd Nim
-    git clone --depth 1 -q https://github.com/nim-lang/csources.git
+    git clone --depth 1 -q https://github.com/nim-lang/csources_v1.git csources
     gmake -C csources -j $(sysctl -n hw.ncpu)
     bin/nim c --skipUserCfg --skipParentCfg koch
     echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
diff --git a/.builds/openbsd_0.yml b/.builds/openbsd_0.yml
index 146ad8165..c09f0f08d 100644
--- a/.builds/openbsd_0.yml
+++ b/.builds/openbsd_0.yml
@@ -18,7 +18,7 @@ environment:
 tasks:
 - setup: |
     cd Nim
-    git clone --depth 1 -q https://github.com/nim-lang/csources.git
+    git clone --depth 1 -q https://github.com/nim-lang/csources_v1.git csources
     gmake -C csources -j $(sysctl -n hw.ncpuonline)
     bin/nim c koch
     echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
diff --git a/.builds/openbsd_1.yml b/.builds/openbsd_1.yml
index ad3734008..ffe449733 100644
--- a/.builds/openbsd_1.yml
+++ b/.builds/openbsd_1.yml
@@ -18,7 +18,7 @@ environment:
 tasks:
 - setup: |
     cd Nim
-    git clone --depth 1 -q https://github.com/nim-lang/csources.git
+    git clone --depth 1 -q https://github.com/nim-lang/csources_v1.git csources
     gmake -C csources -j $(sysctl -n hw.ncpuonline)
     bin/nim c koch
     echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
diff --git a/.github/workflows/ci_docs.yml b/.github/workflows/ci_docs.yml
index 982efe610..c9036d1d4 100644
--- a/.github/workflows/ci_docs.yml
+++ b/.github/workflows/ci_docs.yml
@@ -85,7 +85,7 @@ jobs:
         id: csources-version
         shell: bash
         run: |
-          sha=$(git ls-remote https://github.com/nim-lang/csources master | cut -f 1)
+          sha=$(git ls-remote https://github.com/nim-lang/csources_v1 master | cut -f 1)
           echo "::set-output name=sha::$sha"
 
       - name: 'Get prebuilt csources from cache'
@@ -99,7 +99,7 @@ jobs:
         if: steps.csources-cache.outputs.cache-hit != 'true'
         uses: actions/checkout@v2
         with:
-          repository: nim-lang/csources
+          repository: nim-lang/csources_v1
           path: csources
 
       - name: 'Build 1-stage compiler from csources'
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 55bad609e..5c244648d 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -67,7 +67,7 @@ jobs:
         echo $commitMsg | grep -v '\[skip ci\]' # fails if [skip ci] not in commit msg
       displayName: 'Check whether to skip CI'
 
-    - bash: git clone --depth 1 https://github.com/nim-lang/csources
+    - bash: git clone --depth 1 https://github.com/nim-lang/csources_v1 csources
       displayName: 'Checkout Nim csources'
 
     - task: NodeTool@0
diff --git a/ci/build.bat b/ci/build.bat
index cdce8d3d2..2227168e5 100644
--- a/ci/build.bat
+++ b/ci/build.bat
@@ -2,7 +2,7 @@ REM Some debug info
 echo "Running on %CI_RUNNER_ID% (%CI_RUNNER_DESCRIPTION%) with tags %CI_RUNNER_TAGS%."
 gcc -v
 
-git clone --depth 1 https://github.com/nim-lang/csources.git
+git clone --depth 1 https://github.com/nim-lang/csources_v1.git csources
 cd csources
 call build64.bat
 cd ..
diff --git a/ci/build.sh b/ci/build.sh
index 6321fffba..a89d011ed 100644
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -1,7 +1,7 @@
 sh ci/deps.sh
 
 # Build from C sources.
-git clone --depth 1 https://github.com/nim-lang/csources.git
+git clone --depth 1 https://github.com/nim-lang/csources_v1.git csources
 cd csources
 sh build.sh
 cd ..
diff --git a/ci/nsis_build.bat b/ci/nsis_build.bat
index 4806810d7..12aff1b72 100644
--- a/ci/nsis_build.bat
+++ b/ci/nsis_build.bat
@@ -25,7 +25,7 @@ Rem Build csources
 koch csources -d:release || exit /b
 
 rem Grab C sources and nimsuggest
-git clone --depth 1 https://github.com/nim-lang/csources.git
+git clone --depth 1 https://github.com/nim-lang/csources_v1.git csources
 
 set PATH=%CD%\bin;%PATH%
 
diff --git a/compiler/extccomp.nim b/compiler/extccomp.nim
index 8d1432aa8..71a20fc47 100644
--- a/compiler/extccomp.nim
+++ b/compiler/extccomp.nim
@@ -14,7 +14,7 @@
 
 import ropes, platform, condsyms, options, msgs, lineinfos, pathutils
 
-import std/[os, strutils, osproc, sha1, streams, sequtils, times, strtabs, json]
+import os, strutils, osproc, std/sha1, streams, sequtils, times, strtabs, json
 
 type
   TInfoCCProp* = enum         # properties of the C compiler:
diff --git a/compiler/ic/cbackend.nim b/compiler/ic/cbackend.nim
index c7e5c7266..f5811cb3b 100644
--- a/compiler/ic/cbackend.nim
+++ b/compiler/ic/cbackend.nim
@@ -18,8 +18,8 @@
 ## also doing cross-module dependency tracking and DCE that we don't need
 ## anymore. DCE is now done as prepass over the entire packed module graph.
 
-import std/[packedsets, algorithm, tables]
-  # std/intsets would give `UnusedImport`, pending https://github.com/nim-lang/Nim/issues/14246
+import std/packedsets, algorithm, tables
+
 import ".."/[ast, options, lineinfos, modulegraphs, cgendata, cgen,
   pathutils, extccomp, msgs]
 
@@ -70,7 +70,7 @@ proc addFileToLink(config: ConfigRef; m: PSym) =
     addFileToCompile(config, cf)
 
 when defined(debugDce):
-  import std / [os, packedsets]
+  import os, std/packedsets
 
 proc storeAliveSymsImpl(asymFile: AbsoluteFile; s: seq[int32]) =
   var f = rodfiles.create(asymFile.string)
diff --git a/compiler/ic/dce.nim b/compiler/ic/dce.nim
index 48ed414e2..350b17d1b 100644
--- a/compiler/ic/dce.nim
+++ b/compiler/ic/dce.nim
@@ -9,7 +9,7 @@
 
 ## Dead code elimination (=DCE) for IC.
 
-import std / [intsets, tables]
+import intsets, tables
 import ".." / [ast, options, lineinfos, types]
 
 import packed_ast, ic, bitabs
diff --git a/compiler/ic/ic.nim b/compiler/ic/ic.nim
index d9a8756f1..6530cb6c2 100644
--- a/compiler/ic/ic.nim
+++ b/compiler/ic/ic.nim
@@ -7,12 +7,12 @@
 #    distribution, for details about the copyright.
 #
 
-import std / [hashes, tables, intsets, sha1]
+import hashes, tables, intsets, std/sha1
 import packed_ast, bitabs, rodfiles
 import ".." / [ast, idents, lineinfos, msgs, ropes, options,
   pathutils, condsyms]
 #import ".." / [renderer, astalgo]
-from std / os import removeFile, isAbsolute
+from os import removeFile, isAbsolute
 
 type
   PackedConfig* = object
@@ -143,7 +143,7 @@ const
   debugConfigDiff = defined(debugConfigDiff)
 
 when debugConfigDiff:
-  import std / [hashes, tables, intsets, sha1, strutils, sets]
+  import hashes, tables, intsets, sha1, strutils, sets
 
 proc configIdentical(m: PackedModule; config: ConfigRef): bool =
   result = m.definedSymbols == definedSymbolsAsString(config)
diff --git a/compiler/ic/integrity.nim b/compiler/ic/integrity.nim
index 428c344a3..ed367ef61 100644
--- a/compiler/ic/integrity.nim
+++ b/compiler/ic/integrity.nim
@@ -10,7 +10,7 @@
 ## Integrity checking for a set of .rod files.
 ## The set must cover a complete Nim project.
 
-import std / sets
+import sets
 import ".." / [ast, modulegraphs]
 import packed_ast, bitabs, ic
 
diff --git a/compiler/ic/navigator.nim b/compiler/ic/navigator.nim
index 6af2c2ac0..a1a14885d 100644
--- a/compiler/ic/navigator.nim
+++ b/compiler/ic/navigator.nim
@@ -11,7 +11,7 @@
 ## IDE-like features. It uses the set of .rod files to accomplish
 ## its task. The set must cover a complete Nim project.
 
-import std / sets
+import sets
 
 from os import nil
 from std/private/miscdollars import toLocation
diff --git a/compiler/ic/packed_ast.nim b/compiler/ic/packed_ast.nim
index 2700c8253..6fadde17c 100644
--- a/compiler/ic/packed_ast.nim
+++ b/compiler/ic/packed_ast.nim
@@ -12,7 +12,7 @@
 ## use this representation directly in all the transformations,
 ## it is superior.
 
-import std / [hashes, tables, strtabs]
+import hashes, tables, strtabs
 import bitabs
 import ".." / [ast, options]
 
diff --git a/compiler/int128.nim b/compiler/int128.nim
index 8d3cd7113..6ba7c1961 100644
--- a/compiler/int128.nim
+++ b/compiler/int128.nim
@@ -3,7 +3,7 @@
 ## hold all from `low(BiggestInt)` to `high(BiggestUInt)`, This
 ## type is for that purpose.
 
-from std/math import trunc
+from math import trunc
 
 type
   Int128* = object
@@ -378,7 +378,7 @@ proc `*`*(lhs, rhs: Int128): Int128 =
 proc `*=`*(a: var Int128, b: Int128) =
   a = a * b
 
-import std/bitops
+import bitops
 
 proc fastLog2*(a: Int128): int =
   if a.udata[3] != 0:
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index 350563d6b..e75ff182f 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -35,7 +35,7 @@ import
   cgmeth, lowerings, sighashes, modulegraphs, lineinfos, rodutils,
   transf, injectdestructors, sourcemap
 
-import std/[json, sets, math, tables, intsets, strutils]
+import json, sets, math, tables, intsets, strutils
 
 from modulegraphs import ModuleGraph, PPassContext
 
diff --git a/compiler/lookups.nim b/compiler/lookups.nim
index 7ceadfb96..c4f506a68 100644
--- a/compiler/lookups.nim
+++ b/compiler/lookups.nim
@@ -372,7 +372,7 @@ when false:
     of 'a'..'z': result = getIdent(c.cache, toLowerAscii(x.s[0]) & x.s.substr(1))
     else: result = x
 
-import std/[editdistance, heapqueue]
+import std/editdistance, heapqueue
 
 type SpellCandidate = object
   dist: int
diff --git a/compiler/modulegraphs.nim b/compiler/modulegraphs.nim
index 9df66269b..c268308d2 100644
--- a/compiler/modulegraphs.nim
+++ b/compiler/modulegraphs.nim
@@ -11,7 +11,7 @@
 ## represents a complete Nim project. Single modules can either be kept in RAM
 ## or stored in a rod-file.
 
-import std / [intsets, tables, hashes, md5]
+import intsets, tables, hashes, md5
 import ast, astalgo, options, lineinfos,idents, btrees, ropes, msgs, pathutils
 import ic / [packed_ast, ic]
 
diff --git a/compiler/nilcheck.nim b/compiler/nilcheck.nim
index f3ec893f7..9c2d091f7 100644
--- a/compiler/nilcheck.nim
+++ b/compiler/nilcheck.nim
@@ -8,7 +8,7 @@
 #
 
 import ast, renderer, intsets, tables, msgs, options, lineinfos, strformat, idents, treetab, hashes
-import sequtils, strutils, std / sets
+import sequtils, strutils, sets
 
 # IMPORTANT: notes not up to date, i'll update this comment again
 #
diff --git a/compiler/nim.nim b/compiler/nim.nim
index df06a83a9..f18238f60 100644
--- a/compiler/nim.nim
+++ b/compiler/nim.nim
@@ -24,7 +24,7 @@ import
   idents, lineinfos, cmdlinehelper,
   pathutils, modulegraphs
 
-from std/browsers import openDefaultBrowser
+from browsers import openDefaultBrowser
 from nodejs import findNodeJs
 
 when hasTinyCBackend:
diff --git a/compiler/nimpaths.nim b/compiler/nimpaths.nim
index 71bb9a7d7..a93b488fd 100644
--- a/compiler/nimpaths.nim
+++ b/compiler/nimpaths.nim
@@ -17,7 +17,7 @@ interpolation variables:
 Unstable API
 ]##
 
-import std/[os,strutils]
+import os, strutils
 
 const
   docCss* = "$nimr/doc/nimdoc.css"
diff --git a/compiler/rodutils.nim b/compiler/rodutils.nim
index 353992fca..e13b08e05 100644
--- a/compiler/rodutils.nim
+++ b/compiler/rodutils.nim
@@ -8,7 +8,7 @@
 #
 
 ## Serialization utilities for the compiler.
-import std/[strutils, math]
+import strutils, math
 
 # bcc on windows doesn't have C99 functions
 when defined(windows) and defined(bcc):
diff --git a/compiler/semdata.nim b/compiler/semdata.nim
index 95278893a..9a17efb1c 100644
--- a/compiler/semdata.nim
+++ b/compiler/semdata.nim
@@ -9,7 +9,7 @@
 
 ## This module contains the data structures for the semantic checking phase.
 
-import std / tables
+import tables
 
 import
   intsets, options, ast, astalgo, msgs, idents, renderer,
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim
index 8be210067..c921703b0 100644
--- a/compiler/semtypes.nim
+++ b/compiler/semtypes.nim
@@ -10,7 +10,7 @@
 # this module does the semantic checking of type declarations
 # included from sem.nim
 
-import std/math
+import math
 
 const
   errStringOrIdentNodeExpected = "string or ident node expected"
diff --git a/compiler/vmdef.nim b/compiler/vmdef.nim
index 068ade4b0..0afb2ed6a 100644
--- a/compiler/vmdef.nim
+++ b/compiler/vmdef.nim
@@ -10,7 +10,7 @@
 ## This module contains the type definitions for the new evaluation engine.
 ## An instruction is 1-3 int32s in memory, it is a register based VM.
 
-import std / tables
+import tables
 
 import ast, idents, options, modulegraphs, lineinfos
 
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim
index c60e81020..3a6004e8b 100644
--- a/compiler/vmgen.nim
+++ b/compiler/vmgen.nim
@@ -27,7 +27,7 @@
 # solves the opcLdConst vs opcAsgnConst issue. Of course whether we need
 # this copy depends on the involved types.
 
-import std / tables
+import tables
 
 import
   strutils, ast, types, msgs, renderer, vmdef,
diff --git a/compiler/vmops.nim b/compiler/vmops.nim
index 04356fc76..1d22750e7 100644
--- a/compiler/vmops.nim
+++ b/compiler/vmops.nim
@@ -9,24 +9,24 @@
 
 # Unfortunately this cannot be a module yet:
 #import vmdeps, vm
-from std/math import sqrt, ln, log10, log2, exp, round, arccos, arcsin,
+from math import sqrt, ln, log10, log2, exp, round, arccos, arcsin,
   arctan, arctan2, cos, cosh, hypot, sinh, sin, tan, tanh, pow, trunc,
   floor, ceil, `mod`, cbrt, arcsinh, arccosh, arctanh, erf, erfc, gamma,
   lgamma
 
 when declared(math.copySign):
-  from std/math import copySign
+  from math import copySign
 
 when declared(math.signbit):
-  from std/math import signbit
+  from math import signbit
 
-from std/os import getEnv, existsEnv, dirExists, fileExists, putEnv, walkDir,
+from os import getEnv, existsEnv, dirExists, fileExists, putEnv, walkDir,
                    getAppFilename, raiseOSError, osLastError
 
-from std/md5 import getMD5
-from std/times import cpuTime
-from std/hashes import hash
-from std/osproc import nil
+from md5 import getMD5
+from times import cpuTime
+from hashes import hash
+from osproc import nil
 
 from sighashes import symBodyDigest
 
diff --git a/compiler/wordrecg.nim b/compiler/wordrecg.nim
index 827efcfa0..c3625c5f3 100644
--- a/compiler/wordrecg.nim
+++ b/compiler/wordrecg.nim
@@ -17,58 +17,58 @@ type
   TSpecialWord* = enum
     wInvalid = "",
     wAddr = "addr", wAnd = "and", wAs = "as", wAsm = "asm",
-    wBind = "bind", wBlock = "block", wBreak = "break", wCase = "case", wCast = "cast", 
-    wConcept = "concept", wConst = "const", wContinue = "continue", wConverter = "converter", 
+    wBind = "bind", wBlock = "block", wBreak = "break", wCase = "case", wCast = "cast",
+    wConcept = "concept", wConst = "const", wContinue = "continue", wConverter = "converter",
     wDefer = "defer", wDiscard = "discard", wDistinct = "distinct", wDiv = "div", wDo = "do",
-    wElif = "elif", wElse = "else", wEnd = "end", wEnum = "enum", wExcept = "except", 
-    wExport = "export", wFinally = "finally", wFor = "for", wFrom = "from", wFunc = "func", 
-    wIf = "if", wImport = "import", wIn = "in", wInclude = "include", wInterface = "interface", 
+    wElif = "elif", wElse = "else", wEnd = "end", wEnum = "enum", wExcept = "except",
+    wExport = "export", wFinally = "finally", wFor = "for", wFrom = "from", wFunc = "func",
+    wIf = "if", wImport = "import", wIn = "in", wInclude = "include", wInterface = "interface",
     wIs = "is", wIsnot = "isnot",  wIterator = "iterator", wLet = "let", wMacro = "macro",
-    wMethod = "method", wMixin = "mixin", wMod = "mod", wNil = "nil", wNot = "not", wNotin = "notin", 
-    wObject = "object", wOf = "of", wOr = "or", wOut = "out", wProc = "proc", wPtr = "ptr", 
-    wRaise = "raise", wRef = "ref", wReturn = "return", wShl = "shl", wShr = "shr", wStatic = "static", 
-    wTemplate = "template", wTry = "try", wTuple = "tuple", wType = "type", wUsing = "using", 
+    wMethod = "method", wMixin = "mixin", wMod = "mod", wNil = "nil", wNot = "not", wNotin = "notin",
+    wObject = "object", wOf = "of", wOr = "or", wOut = "out", wProc = "proc", wPtr = "ptr",
+    wRaise = "raise", wRef = "ref", wReturn = "return", wShl = "shl", wShr = "shr", wStatic = "static",
+    wTemplate = "template", wTry = "try", wTuple = "tuple", wType = "type", wUsing = "using",
     wVar = "var", wWhen = "when", wWhile = "while", wXor = "xor", wYield = "yield",
 
     wColon = ":", wColonColon = "::", wEquals = "=", wDot = ".", wDotDot = "..",
     wStar = "*", wMinus = "-",
-    wMagic = "magic", wThread = "thread", wFinal = "final", wProfiler = "profiler", 
+    wMagic = "magic", wThread = "thread", wFinal = "final", wProfiler = "profiler",
     wMemTracker = "memtracker", wObjChecks = "objchecks",
-    wIntDefine = "intdefine", wStrDefine = "strdefine", wBoolDefine = "booldefine", 
+    wIntDefine = "intdefine", wStrDefine = "strdefine", wBoolDefine = "booldefine",
     wCursor = "cursor", wNoalias = "noalias",
 
-    wImmediate = "immediate", wConstructor = "constructor", wDestructor = "destructor", 
+    wImmediate = "immediate", wConstructor = "constructor", wDestructor = "destructor",
     wDelegator = "delegator", wOverride = "override", wImportCpp = "importcpp",
-    wCppNonPod = "cppNonPod", 
+    wCppNonPod = "cppNonPod",
     wImportObjC = "importobjc", wImportCompilerProc = "importcompilerproc",
-    wImportc = "importc", wImportJs = "importjs", wExportc = "exportc", wExportCpp = "exportcpp", 
+    wImportc = "importc", wImportJs = "importjs", wExportc = "exportc", wExportCpp = "exportcpp",
     wExportNims = "exportnims",
     wIncompleteStruct = "incompleteStruct", # deprecated
     wCompleteStruct = "completeStruct", wRequiresInit = "requiresInit", wAlign = "align",
     wNodecl = "nodecl", wPure = "pure", wSideEffect = "sideEffect", wHeader = "header",
     wNoSideEffect = "noSideEffect", wGcSafe = "gcsafe", wNoreturn = "noreturn",
     wNosinks = "nosinks", wMerge = "merge", wLib = "lib", wDynlib = "dynlib",
-    wCompilerProc = "compilerproc", wCore = "core", wProcVar = "procvar", 
-    wBase = "base", wUsed = "used", wFatal = "fatal", wError = "error", wWarning = "warning", 
+    wCompilerProc = "compilerproc", wCore = "core", wProcVar = "procvar",
+    wBase = "base", wUsed = "used", wFatal = "fatal", wError = "error", wWarning = "warning",
     wHint = "hint",
     wWarningAsError = "warningAsError",
     wHintAsError = "hintAsError",
     wLine = "line", wPush = "push",
-    wPop = "pop", wDefine = "define", wUndef = "undef", wLineDir = "lineDir", 
+    wPop = "pop", wDefine = "define", wUndef = "undef", wLineDir = "lineDir",
     wStackTrace = "stackTrace", wLineTrace = "lineTrace", wLink = "link", wCompile = "compile",
-    wLinksys = "linksys", wDeprecated = "deprecated", wVarargs = "varargs", wCallconv = "callconv", 
-    wDebugger = "debugger", wNimcall = "nimcall", wStdcall = "stdcall", wCdecl = "cdecl", 
+    wLinksys = "linksys", wDeprecated = "deprecated", wVarargs = "varargs", wCallconv = "callconv",
+    wDebugger = "debugger", wNimcall = "nimcall", wStdcall = "stdcall", wCdecl = "cdecl",
     wSafecall = "safecall", wSyscall = "syscall", wInline = "inline", wNoInline = "noinline",
     wFastcall = "fastcall", wThiscall = "thiscall", wClosure = "closure", wNoconv = "noconv",
-    wOn = "on", wOff = "off", wChecks = "checks", wRangeChecks = "rangeChecks", 
+    wOn = "on", wOff = "off", wChecks = "checks", wRangeChecks = "rangeChecks",
     wBoundChecks = "boundChecks", wOverflowChecks = "overflowChecks", wNilChecks = "nilChecks",
-    wFloatChecks = "floatChecks", wNanChecks = "nanChecks", wInfChecks = "infChecks", 
+    wFloatChecks = "floatChecks", wNanChecks = "nanChecks", wInfChecks = "infChecks",
     wStyleChecks = "styleChecks", wStaticBoundchecks = "staticBoundChecks",
     wNonReloadable = "nonReloadable", wExecuteOnReload = "executeOnReload",
 
-    wAssertions = "assertions", wPatterns = "patterns", wTrMacros = "trmacros", 
+    wAssertions = "assertions", wPatterns = "patterns", wTrMacros = "trmacros",
     wSinkInference = "sinkInference", wWarnings = "warnings",
-    wHints = "hints", wOptimization = "optimization", wRaises = "raises", 
+    wHints = "hints", wOptimization = "optimization", wRaises = "raises",
     wWrites = "writes", wReads = "reads", wSize = "size", wEffects = "effects", wTags = "tags",
     wRequires = "requires", wEnsures = "ensures", wInvariant = "invariant",
     wAssume = "assume", wAssert = "assert",
@@ -76,34 +76,34 @@ type
     wSafecode = "safecode", wPackage = "package", wNoForward = "noforward", wReorder = "reorder",
     wNoRewrite = "norewrite", wNoDestroy = "nodestroy", wPragma = "pragma",
     wCompileTime = "compileTime", wNoInit = "noinit", wPassc = "passc", wPassl = "passl",
-    wLocalPassc = "localPassC", wBorrow = "borrow", wDiscardable = "discardable", 
+    wLocalPassc = "localPassC", wBorrow = "borrow", wDiscardable = "discardable",
     wFieldChecks = "fieldChecks", wSubsChar = "subschar", wAcyclic = "acyclic",
     wShallow = "shallow", wUnroll = "unroll", wLinearScanEnd = "linearScanEnd",
     wComputedGoto = "computedGoto", wInjectStmt = "injectStmt", wExperimental = "experimental",
-    wWrite = "write", wGensym = "gensym", wInject = "inject", wDirty = "dirty", 
+    wWrite = "write", wGensym = "gensym", wInject = "inject", wDirty = "dirty",
     wInheritable = "inheritable", wThreadVar = "threadvar", wEmit = "emit",
     wAsmNoStackFrame = "asmNoStackFrame", wImplicitStatic = "implicitStatic",
     wGlobal = "global", wCodegenDecl = "codegenDecl", wUnchecked = "unchecked",
     wGuard = "guard", wLocks = "locks", wPartial = "partial", wExplain = "explain",
     wLiftLocals = "liftlocals",
 
-    wAuto = "auto", wBool = "bool", wCatch = "catch", wChar = "char", 
-    wClass = "class", wCompl = "compl", wConst_cast = "const_cast", wDefault = "default", 
-    wDelete = "delete", wDouble = "double", wDynamic_cast = "dynamic_cast", 
+    wAuto = "auto", wBool = "bool", wCatch = "catch", wChar = "char",
+    wClass = "class", wCompl = "compl", wConst_cast = "const_cast", wDefault = "default",
+    wDelete = "delete", wDouble = "double", wDynamic_cast = "dynamic_cast",
     wExplicit = "explicit", wExtern = "extern", wFalse = "false", wFloat = "float",
-    wFriend = "friend", wGoto = "goto", wInt = "int", wLong = "long", wMutable = "mutable", 
-    wNamespace = "namespace", wNew = "new", wOperator = "operator", wPrivate = "private", 
-    wProtected = "protected", wPublic = "public", wRegister = "register", 
-    wReinterpret_cast = "reinterpret_cast", wRestrict = "restrict", wShort = "short", 
-    wSigned = "signed", wSizeof = "sizeof", wStatic_cast = "static_cast", wStruct = "struct", 
-    wSwitch = "switch", wThis = "this", wThrow = "throw", wTrue = "true", wTypedef = "typedef", 
+    wFriend = "friend", wGoto = "goto", wInt = "int", wLong = "long", wMutable = "mutable",
+    wNamespace = "namespace", wNew = "new", wOperator = "operator", wPrivate = "private",
+    wProtected = "protected", wPublic = "public", wRegister = "register",
+    wReinterpret_cast = "reinterpret_cast", wRestrict = "restrict", wShort = "short",
+    wSigned = "signed", wSizeof = "sizeof", wStatic_cast = "static_cast", wStruct = "struct",
+    wSwitch = "switch", wThis = "this", wThrow = "throw", wTrue = "true", wTypedef = "typedef",
     wTypeid = "typeid", wTypeof = "typeof",  wTypename = "typename",
-    wUnion = "union", wPacked = "packed", wUnsigned = "unsigned", wVirtual = "virtual", 
+    wUnion = "union", wPacked = "packed", wUnsigned = "unsigned", wVirtual = "virtual",
     wVoid = "void", wVolatile = "volatile", wWchar_t = "wchar_t",
 
-    wAlignas = "alignas", wAlignof = "alignof", wConstexpr = "constexpr", wDecltype = "decltype", 
+    wAlignas = "alignas", wAlignof = "alignof", wConstexpr = "constexpr", wDecltype = "decltype",
     wNullptr = "nullptr", wNoexcept = "noexcept",
-    wThread_local = "thread_local", wStatic_assert = "static_assert", 
+    wThread_local = "thread_local", wStatic_assert = "static_assert",
     wChar16_t = "char16_t", wChar32_t = "char32_t",
 
     wStdIn = "stdin", wStdOut = "stdout", wStdErr = "stderr",
@@ -134,14 +134,14 @@ const enumUtilsExist = compiles:
 when enumUtilsExist:
   from std/enumutils import genEnumCaseStmt
   from strutils import normalize
-  proc findStr*[T: enum](a, b: static[T], s: string, default: T): T =  
+  proc findStr*[T: enum](a, b: static[T], s: string, default: T): T =
     genEnumCaseStmt(T, s, default, ord(a), ord(b), normalize)
 
 else:
   from strutils import cmpIgnoreStyle
-  proc findStr*[T: enum](a, b: static[T], s: string, default: T): T {.deprecated.} =  
+  proc findStr*[T: enum](a, b: static[T], s: string, default: T): T {.deprecated.} =
     # used for compiler bootstrapping only
     for i in a..b:
       if cmpIgnoreStyle($i, s) == 0:
         return i
-    result = default 
\ No newline at end of file
+    result = default
\ No newline at end of file
diff --git a/lib/pure/cgi.nim b/lib/pure/cgi.nim
index fd5089dbb..566482b21 100644
--- a/lib/pure/cgi.nim
+++ b/lib/pure/cgi.nim
@@ -29,7 +29,7 @@
 ##    writeLine(stdout, "your password: " & myData["password"])
 ##    writeLine(stdout, "</body></html>")
 
-import std/[strutils, os, strtabs, cookies, uri]
+import strutils, os, strtabs, cookies, uri
 export uri.encodeUrl, uri.decodeUrl
 
 
diff --git a/lib/pure/collections/deques.nim b/lib/pure/collections/deques.nim
index 582bb02a7..c378dff1d 100644
--- a/lib/pure/collections/deques.nim
+++ b/lib/pure/collections/deques.nim
@@ -50,7 +50,7 @@ runnableExamples:
 
 import std/private/since
 
-import std/math
+import math
 
 type
   Deque*[T] = object
diff --git a/lib/pure/collections/tables.nim b/lib/pure/collections/tables.nim
index 9387807c0..8739b60a3 100644
--- a/lib/pure/collections/tables.nim
+++ b/lib/pure/collections/tables.nim
@@ -196,7 +196,7 @@ runnableExamples:
 
 
 import std/private/since
-import std/[hashes, math, algorithm]
+import hashes, math, algorithm
 
 type
   KeyValuePair[A, B] = tuple[hcode: Hash, key: A, val: B]
diff --git a/lib/pure/complex.nim b/lib/pure/complex.nim
index b9371c1e1..5492028a8 100644
--- a/lib/pure/complex.nim
+++ b/lib/pure/complex.nim
@@ -36,7 +36,7 @@ runnableExamples:
 {.push checks: off, line_dir: off, stack_trace: off, debugger: off.}
 # the user does not want to trace a part of the standard library!
 
-import std/math
+import math
 
 type
   Complex*[T: SomeFloat] = object
diff --git a/lib/pure/cookies.nim b/lib/pure/cookies.nim
index 8d9cc0c95..25d701eb4 100644
--- a/lib/pure/cookies.nim
+++ b/lib/pure/cookies.nim
@@ -9,7 +9,7 @@
 
 ## This module implements helper procs for parsing Cookies.
 
-import std/[strtabs, times, options]
+import strtabs, times, options
 
 
 type
@@ -25,7 +25,7 @@ proc parseCookies*(s: string): StringTableRef =
   ## "Set-Cookie" header set by servers.
   runnableExamples:
     import std/strtabs
-    let cookieJar = parseCookies("a=1; foo=bar") 
+    let cookieJar = parseCookies("a=1; foo=bar")
     assert cookieJar["a"] == "1"
     assert cookieJar["foo"] == "bar"
 
@@ -46,7 +46,7 @@ proc parseCookies*(s: string): StringTableRef =
 
 proc setCookie*(key, value: string, domain = "", path = "",
                 expires = "", noName = false,
-                secure = false, httpOnly = false, 
+                secure = false, httpOnly = false,
                 maxAge = none(int), sameSite = SameSite.Default): string =
   ## Creates a command in the format of
   ## `Set-Cookie: key=value; Domain=...; ...`
diff --git a/lib/pure/distros.nim b/lib/pure/distros.nim
index 2b119b92c..c1bc44eeb 100644
--- a/lib/pure/distros.nim
+++ b/lib/pure/distros.nim
@@ -27,11 +27,11 @@
 ##
 ## See `packaging <packaging.html>`_ for hints on distributing Nim using OS packages.
 
-from std/strutils import contains, toLowerAscii
+from strutils import contains, toLowerAscii
 
 when not defined(nimscript):
-  from std/osproc import execProcess
-  from std/os import existsEnv
+  from osproc import execProcess
+  from os import existsEnv
 
 type
   Distribution* {.pure.} = enum ## the list of known distributions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim
index 7ee5be9c5..96ee61fd5 100644
--- a/lib/pure/json.nim
+++ b/lib/pure/json.nim
@@ -159,10 +159,9 @@ runnableExamples:
     a1, a2, a0, a3, a4: int
   doAssert $(%* Foo()) == """{"a1":0,"a2":0,"a0":0,"a3":0,"a4":0}"""
 
-import
-  std/[hashes, tables, strutils, lexbase, streams, macros, parsejson]
+import hashes, tables, strutils, lexbase, streams, macros, parsejson
 
-import std/options # xxx remove this dependency using same approach as https://github.com/nim-lang/Nim/pull/14563
+import options # xxx remove this dependency using same approach as https://github.com/nim-lang/Nim/pull/14563
 import std/private/since
 
 export
@@ -921,7 +920,7 @@ proc parseJson*(s: Stream, filename: string = ""; rawIntegers = false, rawFloats
     p.close()
 
 when defined(js):
-  from std/math import `mod`
+  from math import `mod`
   from std/jsffi import JSObject, `[]`, to
   from std/private/jsutils import getProtoName, isInteger, isSafeInteger
 
diff --git a/lib/pure/marshal.nim b/lib/pure/marshal.nim
index 936b8fe94..993e0f510 100644
--- a/lib/pure/marshal.nim
+++ b/lib/pure/marshal.nim
@@ -54,7 +54,7 @@ Please use alternative packages for serialization.
 It is possible to reimplement this module using generics and type traits.
 Please contribute a new implementation.""".}
 
-import std/[streams, typeinfo, json, intsets, tables, unicode]
+import streams, typeinfo, json, intsets, tables, unicode
 
 proc ptrToInt(x: pointer): int {.inline.} =
   result = cast[int](x) # don't skip alignment
diff --git a/lib/pure/math.nim b/lib/pure/math.nim
index 03e5040ae..cff946581 100644
--- a/lib/pure/math.nim
+++ b/lib/pure/math.nim
@@ -58,7 +58,7 @@ import std/private/since
 {.push debugger: off.} # the user does not want to trace a part
                        # of the standard library!
 
-import std/[bitops, fenv]
+import bitops, fenv
 
 when defined(c) or defined(cpp):
   proc c_isnan(x: float): bool {.importc: "isnan", header: "<math.h>".}
diff --git a/lib/pure/oids.nim b/lib/pure/oids.nim
index fb70047b6..da285a187 100644
--- a/lib/pure/oids.nim
+++ b/lib/pure/oids.nim
@@ -15,7 +15,7 @@
 ## This implementation calls `initRand()` for the first call of
 ## `genOid`.
 
-import std/[hashes, times, endians, random]
+import hashes, times, endians, random
 from std/private/decode_helpers import handleHexChar
 
 type
diff --git a/lib/pure/options.nim b/lib/pure/options.nim
index 63e3598f0..bd5aa389e 100644
--- a/lib/pure/options.nim
+++ b/lib/pure/options.nim
@@ -69,7 +69,7 @@ supports pattern matching on `Option`s, with the `Some(<pattern>)` and
 # xxx pending https://github.com/timotheecour/Nim/issues/376 use `runnableExamples` and `whichModule`
 
 
-import std/typetraits
+import typetraits
 
 when (NimMajor, NimMinor) >= (1, 1):
   type
diff --git a/lib/pure/os.nim b/lib/pure/os.nim
index 0710b8333..50a88b43b 100644
--- a/lib/pure/os.nim
+++ b/lib/pure/os.nim
@@ -44,7 +44,7 @@
 include system/inclrtl
 import std/private/since
 
-import std/[strutils, pathnorm]
+import strutils, pathnorm
 
 const weirdTarget = defined(nimscript) or defined(js)
 
@@ -65,9 +65,9 @@ since (1, 1):
 when weirdTarget:
   discard
 elif defined(windows):
-  import std/[winlean, times]
+  import winlean, times
 elif defined(posix):
-  import std/[posix, times]
+  import posix, times
 
   proc toTime(ts: Timespec): times.Time {.inline.} =
     result = initTime(ts.tv_sec.int64, ts.tv_nsec.int)
@@ -1008,7 +1008,7 @@ proc expandTilde*(path: string): string {.
   ##
   ## Windows: this is still supported despite Windows platform not having this
   ## convention; also, both ``~/`` and ``~\`` are handled.
-  ## 
+  ##
   ## .. warning:: `~bob` and `~bob/` are not yet handled correctly.
   ##
   ## See also:
diff --git a/lib/pure/random.nim b/lib/pure/random.nim
index f91d92731..e58623baa 100644
--- a/lib/pure/random.nim
+++ b/lib/pure/random.nim
@@ -72,7 +72,7 @@ runnableExamples:
 ## * `list of cryptographic and hashing modules <lib.html#pure-libraries-hashing>`_
 ##   in the standard library
 
-import std/[algorithm, math]
+import algorithm, math
 import std/private/since
 
 include system/inclrtl
@@ -625,7 +625,7 @@ proc shuffle*[T](x: var openArray[T]) =
   shuffle(state, x)
 
 when not defined(nimscript) and not defined(standalone):
-  import std/times
+  import times
 
   proc initRand(): Rand =
     ## Initializes a new Rand state with a seed based on the current time.
diff --git a/lib/pure/rationals.nim b/lib/pure/rationals.nim
index a059651bb..800979cda 100644
--- a/lib/pure/rationals.nim
+++ b/lib/pure/rationals.nim
@@ -21,7 +21,7 @@ runnableExamples:
   doAssert r1 * r2 == -3 // 8
   doAssert r1 / r2 == -2 // 3
 
-import std/[math, hashes]
+import math, hashes
 
 type Rational*[T] = object
   ## A rational number, consisting of a numerator `num` and a denominator `den`.
diff --git a/lib/pure/ropes.nim b/lib/pure/ropes.nim
index 42550af1d..1300b4479 100644
--- a/lib/pure/ropes.nim
+++ b/lib/pure/ropes.nim
@@ -17,7 +17,7 @@
 ## runtime efficiency.
 
 include system/inclrtl
-import std/streams
+import streams
 
 {.push debugger: off.} # the user does not want to trace a part
                        # of the standard library!
diff --git a/lib/pure/stats.nim b/lib/pure/stats.nim
index 6e2d5fecd..e46dff212 100644
--- a/lib/pure/stats.nim
+++ b/lib/pure/stats.nim
@@ -53,7 +53,7 @@ runnableExamples:
   doAssert statistics.kurtosis() ~= -1.0
   doAssert statistics.kurtosisS() ~= -0.7000000000000008
 
-from std/math import FloatClass, sqrt, pow, round
+from math import FloatClass, sqrt, pow, round
 
 {.push debugger: off.} # the user does not want to trace a part
                        # of the standard library!
diff --git a/lib/pure/strformat.nim b/lib/pure/strformat.nim
index 736b4d501..52731e970 100644
--- a/lib/pure/strformat.nim
+++ b/lib/pure/strformat.nim
@@ -313,8 +313,8 @@ help with readability, since there is only so much you can cram into
 single letter DSLs.
 ]##
 
-import std/[macros, parseutils, unicode]
-import std/strutils except format
+import macros, parseutils, unicode
+import strutils except format
 
 proc mkDigit(v: int, typ: char): string {.inline.} =
   assert(v < 26)
diff --git a/lib/pure/sugar.nim b/lib/pure/sugar.nim
index 239ed9cf1..9abef55a2 100644
--- a/lib/pure/sugar.nim
+++ b/lib/pure/sugar.nim
@@ -11,7 +11,7 @@
 ## macro system.
 
 import std/private/since
-import std/macros
+import macros
 
 proc checkPragma(ex, prag: var NimNode) =
   since (1, 3):
diff --git a/lib/pure/typetraits.nim b/lib/pure/typetraits.nim
index 2527dc26e..3e215a0ea 100644
--- a/lib/pure/typetraits.nim
+++ b/lib/pure/typetraits.nim
@@ -167,7 +167,7 @@ since (1, 3, 5):
 
     typeof(block: (for ai in a: ai))
 
-import std/macros
+import macros
 
 macro enumLen*(T: typedesc[enum]): int =
   ## Returns the number of items in the enum `T`.
diff --git a/lib/pure/unittest.nim b/lib/pure/unittest.nim
index 3cff833e4..80a05db36 100644
--- a/lib/pure/unittest.nim
+++ b/lib/pure/unittest.nim
@@ -108,15 +108,15 @@
 import std/private/since
 import std/exitprocs
 
-import std/[macros, strutils, streams, times, sets, sequtils]
+import macros, strutils, streams, times, sets, sequtils
 
 when declared(stdout):
-  import std/os
+  import os
 
 const useTerminal = not defined(js)
 
 when useTerminal:
-  import std/terminal
+  import terminal
 
 type
   TestStatus* = enum ## The status of a test when it is done.
@@ -747,7 +747,7 @@ macro expect*(exceptions: varargs[typed], body: untyped): untyped =
       of 2: discard parseInt("Hello World!")
       of 3: raise newException(IOError, "I can't do that Dave.")
       else: assert 2 + 2 == 5
-    
+
     expect IOError, OSError, ValueError, AssertionDefect:
       defectiveRobot()
 
diff --git a/lib/pure/uri.nim b/lib/pure/uri.nim
index d2a9f3848..cf712fa89 100644
--- a/lib/pure/uri.nim
+++ b/lib/pure/uri.nim
@@ -39,7 +39,7 @@ runnableExamples:
   doAssert getDataUri("Nim", "text/plain") == "data:text/plain;charset=utf-8;base64,Tmlt"
 
 
-import std/[strutils, parseutils, base64]
+import strutils, parseutils, base64
 import std/private/[since, decode_helpers]
 
 
diff --git a/lib/std/enumutils.nim b/lib/std/enumutils.nim
index 16dab9d1a..6195ae07d 100644
--- a/lib/std/enumutils.nim
+++ b/lib/std/enumutils.nim
@@ -7,16 +7,16 @@
 #    distribution, for details about the copyright.
 #
 
-import std/macros
-from std/typetraits import OrdinalEnum, HoleyEnum
+import macros
+from typetraits import OrdinalEnum, HoleyEnum
 
 # xxx `genEnumCaseStmt` needs tests and runnableExamples
 
-macro genEnumCaseStmt*(typ: typedesc, argSym: typed, default: typed, 
+macro genEnumCaseStmt*(typ: typedesc, argSym: typed, default: typed,
             userMin, userMax: static[int], normalizer: static[proc(s :string): string]): untyped =
   # generates a case stmt, which assigns the correct enum field given
   # a normalized string comparison to the `argSym` input.
-  # string normalization is done using passed normalizer. 
+  # string normalization is done using passed normalizer.
   # NOTE: for an enum with fields Foo, Bar, ... we cannot generate
   # `of "Foo".nimIdentNormalize: Foo`.
   # This will fail, if the enum is not defined at top level (e.g. in a block).
diff --git a/lib/std/jsonutils.nim b/lib/std/jsonutils.nim
index a5daa9fb4..4c27bc9f2 100644
--- a/lib/std/jsonutils.nim
+++ b/lib/std/jsonutils.nim
@@ -13,7 +13,7 @@ runnableExamples:
   let j = a.toJson
   assert j.jsonTo(typeof(a)).toJson == j
 
-import std/[json,strutils,tables,sets,strtabs,options]
+import json, strutils, tables, sets, strtabs, options
 
 #[
 Future directions:
@@ -27,7 +27,7 @@ add a way to customize serialization, for e.g.:
   objects.
 ]#
 
-import std/macros
+import macros
 
 type
   Joptions* = object
@@ -106,7 +106,7 @@ proc hasField[T](obj: T, field: string): bool =
       return true
   return false
 
-macro accessField(obj: typed, name: static string): untyped = 
+macro accessField(obj: typed, name: static string): untyped =
   newDotExpr(obj, ident(name))
 
 template fromJsonFields(newObj, oldObj, json, discKeys, opt) =
@@ -146,7 +146,7 @@ template fromJsonFields(newObj, oldObj, json, discKeys, opt) =
       json.len == numMatched
     else:
       json.len == num and num == numMatched
-  
+
   checkJson ok, $(json.len, num, numMatched, $T, json)
 
 proc fromJson*[T](a: var T, b: JsonNode, opt = Joptions())
@@ -284,7 +284,7 @@ proc toJson*[T](a: T): JsonNode =
 proc fromJsonHook*[K: string|cstring, V](t: var (Table[K, V] | OrderedTable[K, V]),
                          jsonNode: JsonNode) =
   ## Enables `fromJson` for `Table` and `OrderedTable` types.
-  ## 
+  ##
   ## See also:
   ## * `toJsonHook proc<#toJsonHook>`_
   runnableExamples:
@@ -326,7 +326,7 @@ proc toJsonHook*[K: string|cstring, V](t: (Table[K, V] | OrderedTable[K, V])): J
 
 proc fromJsonHook*[A](s: var SomeSet[A], jsonNode: JsonNode) =
   ## Enables `fromJson` for `HashSet` and `OrderedSet` types.
-  ## 
+  ##
   ## See also:
   ## * `toJsonHook proc<#toJsonHook,SomeSet[A]>`_
   runnableExamples:
@@ -360,7 +360,7 @@ proc toJsonHook*[A](s: SomeSet[A]): JsonNode =
 
 proc fromJsonHook*[T](self: var Option[T], jsonNode: JsonNode) =
   ## Enables `fromJson` for `Option` types.
-  ## 
+  ##
   ## See also:
   ## * `toJsonHook proc<#toJsonHook,Option[T]>`_
   runnableExamples:
@@ -395,7 +395,7 @@ proc toJsonHook*[T](self: Option[T]): JsonNode =
 
 proc fromJsonHook*(a: var StringTableRef, b: JsonNode) =
   ## Enables `fromJson` for `StringTableRef` type.
-  ## 
+  ##
   ## See also:
   ## * `toJsonHook proc<#toJsonHook,StringTableRef>`_
   runnableExamples:
@@ -413,7 +413,7 @@ proc fromJsonHook*(a: var StringTableRef, b: JsonNode) =
 
 proc toJsonHook*(a: StringTableRef): JsonNode =
   ## Enables `toJson` for `StringTableRef` type.
-  ## 
+  ##
   ## See also:
   ## * `fromJsonHook proc<#fromJsonHook,StringTableRef,JsonNode>`_
   runnableExamples:
diff --git a/lib/std/monotimes.nim b/lib/std/monotimes.nim
index 78736d719..8f6aa5b66 100644
--- a/lib/std/monotimes.nim
+++ b/lib/std/monotimes.nim
@@ -39,7 +39,7 @@ See also
 * `times module <times.html>`_
 ]##
 
-import std/times
+import times
 
 type
   MonoTime* = object ## Represents a monotonic timestamp.
@@ -77,7 +77,7 @@ when defined(js):
   {.pop.}
 
 elif defined(posix) and not defined(osx):
-  import std/posix
+  import posix
 
 elif defined(windows):
   proc QueryPerformanceCounter(res: var uint64) {.
diff --git a/lib/std/private/globs.nim b/lib/std/private/globs.nim
index b98a7808b..a32f1d1b9 100644
--- a/lib/std/private/globs.nim
+++ b/lib/std/private/globs.nim
@@ -4,7 +4,7 @@ this can eventually be moved to std/os and `walkDirRec` can be implemented in te
 to avoid duplication
 ]##
 
-import std/[os]
+import os
 when defined(windows):
   from strutils import replace
 
diff --git a/lib/std/setutils.nim b/lib/std/setutils.nim
index c7fac0a54..aba5f348a 100644
--- a/lib/std/setutils.nim
+++ b/lib/std/setutils.nim
@@ -14,7 +14,7 @@
 ## * `std/packedsets <packedsets.html>`_
 ## * `std/sets <sets.html>`_
 
-import std/[typetraits, macros]
+import typetraits, macros
 
 #[
   type SetElement* = char|byte|bool|int16|uint16|enum|uint8|int8
diff --git a/lib/std/sha1.nim b/lib/std/sha1.nim
index 9c5efed1f..bda0c6de7 100644
--- a/lib/std/sha1.nim
+++ b/lib/std/sha1.nim
@@ -26,8 +26,8 @@ runnableExamples("-r:off"):
     b = parseSecureHash("10DFAEBF6BFDBC7939957068E2EFACEC4972933C")
   assert a == b, "files don't match"
 
-import std/strutils
-from std/endians import bigEndian32, bigEndian64
+import strutils
+from endians import bigEndian32, bigEndian64
 
 const Sha1DigestSize = 20
 
diff --git a/lib/std/sysrand.nim b/lib/std/sysrand.nim
index 4a2cdd10b..4c51577ac 100644
--- a/lib/std/sysrand.nim
+++ b/lib/std/sysrand.nim
@@ -10,7 +10,7 @@
 ## .. warning:: This module was added in Nim 1.6. If you are using it for cryptographic purposes,
 ##   keep in mind that so far this has not been audited by any security professionals,
 ##   therefore may not be secure.
-## 
+##
 ## `std/sysrand` generates random numbers from a secure source provided by the operating system.
 ## It is a cryptographically secure pseudorandom number generator
 ## and should be unpredictable enough for cryptographic applications,
@@ -52,10 +52,10 @@ runnableExamples:
 
 
 when not defined(js):
-  import std/os
+  import os
 
 when defined(posix):
-  import std/posix
+  import posix
 
 const
   batchImplOS = defined(freebsd) or defined(openbsd) or (defined(macosx) and not defined(ios))
@@ -243,7 +243,7 @@ elif defined(macosx):
 """
 
   proc getentropy(p: pointer, size: csize_t): cint {.importc: "getentropy", header: sysrandomHeader.}
-    # getentropy() fills a buffer with random data, which can be used as input 
+    # getentropy() fills a buffer with random data, which can be used as input
     # for process-context pseudorandom generators like arc4random(3).
     # The maximum buffer size permitted is 256 bytes.
 
@@ -310,7 +310,7 @@ proc urandom*(dest: var openArray[byte]): bool =
 
 proc urandom*(size: Natural): seq[byte] {.inline.} =
   ## Returns random bytes suitable for cryptographic use.
-  ## 
+  ##
   ## .. warning:: The code hasn't been audited by cryptography experts and
   ##   is provided as-is without guarantees. Use at your own risks. For production
   ##   systems we advise you to request an external audit.
diff --git a/lib/std/wrapnils.nim b/lib/std/wrapnils.nim
index 3ff48fbfe..708faf4cf 100644
--- a/lib/std/wrapnils.nim
+++ b/lib/std/wrapnils.nim
@@ -24,7 +24,7 @@ runnableExamples:
 
   assert (?.f2.x2.x2).x3 == nil  # this terminates ?. early
 
-from std/options import Option, isSome, get, option, unsafeGet, UnpackDefect
+from options import Option, isSome, get, option, unsafeGet, UnpackDefect
 export options.get, options.isSome, options.isNone
 
 template fakeDot*(a: Option, b): untyped =
@@ -59,7 +59,7 @@ func `[]`*[U](a: Option[U]): auto {.inline.} =
     if a2 != nil:
       result = option(a2[])
 
-import std/macros
+import macros
 
 func replace(n: NimNode): NimNode =
   if n.kind == nnkDotExpr: