- Removed basic2d/basic3d out of the stdlib and into Nimble packages.
These packages deprecated however, use the
glm
,arraymancer
,neo
or another package. - Arrays of char cannot be converted to
cstring
anymore, pointers to arrays of char can! This means$
for arrays can finally exist insystem.nim
and do the right thing. echo
now works with strings that contain\0
(the binary zero is not shown) andnil
strings are equal to empty strings.- JSON: Deprecated
getBVal
,getFNum
, andgetNum
in favour togetBool
,getFloat
,getBiggestInt
. AlsogetInt
procedure was added. reExtended
is no longer default for there
constructor in there
module.- The overloading rules changed slightly so that constrained generics are preferred over unconstrained generics. (Bug #6526)
- It is now possible to forward declare object types so that mutually recursive types can be created across module boundaries. See package level objects for more information.
- The unary
<
is now deprecated, for.. <
use..<
for other usages use thepred
proc. - We changed how array accesses "from backwards" like
a[^1]
ora[0..^1]
are implemented. These are now implemented purely insystem.nim
without compiler support.system.Slice
now takes 2 generic parameters so that it can takeBackwardsIndex
indices.BackwardsIndex
is produced bysystem.^
. This means if you overload[]
or[]=
you need to ensure they also work withsystem.BackwardsIndex
(if applicable for the accessors). mod
and bitwiseand
do not producerange
subtypes anymore. This turned out to be more harmful than helpful and the language is simpler without this special typing rule.- Added
algorithm.rotateLeft
. rationals.toRational
now uses an algorithm based on continued fractions. This means its results are more precise and it can't run into an infinite loop anymore.- Added
typetraits.$
as an alias fortypetraits.name
.