The isLower
, isUpper
family of procs in strutils/unicode
operating on strings have been
deprecated since it was unclear what these do. Note that the much more
useful procs that operator on char
or Rune
are not affected.
strutils.editDistance
has been deprecated,
use editdistance.editDistance
or editdistance.editDistanceAscii
instead.
The OpenMP parallel iterator `||
` now supports any #pragma omp directives
and not just #pragma omp parallel for
. See
OpenMP documentation.
The default annotation is parallel for
, if you used OpenMP without annotation
the change is transparent, if you used annotations you will have to prefix
your previous annotations with parallel for
.
unchecked
pragma was removed, instead use system.UncheckedArray
.#? strongSpaces
parsing mode has been removed.not
operator is now always a unary operator, this means that code like
assert not isFalse(3)
compiles.osproc.execProcess
now also takes a workingDir
parameter.
options.UnpackError
is no longer a ref type and inherits from System.Defect
instead of System.ValueError
.
nre's RegexMatch.{captureBounds,captures}[]
no longer return Option
or
nil
/""
, respectivly. Use the newly added n in p.captures
method to
check if a group is captured, otherwise you'll recieve an exception.
nre's RegexMatch.{captureBounds,captures}.toTable
no longer accept a
default parameter. Instead uncaptured entries are left empty. Use
Table.getOrDefault()
if you need defaults.
nre's RegexMatch.captures.{items,toSeq}
now returns an Option[string]
instead of a string
. With the removal of nil
strings, this is the only
way to indicate a missing match. Inside your loops, instead of capture ==
""
or capture == nil
, use capture.isSome
to check if a capture is
present, and capture.get
to get its value.
nre's replace()
no longer throws ValueError
when the replacement string
has missing captures. It instead throws KeyError
for named captures, and
IndexError
for un-named captures. This is consistant with
RegexMatch.{captureBounds,captures}[]
.
splitFile now correctly handles edge cases, see #10047
when
statements
in generics, see bug #8603. This means that code like this does not compile
anymore:proc enumToString*(enums: openArray[enum]): string =
# typo: 'e' instead 'enums'
when e.low.ord >= 0 and e.high.ord < 256:
result = newString(enums.len)
else:
result = newString(enums.len * 2)
discard x
is now illegal when x
is a function symbol.--import: module
in a config file are now restricted
to the main package.There is a new stdlib module std/editdistance
as a replacement for the
deprecated strutils.editDistance
.
There is a new stdlib module std/wordwrap
as a replacement for the
deprecated strutils.wordwrap
.
Added split
, splitWhitespace
, size
, alignLeft
, align
,
strip
, repeat
procs and iterators to unicode.nim
.
Added or
for NimNode
in macros
.
Added system.typeof
for more control over how type
expressions
can be deduced.
Added macros.isInstantiationOf
for checking if the proc symbol
is instantiation of generic proc symbol.
Added the parameter isSorted
for the sequtils.deduplicate
proc.
There is a new stdlib module std/diff
to compute the famous "diff"
of two texts by line.
Added os.relativePath
.
Added parseopt.remainingArgs
.
Added os.getCurrentCompilerExe
(implmented as getAppFilename
at CT),
can be used to retrive the currently executing compiler.
The string output of macros.lispRepr
proc has been tweaked
slightly. The dumpLisp
macro in this module now outputs an
indented proper Lisp, devoid of commas.
In strutils
empty strings now no longer matched as substrings
anymore.
Complex type is now generic and not a tuple anymore.
The ospaths
module is now deprecated, use os
instead. Note that
os
is available in a NimScript environment but unsupported
operations produce a compile-time error.
The parseopt
module now supports a new flag allowWhitespaceAfterColon
(default value: true) that can be set to false
for better Posix
interoperability. (Bug #9619.)
os.joinPath
and os.normalizePath
handle edge cases like "a/b/../../.."
differently.
noSideEffect
that works like
the gcsafe
pragma block..tmpl
to .nimf
,
it's more recognizable and allows tools like github to recognize it as Nim,
see #9647.
The previous extension will continue to work.jsondoc
now include a moduleDescription
field with the module
description. jsondoc0
shows comments as it's own objects as shown in the
documentation.fmod
proc is now unavailable on the VM'.