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
This commit is contained in:
Andreas Rumpf
2021-04-21 07:41:33 +02:00
committed by GitHub
parent 7bce1f8578
commit a9b62de895
58 changed files with 142 additions and 143 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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'

View File

@@ -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

View File

@@ -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 ..

View File

@@ -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 ..

View File

@@ -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%

View File

@@ -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:

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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
#

View File

@@ -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:

View File

@@ -17,7 +17,7 @@ interpolation variables:
Unstable API
]##
import std/[os,strutils]
import os, strutils
const
docCss* = "$nimr/doc/nimdoc.css"

View File

@@ -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):

View File

@@ -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,

View File

@@ -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"

View File

@@ -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

View File

@@ -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,

View File

@@ -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

View File

@@ -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
result = default

View File

@@ -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

View File

@@ -50,7 +50,7 @@ runnableExamples:
import std/private/since
import std/math
import math
type
Deque*[T] = object

View File

@@ -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]

View File

@@ -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

View File

@@ -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=...; ...`

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>".}

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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.

View File

@@ -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`.

View File

@@ -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!

View File

@@ -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!

View File

@@ -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)

View File

@@ -11,7 +11,7 @@
## macro system.
import std/private/since
import std/macros
import macros
proc checkPragma(ex, prag: var NimNode) =
since (1, 3):

View File

@@ -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`.

View File

@@ -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()

View File

@@ -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]

View File

@@ -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).

View File

@@ -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:

View File

@@ -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) {.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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: