-
std/sharedstrings
module is removed. -
Constants
colors.colPaleVioletRed
andcolors.colMediumPurple
changed to match the CSS color standard. -
addr
is now available for all addressable locations,unsafeAddr
is deprecated and becomes an alias foraddr
.
-
macros.parseExpr
andmacros.parseStmt
now accept an optional filename argument for more informative errors. -
Module
colors
expanded with missing colors from the CSS color standard. -
Fixed
lists.SinglyLinkedList
being broken after removing the last node (#19353). -
std/smtp
sendsehlo
first. If the mail server does not understand, it sendshelo
as a fallback. -
Added
IsoWeekRange
, a range type to represent the number of weeks in an ISO week-based year. -
Added
IsoYear
, a distinct int type to prevent bugs from confusing the week-based year and the regular year. -
Added
initDateTime
intimes
to create a datetime from a weekday, and ISO 8601 week number and week-based year. -
Added
getIsoWeekAndYear
intimes
to get an ISO week number along with the corresponding ISO week-based year from a datetime. -
Added
getIsoWeeksInYear
intimes
to return the number of weeks in an ISO week-based year. -
Added
std/oserrors
for OS error reporting. Addedstd/envvars
for environment variables handling. -
Removed deprecated
oids.oidToString
. -
Changed mimedb to use an
OrderedTable
instead ofOrderedTableRef
, to use it in a const. -
Removed deprecated
math.c_frexp
.
import macros
macro multiply(amount: static int, s: untyped): untyped =
let name = $s[0].basename
result = newNimNode(nnkTypeSection)
for i in 1 .. amount:
result.add(newTree(nnkTypeDef, ident(name & $i), s[1], s[2]))
type
Foo = object
Bar {.multiply: 3.} = object
x, y, z: int
Baz = object
# becomes
type
Foo = object
Bar1 = object
x, y, z: int
Bar2 = object
x, y, z: int
Bar3 = object
x, y, z: int
Baz = object
- Case statement macros are no longer experimental,
meaning you no longer need to enable the experimental switch
caseStmtMacros
to use them.
nim
can now compile version 1.4.0 as follows:nim c --lib:lib --stylecheck:off compiler/nim
, without requiring-d:nimVersion140
which is now a noop.
-
Nim now supports Nimble version 0.14 which added support for lock-files. This is done by a simple configuration change setting that you can do yourself too. In
$nim/config/nim.cfg
replacepkgs
bypkgs2
. -
There is a new switch
--nimMainPrefix:prefix
to influence theNimMain
that the compiler produces. This is particularly useful for generating static libraries. -
There is a new switch
--depfile:path
to write a GCC-style depfile that can be used with various build systems.