-
Make
{.requiresInit.}
pragma to work fordistinct
types. -
Added a macros
enumLen
for returning the number of items in an enum to thetypetraits.nim
module. -
prelude
now works with the JavaScript target. -
Added
almostEqual
inmath
for comparing two float values using a machine epsilon. -
The JSON module can now handle integer literals and floating point literals of arbitrary length and precision. Numbers that do not fit the underlying
BiggestInt
orBiggestFloat
fields are kept as string literals and one can use external BigNum libraries to handle these. TheparseFloat
family of functions also has now optionalrawIntegers
andrawFloats
parameters that can be used to enforce that all integer or float literals remain in the "raw" string form so that client code can easily treat small and large numbers uniformly. -
Added
BackwardsIndex
overload forJsonNode
. -
added
jsonutils.jsonTo
overload withopt = Joptions()
param. -
Added an overload for the
collect
macro that inferes the container type based on the syntax of the last expression. Works with std seqs, tables and sets. -
Added
randState
template that exposes the default random number generator. Useful for library authors. -
Added std/enumutils module containing
genEnumCaseStmt
macro that generates case statement to parse string to enum. -
Removed deprecated
iup
module from stdlib, it has already moved to nimble. -
various functions in
httpclient
now accepturl
of typeUri
. Moreoverrequest
function'shttpMethod
argument of typestring
was deprecated in favor ofHttpMethod
enum type. -
nodejs
backend now supports osenv:getEnv
,putEnv
,envPairs
,delEnv
,existsEnv
. -
Added
cmpMem
tosystem
. -
doAssertRaises
now correctly handles foreign exceptions. -
Added
asyncdispatch.activeDescriptors
that returns the number of currently active async event handles/file descriptors. -
--gc:orc
is now 10% faster than previously for common workloads. If you have trouble with its changed behavior, compile with-d:nimOldOrc
. -
os.FileInfo
(returned bygetFileInfo
) now containsblockSize
, determining preferred I/O block size for this file object. -
repr
now doesn't insert trailing newline; previous behavior was very inconsistent, see #16034. Use-d:nimLegacyReprWithNewline
for previous behavior. -
Added
**
to jsffi. -
writeStackTrace
is available in JS backend now. -
Added
decodeQuery
tostd/uri
. -
strscans.scanf
now supports parsing single characters. -
strscans.scanTuple
added which usesstrscans.scanf
internally, returning a tuple which can be unpacked for easier usage ofscanf
. -
Added
setutils.toSet
that can take any iterable and convert it to a built-in set, if the iterable yields a built-in settable type. -
Added
math.isNaN
. -
echo
anddebugEcho
will now raiseIOError
if writing to stdout fails. Previous behavior silently ignored errors. See #16366. Use-d:nimLegacyEchoNoRaise
for previous behavior. -
Added
jsbigints
module, arbitrary precision integers for JavaScript target. -
Added
math.copySign
. -
Added new operations for singly- and doubly linked lists:
lists.toSinglyLinkedList
andlists.toDoublyLinkedList
convert fromopenArray
s;lists.copy
implements shallow copying;lists.add
concatenates two lists - an O(1) variation that consumes its argument,addMoved
, is also supplied. -
Added
sequtils
import toprelude
. -
Added
euclDiv
andeuclMod
tomath
. -
Added
httpcore.is1xx
and missing HTTP codes. -
Added
jsconsole.jsAssert
for JavaScript target. -
Added
posix_utils.osReleaseFile
to get system identification fromos-release
file on Linux and the BSDs. https://www.freedesktop.org/software/systemd/man/os-release.html -
math.round
now is rounded "away from zero" in JS backend which is consistent with other backends. see #9125. Use-d:nimLegacyJsRound
for previous behavior. -
Added
socketstream
module that wraps sockets in the stream interface -
Changed the behavior of
uri.decodeQuery
when there are unencoded=
characters in the decoded values. Prior versions would raise an error. This is no longer the case to comply with the HTML spec and other languages implementations. Old behavior can be obtained with-d:nimLegacyParseQueryStrict
.cgi.decodeData
which uses the same underlying code is also updated the same way. -
Added
math.signbit
. -
Removed the optional
longestMatch
parameter of thecritbits._WithPrefix
iterators (it never worked reliably)
-
nimscript
now handlesexcept Exception as e
. -
The
cstring
doesn't support[]=
operator in JS backend. -
nil dereference is not allowed at compile time.
cast[ptr int](nil)[]
is rejected at compile time.
-
Added
--declaredlocs
to show symbol declaration location in messages. -
Deprecated
TaintedString
and--taintmode
. -
Source+Edit links now appear on top of every docgen'd page when
nim doc --git.url:url ...
is given. -
Added
nim --eval:cmd
to evaluate a command directly, seenim --help
. -
VM now supports
addr(mystring[ind])
(index + index assignment) -
Type mismatch errors now show more context, use
-d:nimLegacyTypeMismatch
for previous behavior. -
Added
--hintAsError
with similar semantics as--warningAsError
.
- The rst parser now supports markdown table syntax.
Known limitations:
- cell alignment is not supported, i.e. alignment annotations in a delimiter
row (
:---
,:--:
,---:
) are ignored, - every table row must start with
|
, e.g.| cell 1 | cell 2 |
.
- cell alignment is not supported, i.e. alignment annotations in a delimiter
row (