GistTree.Com
Entertainment at it's peak. The news is by your side.

Nim 1.4

0



16 October 2020



The Nim Crew

We’re very proud to stutter Nim version 1.4 after six months of precise roar!
Diversified than version 1.0, here is maybe the obedient Nim liberate but and we’re very excited to liberate it!

It comprises exactly 900 unique commits which accumulate no longer already been backported to our old versions.
There are several unique ingredients and celebrated library additions when when in contrast with 1.2.
We tried to take breaking adjustments to a minimal, but some bugfixes weren’t conceivable
with out making these obligatory adjustments, and we feel that our customers will income
from them.

We would suggest to all of our customers to present a take to and exhaust version 1.4.

New customers

Compare out if the bundle manager of your OS already ships version 1.4 or
set up it as described here.

Existing customers

If you happen to would possibly perchance possibly perchance even accumulate installed a old version of Nim utilizing choosenim,
getting Nim 1.4 is as straightforward as:

$ choosenim update stable

If you happen to don’t accumulate choosenim, that you can apply the similar
set up hyperlink as above.

Our contributors are fabulous, and there are
far too many
to checklist here.
Sizable attributable to all of you, we couldn’t accumulate pulled off this liberate with out you!

GC: ORC

A unique reference counting algorithm called ARC turned into first shipped with Nim 1.2.
If you happen to haven’t watched it already, we suggest
this video from FOSDEM
the assign Araq explains details at the support of ARC and reveals some benchmarks that
illustrate the advantages.

So far as we know, ARC works alongside with your entire celebrated library with the exception of for
the unusual implementation of async, on legend of that introduces cycles that
ARC doesn’t take care of.
There are other async implementations in roar that don’t introduce cycles.

ORC is the unusual ARC algorithm plus a cycle collector, and --gc:orc is our
essential unique feature for this liberate!
We suggest reading
this introductory ARC/ORC put up
to get an thought about ARC/ORC’s advantages.

How to make exhaust of ARC and ORC

If you happen to haven’t used ARC already with Nim 1.2, all it is probably you’ll possibly perchance deserve to achieve is to run --gc:arc
on the expose line:

nim c -d: liberate --gc: arc myprogram.nim

For the huge majority of applications here is all it takes.

In case your code makes exhaust of cyclic data constructions, or whenever you happen to’re no longer definite if your code
produces cycles, it is probably you’ll possibly perchance deserve to make exhaust of --gc:orc and no longer --gc:arc.

If you happen to would possibly perchance possibly perchance even accumulate an object that looks cyclic, but you know it isn’t, that you can abet ORC by
marking it as {.acyclic.} within the next methodology:

model
  Node {.acyclic.} = ref object
    left, correct:  Node
    data:  string

To read extra about {.acyclic.} pragma, please
take a look at out the handbook.

Identified incompatibilities and gotchas

Deepcopy

If you happen to exhaust map.deepCopy in your code, it is probably you’ll possibly perchance deserve to allow it by task of
--deepCopy:on on the expose line.
Right here’s a band-reduction and a nearer resolution for this would possibly perchance well possibly perchance advance in some unspecified time in the future.

The clarification for this decide-in switch is that ARC and ORC attain no longer exhaust the aged runtime
model data (RTTI) that map.deepCopy is constructed upon.
We’ve constructed ARC and ORC with embedded devices in solutions the assign the overhead of the
aged RTTI has been reported to be unacceptable.

Verbalize of declarations

The 2d gotcha other folks would possibly perchance well stumble upon is the strict ordering requirement
for personalized destructors; this impacts aged code as correctly, on legend of finalizers are
mapped to destructors.
As an illustration:

model
  CustomObject = ref object
    p:  ptr int

proc refined() =
  # would exhaust the default destructor
  var x:  CustomObject

proc finalizer(x:  CustomObject) =
  if x.p != nil: 
    dealloc(x.p)

proc newCustomObject():  CustomObject =
  unique(consequence, finalizer)

This produces the next error message:

temp.nim(15, 6) Error: can no longer bind another '=ruin' to: CustomObject:ObjectType;
old declaration turned into constructed here implicitly: temp.nim(8, 7)

The rationale is that handiest after the unique(consequence, finalizer) name the compiler is aware of
that it must generate a personalized destructor for the CustomObject model,
but when it compiled refined the default destructor turned into used.

The resolution is to run the proc refined after the newCustomObject declaration:

model
  CustomObject = ref object
    p:  ptr int

proc finalizer(x:  CustomObject) =
  if x.p != nil: 
    dealloc(x.p)

proc newCustomObject():  CustomObject =
  unique(consequence, finalizer)

proc refined() =
  # makes exhaust of the customised destructor
  var x:  CustomObject

Right here’s a unusual limitation that will seemingly be improved in future versions of the compiler.

Strict(er) functions

Right here is an experimental feature on hand by task of {.experimental: "strictFuncs".} pragma in
your code or by task of the --experimental:strictFuncs switch.

It introduces a stricter definition of a “facet abolish”:
If an object is reachable by task of a parameter that just isn’t any longer declared as a var parameter,
any mutation to that object counts as an aspect abolish.

Right here is an example from
the experimental handbook:

{.experimental:  "strictFuncs".}

model
  Node = ref object
    le, ri:  Node
    data:  string

func len(n:  Node):  int =
  # gracious: len does no longer accumulate facet results
  var it = n
  whereas it != nil: 
    inc consequence
    it = it.ri

func mut(n:  Node) =
  let m = n # is the sing that linked the mutation to the parameter
  m.data = "yeah" # the mutation is here
  # Error: 'mut' can accumulate facet results
  # an object reachable from 'n' is doubtlessly mutated

For extra details, please survey Araq’s blog put up.

Regular library additions and adjustments

  • Added some enhancements to std/jsonutils module.
    • Added a possibility to deserialize JSON arrays straight to HashSet and
      OrderedSet forms and respectively to serialize these forms to JSON arrays
      by task of jsonutils.fromJson and jsonutils.toJson procedures.
    • Added a possibility to deserialize JSON null objects to Nim option objects
      and respectively to serialize Nim option object to JSON object if isSome
      or to JSON null object if isNone by task of jsonutils.fromJson and
      jsonutils.toJson procedures.
    • Added a Joptions parameter to jsonutils.fromJson currently
      containing two boolean alternate suggestions allowExtraKeys and allowMissingKeys.

      • If allowExtraKeys is correct Nim’s object to which the JSON is parsed is
        no longer required to accumulate a field for every JSON key.
      • If allowMissingKeys is correct Nim’s object to which JSON is parsed is
        allowed to accumulate fields with out corresponding JSON keys.
  • Added bindParams, bindParam to db_sqlite for binding parameters into a SqlPrepared sing.
  • Added tryInsert,insert procs to db_* libs which rep essential key column name.
  • Added xmltree.newVerbatimText toughen originate model’s,script’s text.
  • uri module now implements RFC-2397.
  • Added DOM Parser
    to the dom module for the JavaScript target.
  • The default hash for Ordinal has changed to something extra bit-scrambling.
    import hashes; proc hash(x: myInt): Hash = hashIdentity(x) recovers the aged
    one in an instantiation context whereas -d:nimIntHash1 recovers it globally.
  • deques.peekFirst and deques.peekLast now accumulate var Deque[T] -> var T overloads.
  • File handles created from high-level abstractions within the stdlib will now no longer
    be inherited by child processes. In particular, these modules are affected:
    asyncdispatch, asyncnet, map, nativesockets, obtain and selectors.

    For asyncdispatch, asyncnet, obtain and nativesockets, an inheritable
    flag has been added to all procs that originate sockets, allowing the patron to
    take watch over whether or no longer the following socket is inheritable. This flag is provided to
    ease the writing of multi-direction of servers, the assign sockets inheritance is
    desired.

    For a transition length, provide an explanation for nimInheritHandles to allow file take care of
    inheritance by default. This flag does no longer accumulate an impress on the selectors module
    attributable to the differing semantics between working systems.

    asyncdispatch.setInheritable, map.setInheritable and
    nativesockets.setInheritable are moreover launched for setting file take care of or
    socket inheritance. No longer all platforms accumulate these procs defined.

  • The file descriptors created for interior bookkeeping by ioselector_kqueue
    and ioselector_epoll will now no longer be leaked to child processes.

  • strutils.formatFloat with precision = 0 has been restored to the version
    1 behaviour that produces a trailing dot, e.g. formatFloat(3.14159, precision = 0)
    is now 3., no longer 3.
  • Added commonPrefixLen to critbits.

  • relativePath(rel, abs) and relativePath(abs, rel) used to silently give corrupt results
    (survey #13222); as another they now exhaust getCurrentDir to get to the backside of these circumstances,
    and this can now throw in edge circumstances the assign getCurrentDir throws.
    relativePath moreover now works for js with -d:nodejs.

  • JavaScript and NimScript celebrated library adjustments: streams.StringStream is
    now supported in JavaScript, with the limitation that any buffer pointers
    used ought to be castable to ptr string, any incompatible pointer model just isn’t any longer going to
    work. The lexbase and streams modules used to fail to assemble on
    NimScript attributable to a bug, but this has been mounted.

    The next modules now collect on both JS and NimScript: parsecsv,
    parsecfg, parsesql, xmlparser, htmlparser and ropes. Furthermore
    supported for JS is cstrutils.startsWith and cstrutils.endsWith, for
    NimScript: json, parsejson, strtabs and unidecode.

  • Added streams.readStr and streams.peekStr overloads to
    rep an existing string to change, which avoids reminiscence
    allocations, equivalent to streams.readLine (#13857).

  • Added high-level asyncnet.sendTo and asyncnet.recvFrom UDP performance.

  • greenbacks.$ now works for unsigned ints with nim js.

  • Enhancements to the bitops module, including bitslices, non-mutating versions
    of the usual overlaying functions, veil/masked, and varargs toughen for
    bitand, bitor, and bitxor.

  • sugar.=> and sugar.-> adjustments: Previously (x, y: int) turned into transformed
    into (x: auto, y: int), it now becomes (x: int, y: int) for consistency
    with standard proc definitions (even supposing that you can no longer exhaust semicolons).

    Pragmas and utilizing a name are now allowed on the lefthand facet of =>. Right here
    is an example of these adjustments:

    import sugar
    
    foo(x, y:  int) {.noSideEffect.} => x + y
    
    # is transformed into
    
    proc foo(x:  int, y:  int):  auto {.noSideEffect.} = x + y
    

  • The fields of times.DateTime are now private, and are accessed with getters and deprecated setters.

  • The times module now handles the default payment for DateTime extra continuously.
    Most procs broaden an assertion error when given
    an uninitialized DateTime, the exceptions are == and $ (which returns "Uninitialized DateTime").
    The proc times.isInitialized has been added which would possibly perchance possibly perchance be used to envision if
    a DateTime has been initialized.

  • Repair a bug the assign calling halt on io streams in osproc.startProcess turned into a noop and ended in
    hangs if a direction of had both reads from stdin and writes (e.g. to stdout).

  • The callback that is passed to map.onThreadDestruction must now be .raises: [].
  • The callback that is assigned to map.onUnhandledException must now be .gcsafe.

  • osproc.execCmdEx now takes an non-obligatory enter for stdin, workingDir and env
    parameters.

  • Added a ssl_config module containing lists of precise ciphers as instructed by
    Mozilla OpSec

  • obtain.newContext now defaults to the checklist of ciphers concentrated on
    “Intermediate compatibility”
    per Mozilla’s advice rather than ALL. This exchange ought to defend
    customers from the exhaust of used and horrified ciphers whereas detached presents
    passable compatibility with the huge majority of the Web.

  • A unique module std/jsonutils with hookable jsonTo,toJson,fromJson operations for json
    serialization/deserialization of personalized forms turned into added.

  • A unique proc heapqueue.get[T](heap: HeapQueue[T], x: T): int to get index of part x
    turned into added.
  • Added rstgen.rstToLatex a convenience proc for renderRstToOut and initRstGenerator.
  • Added os.normalizeExe.
  • macros.newLit now preserves named vs unnamed tuples.
  • Added random.gauss, that makes exhaust of the ratio of uniforms methodology of sampling from a Gaussian distribution.
  • Added typetraits.elementType to get the part model of an iterable.
  • typetraits.$ adjustments: $(int,) is now "(int,)" rather than "(int)";
    $tuple[] is now "tuple[]" rather than "tuple";
    $((int, waft), int) is now "((int, waft), int)" rather than "(tuple of (int, waft), int)"
  • Added macros.extractDocCommentsAndRunnables helper.

  • strformat.fmt and strformat.& toughen specifier =. fmt"{expr=}" now
    expands to fmt"expr={expr}".
  • Deprecations: rather than os.existsDir exhaust dirExists, rather than os.existsFile exhaust fileExists.

  • Added the jsre module, Traditional Expressions for the JavaScript target..
  • Made maxLines argument Obvious in logging.newRollingFileLogger,
    on legend of unfavorable values will consequence in a brand unique file being created for every logged
    line which doesn’t originate sense.
  • Changed log in logging to make exhaust of correct log level for JavaScript,
    e.g. debug makes exhaust of console.debug, info makes exhaust of console.info, warn makes exhaust of console.warn, etc.
  • Tables, HashSets, SharedTables and deques don’t require anymore that the passed
    preliminary size ought to be an affect of two – here is completed internally.
    Proc rightSize for Tables and HashSets is deprecated, because it is now not any longer wanted anymore.
    CountTable.inc takes val: int all over again no longer val: Obvious; i.e. it’ll “count down” all over again.
  • Eliminated deprecated symbols from macros module, a pair of of that accumulate been deprecated already in 0.15.
  • Eliminated sugar.distinctBase, deprecated since 0.19. Employ typetraits.distinctBase.
  • asyncdispatch.PDispatcher.handles is exported so that an external low-level libraries can access it.

  • std/with, sugar.dup now toughen object field assignment expressions:
    import std/with
    
    model Foo = object
      x, y:  int
    
    var foo = Foo()
    with foo: 
      x = 10
      y = 20
    
    echo foo
    

  • Proc math.spherical is now no longer deprecated. The advice to make exhaust of strformat as another
    can no longer be applied to every exhaust case. The constraints and the (lack of) reliability
    of spherical are correctly documented.

  • Added getprotobyname to winlean. Added getProtoByname to nativesockets which returns a protocol code
    from the database that fits the protocol name.

  • Added lacking attributes and dom.Navigator treasure deviceMemory, onLine, vibrate(), etc.

  • Added strutils.indentation and strutils.dedent which allow indented string literals:
    import strutils
    echo dedent """
      This
        is
          frigid!
      """
    

  • Added initUri(isIpv6: bool) to uri module, now uri supports parsing ipv6 hostname.

  • Added readLines(p: Course of) to osproc.

  • Added the below toX procs for collections. The utilization is equivalent to procs corresponding to
    sets.toHashSet and tables.toTable. Previously, it turned into obligatory to originate the
    respective empty series and add devices manually.

    • critbits.toCritBitTree, which creates a CritBitTree from an openArray of
      devices or an openArray of pairs.
    • deques.toDeque, which creates a Deque from an openArray.
    • heapqueue.toHeapQueue, which creates a HeapQueue from an openArray.
    • intsets.toIntSet, which creates an IntSet from an openArray.
  • Added progressInterval argument to asyncftpclient.newAsyncFtpClient to govern the interval
    at which progress callbacks are called.

  • Added os.copyFileToDir.

Language adjustments

  • The =ruin hook now no longer has to reset its target, as the compiler now robotically inserts
    wasMoved calls the assign wanted.
  • The = hook is now called =reproduction for readability. The aged name = is detached on hand so there
    just isn’t any must update your code. This exchange turned into backported to 1.2 too in an effort to exhaust the
    extra readable =reproduction with out loss of compatibility.

  • In the newruntime it is far now allowed to assign to the discriminator field
    with out restrictions so long as the case object doesn’t accumulate a personalized destructor.
    The discriminator payment doesn’t ought to be a fixed either. If you happen to would possibly perchance possibly perchance even accumulate a
    personalized destructor for a case object and likewise you attain are making an strive to freely assign discriminator
    fields, it is far instructed to refactor the article into 2 objects treasure this:

    model
      MyObj = object
        case form:  bool
        of correct:  y:  ptr UncheckedArray[float]
        of fraudulent:  z:  seq[int]
    
    proc `=ruin`(x:  MyObj) =
      if x.form and x.y != nil: 
        deallocShared(x.y)
    

    Refactor into:

    model
      MySubObj = object
        val:  ptr UncheckedArray[float]
      MyObj = object
        case form:  bool
        of correct:  y:  MySubObj
        of fraudulent:  z:  seq[int]
    
    proc `=ruin`(x:  MySubObj) =
      if x.val != nil: 
        deallocShared(x.val)
    

  • getImpl on enum model symbols now returns field syms rather than idents. This helps
    with writing typed macros. The aged behavior for backwards compatibility would possibly perchance possibly perchance be restored
    with --useVersion:1.0.
  • The typed AST for proc headers will now accumulate the arguments be syms rather than idents.
    This helps with writing typed macros. The aged behaviour for backwards compatibility can
    be restored with --useVersion:1.0.
  • let statements can now be used with out a payment if declared with
    importc/importcpp/importjs/importobjc.
  • The keyword from is now usable as an operator.
  • Exceptions inheriting from map.Defect don’t seem like any longer tracked with
    the .raises: [] exception monitoring mechanism. Right here is extra per the
    constructed-in operations. The next continuously used to assemble (and detached does):

    proc mydiv(a, b):  int {.raises:  [].} =
      a div b # can broaden an DivByZeroDefect
    

    Now moreover this compiles:

    proc mydiv(a, b):  int {.raises:  [].} =
      if b == 0:  broaden newException(DivByZeroDefect, "division by zero")
      else:  consequence = a div b
    

    The clarification for here is that DivByZeroDefect inherits from Defect and
    with --panics:on Defects turn into unrecoverable errors.

  • Added the thiscall calling convention as specified by Microsoft, largely for hooking functions.
  • Deprecated the {.unroll.} pragma, on legend of it turned into continuously overlooked by the compiler anyway.
  • Eliminated the deprecated strutils.isNilOrWhitespace.
  • Eliminated the deprecated sharedtables.initSharedTable.
  • Eliminated the deprecated asyncdispatch.newAsyncNativeSocket.
  • Eliminated the deprecated dom.releaseEvents and dom.captureEvents.

  • Eliminated sharedlists.initSharedList, turned into deprecated and produces undefined behaviour.

  • There would possibly perchance be a brand unique experimental feature called “strictFuncs” which makes the definition of
    .noSideEffect stricter. Explore here
    for extra data.

  • “for-loop macros” (survey the handbook) don’t seem like any longer
    an experimental feature. In other phrases, you don’t deserve to jot down pragma
    {.experimental: "forLoopMacros".} whenever you happen to purchase to deserve to make exhaust of them.

  • Added the .noalias pragma. It is mapped to C’s limit keyword for the increased
    performance this keyword can allow.

  • devices now no longer compiles with enums with holes as its behavior turned into error inclined, survey #14004.
  • map.deepcopy must be enabled explicitly for --gc:arc and --gc:orc by task of
    --deepcopy:on.

  • Added the std/effecttraits module for introspection of the inferred results.
    We hope this allows async macros that are trusty about the conceivable exceptions that
    would possibly perchance possibly perchance be raised.
  • The pragma blocks {.gcsafe.}: ... and {.noSideEffect.}: ... can now moreover be
    written as {.forged(gcsafe).}: ... and {.forged(noSideEffect).}: .... Right here is the unique
    most in model methodology of writing these, emphasizing their unsafe nature.

Compiler adjustments

  • Particular warnings can now be turned into errors by task of --warningAsError[X]:on|off.
  • The provide an explanation for and undef pragmas accumulate been de-deprecated.
  • New expose: nim r essential.nim [args...] which compiles and runs essential.nim, and implies --usenimcache
    so that the output is saved to $nimcache/essential$exeExt, utilizing the similar common sense as nim c -r to
    live far from recompilations when sources don’t exchange.
    Example:

    nim r compiler/nim.nim --abet # handiest compiled the first time
    echo 'import os; echo getCurrentCompilerExe()' | nim r - # this works too
    nim r compiler/nim.nim --fullhelp # no recompilation
    nim r --nimcache:/tmp essential # binary saved to /tmp/essential
    

  • --hint:processing is now supported and manner --hint:processing:on
    (likewise with other hints and warnings), which is per all other bool flags.
    (since 1.3.3).
  • nim doc -r essential and nim rst2html -r essential now name openDefaultBrowser.
  • Added the unique hint --hint:msgOrigin will display the assign a compiler msg (hint|warning|error)
    turned into generated; this helps in particular when it’s non glaring the assign it came from
    either on legend of a number of areas generate the similar message, or for the reason that
    message comprises runtime formatting.
  • Added the unique flag --backend:js|c|cpp|objc (or -b:js etc), to interchange the backend; would possibly perchance possibly perchance be
    used with any expose (e.g. nim r, doc, take a look at etc); protected to re-assign.
  • Added the unique flag --doccmd:cmd to run extra flags for runnableExamples,
    e.g.: --doccmd:-d:foo --threads
    exhaust --doccmd:skip to skip runnableExamples and rst take a look at snippets.
  • Added the unique flag --usenimcache to output binary recordsdata to nimcache.
  • runnableExamples "-b:cpp -r:off": code is now supported, allowing to override
    how an example is compiled and toddle, to illustrate to interchange the backend.
  • nim doc now outputs below $projectPath/htmldocs when --outdir is unspecified
    (with or with out --project); passing --project now robotically generates
    an index and enables search.
    Explore docgen for details.
  • Eliminated the --oldNewlines switch.
  • Eliminated the --laxStrings switch for mutating the interior zero terminator on strings.
  • Eliminated the --oldast switch.
  • Eliminated the --oldgensym switch.
  • $getType(untyped) is now “untyped” rather than “expr”, $getType(typed) is
    now “typed” rather than “stmt”.
  • Sink inference is now disabled per default and has to enabled explicitly by task of
    --sinkInference:on. Existing: For the celebrated library sink inference stays
    enabled. This exchange is most connected for the --gc:arc, --gc:orc reminiscence
    management modes.
  • nimsuggest now returns both the forward declaration and the
    implementation hassle upon a def query. Previously the behavior turned into
    to reach the forward declaration handiest.

Bugfixes

  • Fastened “repr() no longer on hand for uint{,8,16,32,64} below –gc:arc”
    (#13872)
  • Fastened “Serious: 1 completed Future, a number of live up for: Most interesting 1 live up for will seemingly be woke up (the final one)”
    (#13889)
  • Fastened “smash on openarray interator with argument in stmtListExpr”
    (#13739)
  • Fastened “Some compilers on Windows don’t work”
    (#13910)
  • Fastened “httpclient hangs if it recieves an HTTP 204 (No Advise)”
    (#13894)
  • Fastened ““clear uint64” model corruption on 32-bit, when utilizing {.borrow.} operators”
    (#13902)
  • Fastened “Regression: very no longer going to make exhaust of typed pragmas with proc forms”
    (#13909)
  • Fastened “openssl wrapper corrupts stack on OpenSSL 1.1.1f + Android”
    (#13903)
  • Fastened “C collect error with –gc:arc on version 1.2.0 “unknown model name ‘TGenericSeq’”
    (#13863)
  • Fastened “var return model for proc doesn’t work at c++ backend”
    (#13848)
  • Fastened “TimeFormat() ought to broaden an error but craches at compilation time”
    (#12864)
  • Fastened “gc:arc can no longer completely toughen threadpool with FlowVar”
    (#13781)
  • Fastened “straightforward ‘var openarray[char]’ assignment smash when the openarray supply is a local string and utilizing gc:arc”
    (#14003)
  • Fastened “Cant exhaust expressions with when in model sections.”
    (#14007)
  • Fastened “for a in MyEnum presents unsuitable results with enum with holes”
    (#14001)
  • Fastened “Trivial smash”
    (#12741)
  • Fastened “Enum with holes can no longer be used as Desk index”
    (#12834)
  • Fastened “spawn proc that makes exhaust of typedesc crashes the compiler”
    (#14014)
  • Fastened “Clinical doctors Search Outcomes field styling just isn’t any longer Darkish Mode Kindly”
    (#13972)
  • Fastened “–gc:arc -d:useSysAssert undeclared identifier cstderr with newSeq”
    (#14038)
  • Fastened “disorders within the handbook”
    (#12486)
  • Fastened “Aggravating warning: inherit from a extra trusty exception model treasure ValueError, IOError or OSError [InheritFromException]”
    (#14052)
  • Fastened “relativePath(“foo”, “/”) and relativePath(“/”, “foo”) is corrupt”
    (#13222)
  • Fastened “[regression] parseEnum does no longer work anymore for enums with holes”
    (#14030)
  • Fastened “Exception forms within the stdlib ought to inherit from CatchableError or Defect, no longer Exception
    (#10288)
  • Fastened “Salvage debugSend and debugRecv procs public in smtp.nim”
    (#12189)
  • Fastened “xmltree need add raw text, when add model part”
    (#14064)
  • Fastened “raises requirement does no longer propagate to derived ideas”
    (#8481)
  • Fastened “exams/stdlib/tgetaddrinfo.nim fails on NetBSD”
    (#14091)
  • Fastened “exams/niminaction/Chapter8/sdl/sdl_test.nim fails on NetBSD”
    (#14088)
  • Fastened “Incorrect ruin out sequence to illustrate in jsffi library documentation”
    (#14110)
  • Fastened “HCR: Can no longer hyperlink exported const, in external library”
    (#13915)
  • Fastened “Cannot import std/unidecode”
    (#14112)
  • Fastened “macOS: dsymutil ought to no longer be called on static libraries”
    (#14132)
  • Fastened “nim jsondoc -o:doc.json filename.nim fails when sequences with out a model are used”
    (#14066)
  • Fastened “algorithm.sortedByIt template corrupts tuple enter below –gc:arc”
    (#14079)
  • Fastened “Invalid C code with lvalue conversion”
    (#14160)
  • Fastened “strformat: doc example fails”
    (#14054)
  • Fastened “Nim doc fail to toddle for nim 1.2.0 (nim 1.0.4 is luminous)”
    (#13986)
  • Fastened “Exception when changing csize to clong”
    (#13698)
  • Fastened “[Documentation] overloading utilizing named arguments works but just isn’t any longer documented”
    (#11932)
  • Fastened “import os + exhaust of existsDir/dirExists/existsFile/fileExists/findExe in config.nims causes “ambiguous name’ error”
    (#14142)
  • Fastened “import os + exhaust of existsDir/dirExists/existsFile/fileExists/findExe in config.nims causes “ambiguous name’ error”
    (#14142)
  • Fastened “runnableExamples doc gen crashes compiler with with the exception of Exception as e syntax”
    (#14177)
  • Fastened “[ARC] Segfault with cyclic references (?)”
    (#14159)
  • Fastened “Semcheck regression when accessing a static parameter in proc”
    (#14136)
  • Fastened “iterator walkDir doesn’t work with -d:useWinAnsi”
    (#14201)
  • Fastened “cas is corrupt for tcc”
    (#14151)
  • Fastened “proc execCmdEx doesn’t work with -d:useWinAnsi”
    (#14203)
  • Fastened “Employ -d:nimEmulateOverflowChecks by default?”
    (#14209)
  • Fastened “Outdated sequences with destructor objects bug”
    (#14217)
  • Fastened “[ARC] ICE when altering the discriminant of a return payment”
    (#14244)
  • Fastened “[ARC] ICE with static objects”
    (#14236)
  • Fastened “[ARC] “interior error: environment misses: a” in a finalizer”
    (#14243)
  • Fastened “[ARC] collect failure utilizing repr with object containing ref seq[string]
    (#14270)
  • Fastened “[ARC] implicit run on final exhaust occurring on non-final exhaust”
    (#14269)
  • Fastened “[ARC] Compiler smash with a recursive non-ref object variant”
    (#14294)
  • Fastened “htmlparser.parseHtml behaves in any other case utilizing –gc:arc or –gc:orc”
    (#13946)
  • Fastened “Invalid return payment of openProcess is NULL rather than INVALID_HANDLE_VALUE(-1) in windows”
    (#14289)
  • Fastened “ARC codegen bug with inline iterators”
    (#14219)
  • Fastened “Building koch on OpenBSD fails unless the Nim directory is in $PATH
    (#13758)
  • Fastened “[gc:arc] case object assignment SIGSEGV: ruin no longer called for used model “
    (#14312)
  • Fastened “Fracture when utilizing thread and –gc:arc “
    (#13881)
  • Fastened “Getting “Warning: Cannot designate that ‘consequence’ is initialized” for an importcpp’d proc with var T return model”
    (#14314)
  • Fastened “nim cpp -r --gc:arc segfaults on caught AssertionError”
    (#13071)
  • Fastened “exams/async/tasyncawait.nim is currently very flaky”
    (#14320)
  • Fastened “Documentation nonexistent quitprocs module”
    (#14331)
  • Fastened “SIGSEV encountered when creating threads in a loop w/ –gc:arc”
    (#13935)
  • Fastened “nim-gdb is lacking from all launched applications”
    (#13104)
  • Fastened “sysAssert error with gc:arc on 3 line program”
    (#13862)
  • Fastened “compiler error with inline async proc and pragma”
    (#13998)
  • Fastened “[ARC] Compiler smash when including to a seq[ref Object]”
    (#14333)
  • Fastened “nimvm: sysFatal: unhandled exception: ‘sons’ just isn’t any longer accessible utilizing discriminant ‘form’ of model ‘TNode’ [FieldError]”
    (#14340)
  • Fastened “[Regression] karax events are no longer firing “
    (#14350)
  • Fastened “odbcsql module has some corrupt integer forms”
    (#9771)
  • Fastened “db_sqlite needs sqlPrepared”
    (#13559)
  • Fastened “[Regression] createThread just isn’t any longer GC-protected”
    (#14370)
  • Fastened “Broken example on sizzling code reloading”
    (#14380)
  • Fastened “runnableExamples block with with the exception of on specified error fails with nim doc
    (#12746)
  • Fastened “compiler as a library: findNimStdLibCompileTime fails to get map.nim”
    (#12293)
  • Fastened “5 bugs with importcpp exceptions”
    (#14369)
  • Fastened “Clinical doctors shouldn’t give way pragmas internal runnableExamples/code blocks”
    (#14174)
  • Fastened “Rotten codegen/emit for hashes.hiXorLo in some contexts.”
    (#14394)
  • Fastened “Boehm GC does no longer scan thread-local storage”
    (#14364)
  • Fastened “RVO no longer exception protected”
    (#14126)
  • Fastened “runnableExamples that are handiest compiled”
    (#10731)
  • Fastened “foldr raises IndexError when called on sequence”
    (#14404)
  • Fastened “moveFile does no longer overwrite scamper back and forth field file”
    (#14057)
  • Fastened “doc2 outputs in unusual work dir”
    (#6583)
  • Fastened “[docgen] proc doc comments silently omitted after 1st runnableExamples”
    (#9227)
  • Fastened “nim doc --project reveals ‘@@/’ rather than ‘../’ for relative paths to submodules”
    (#14448)
  • Fastened “re, nre accumulate corrupt birth semantics”
    (#14284)
  • Fastened “runnableExamples ought to retain supply code doc comments, strings, and (maybe) formatting”
    (#8871)
  • Fastened “nim doc .. fails when runnableExamples makes exhaust of $ [devel] [regression]”
    (#14485)
  • Fastened “devices is 20%~30% slower than iteration by task of an index”
    (#14421)
  • Fastened “ARC: unreliable setLen “
    (#14495)
  • Fastened “lent is unsafe: after #14447 that you can adjust variables with “devices” loop for sequences”
    (#14498)
  • Fastened “var op = fn() wrongly presents warning ObservableStores with object of RootObj model”
    (#14514)
  • Fastened “Compiler assertion”
    (#14562)
  • Fastened “Can’t get ord of a payment of a Fluctuate model within the JS backend “
    (#14570)
  • Fastened “js: can’t decide addr of param (including implicitly by task of lent)”
    (#14576)
  • Fastened “{.noinit.} overlooked in for loop -> unpleasant codegen for non-movable forms”
    (#14118)
  • Fastened “generic destructor presents: Error: unresolved generic parameter
    (#14315)
  • Fastened “Memory leak with arc gc”
    (#14568)
  • Fastened “ruin out evaluation damaged with lent
    (#14557)
  • Fastened “wrapWords looks to push apart linebreaks when wrapping, leaving breaks within the corrupt hassle”
    (#14579)
  • Fastened “lent presents corrupt results with -d:liberate”
    (#14578)
  • Fastened “Nested live up for expressions regression: live up for a(live up for expandValue()) doesnt collect”
    (#14279)
  • Fastened “windows CI doctors fails with bright errors”
    (#14545)
  • Fastened “[CI] exams/async/tioselectors.nim flaky take a look at for freebsd + OSX CI”
    (#13166)
  • Fastened “seq.setLen normally doesn’t zero reminiscence”
    (#14655)
  • Fastened “nim dump is roughly 100x slower in 1.3 versus 1.2”
    (#14179)
  • Fastened “Regression: devel docgen can no longer generate doc for methodology”
    (#14691)
  • Fastened “currently flaky exams/async/t7758.nim”
    (#14685)
  • Fastened “Bind now no longer working in generic procs.”
    (#11811)
  • Fastened “The pegs module doesn’t work with generics!”
    (#14718)
  • Fastened “Defer just isn’t any longer correctly working for asynchronous procedures.”
    (#13899)
  • Fastened “Add an ARC take a look at with threads in a loop”
    (#14690)
  • Fastened “[goto exceptions] {.noReturn.} pragma just isn’t any longer detected in a case expression”
    (#14458)
  • Fastened “[exceptions:goto] C compiler error with dynlib pragma calling a proc”
    (#14240)
  • Fastened “Cannot borrow var waft64 in infix assignment”
    (#14440)
  • Fastened “lib/pure/memfiles.nim: compilation error with –taintMode:on”
    (#14760)
  • Fastened “newWideCString allocates a a number of of the reminiscence wanted”
    (#14750)
  • Fastened “Nim supply archive set up: ‘set up.sh’ fails with error: cp: can no longer stat ‘bin/nim-gdb’: No such file or directory”
    (#14748)
  • Fastened “nim cpp -r exams/exception/t9657 hangs”
    (#10343)
  • Fastened “Detect instrument fails on FreeBSD”
    (#14715)
  • Fastened “compiler smash: findUnresolvedStatic
    (#14802)
  • Fastened “seq namespace (?) regression”
    (#4796)
  • Fastened “That you would be in a position to mediate of out of bounds string access in std/colors parseColor and isColor”
    (#14839)
  • Fastened “collect error on most fresh devel with orc and ssl”
    (#14647)
  • Fastened “[minor] $ corrupt for model tuple”
    (#13432)
  • Fastened “Documentation lacking on devel asyncftpclient”
    (#14846)
  • Fastened “nimpretty is confused with a trailing comma in enum definition”
    (#14401)
  • Fastened “Output arguments get overlooked when compiling with –app:staticlib”
    (#12745)
  • Fastened “[ARC] unfavorable run destroys the article too early”
    (#14396)
  • Fastened “highlite.getNextToken() crashes if the buffer string is “echo “”””
    (#14830)
  • Fastened “Memory corruption with –gc:arc with a seq of objects with an empty physique.”
    (#14472)
  • Fastened “Stropped identifiers don’t work as field names in tuple literals”
    (#14911)
  • Fastened “Please revert my commit”
    (#14930)
  • Fastened “[ARC] C compiler error with inline iterators and imports”
    (#14864)
  • Fastened “AsyncHttpClient segfaults with gc:orc, possibly reminiscence corruption”
    (#14402)
  • Fastened “[ARC] Template with a block evaluating to a GC’d payment results in a compiler smash”
    (#14899)
  • Fastened “[ARC] Uncommon sing with if expressions and templates”
    (#14900)
  • Fastened “xmlparser does no longer collect on devel”
    (#14805)
  • Fastened “returning lent T from a var T param presents codegen errors or SIGSEGV”
    (#14878)
  • Fastened “[ARC] Uncommon sing with if expressions and templates”
    (#14900)
  • Fastened “threads:on + gc:orc + unittest = C compiler errors”
    (#14865)
  • Fastened “mitems, mpairs doesn’t work at collect time anymore”
    (#12129)
  • Fastened “bright consequence from executing code in const expression”
    (#10465)
  • Fastened “Identical warning printed Three times”
    (#11009)
  • Fastened “model alias for generic typeclass doesn’t work”
    (#4668)
  • Fastened “exceptions:goto Worm devel codegen lvalue NIM_FALSE=NIM_FALSE”
    (#14925)
  • Fastened “the –useVersion:1.0 now no longer works in devel”
    (#14912)
  • Fastened “template declaration of iterator doesn’t collect”
    (#4722)
  • Fastened “Compiler smash on model inheritance with static generic parameter and equality take a look at”
    (#12571)
  • Fastened “Nim crashes whereas facing a forged in async circumstances.”
    (#13815)
  • Fastened “[ARC] Inner compiler error when calling an iterator from an inline proc “
    (#14383)
  • Fastened ““Cannot instantiate” error when template makes exhaust of generic model”
    (#5926)
  • Fastened “Diversified raises behaviour for newTerminal between Linux and Windows”
    (#12759)
  • Fastened “Enlarge on a model (that defines a proc model) in error message “
    (#6608)
  • Fastened “unittest require quits program with an exit code of 0”
    (#14475)
  • Fastened “Fluctuate model: Generics vs concrete model, semcheck disagreement.”
    (#8426)
  • Fastened “[Macro] Form mismatch when parameter name is the similar as a field”
    (#13253)
  • Fastened “Generic instantiation failure when changing a sequence of circular generic forms to strings”
    (#10396)
  • Fastened “initOptParser ignores argument after payment option with empty payment.”
    (#13086)
  • Fastened “[ARC] proc with both explicit and implicit return results in a C compiler error”
    (#14985)
  • Fastened “Alias model forgets implicit generic params looking on represent”
    (#14990)
  • Fastened “[ARC] sequtils.insert has assorted behaviour between ARC/refc”
    (#14994)
  • Fastened “The documentation for “sizzling code reloading” references a non-existent npm bundle”
    (#13621)
  • Fastened “existsDir deprecated but breaking dir undeclared”
    (#15006)
  • Fastened “uri.decodeUrl crashes on incorrectly formatted enter”
    (#14082)
  • Fastened “testament incorrectly experiences time for exams, leading to deprave conclusions”
    (#14822)
  • Fastened “Calling peekChar with Circulation returned from osproc.outputStream generate runtime error”
    (#14906)
  • Fastened “localPassC pragma ought to reach after other flags”
    (#14194)
  • Fastened ““Might perchance well well moreover no longer load” dynamic library at runtime attributable to hidden dependency”
    (#2408)
  • Fastened “–gc:arc generate invalid code for {.world.} («nimErr_» in NIM_UNLIKELY)”
    (#14480)
  • Fastened “Utilizing ^ from stdlib/math at the side of converters presents a match for forms that aren’t SomeNumber”
    (#15033)
  • Fastened “[ARC] Uncommon exception behaviour from doAssertRaises”
    (#15026)
  • Fastened “[ARC] Compiler smash declaring a finalizer proc straight in ‘unique’”
    (#15044)
  • Fastened “[ARC] C compiler error when creating a var of a const seq”
    (#15036)
  • Fastened “code with named arguments in proc of winim/com can no longer been compiled”
    (#15056)
  • Fastened “javascript backend produces javascript code with syntax error in object syntax”
    (#14534)
  • Fastened “–gc:arc has to be overlooked in JS mode.”
    (#14684)
  • Fastened “arc: C compilation error with imported world code utilizing a closure iterator”
    (#12990)
  • Fastened “[ARC] Fracture when editing a string with mitems iterator”
    (#15052)
  • Fastened “[ARC] SIGSEGV when calling a closure as a tuple field in a seq”
    (#15038)
  • Fastened “run varargs[seq[T]] to iterator give empty seq “
    (#12576)
  • Fastened “Compiler crashes when utilizing string as object variant selector with else department”
    (#14189)
  • Fastened “JS compiler error connected to implicit return and return var model”
    (#11354)
  • Fastened “nkRecWhen causes internalAssert in semConstructFields”
    (#14698)
  • Fastened “Memory leaks with async (closure iterators?) below ORC”
    (#15076)
  • Fastened “strutil.insertSep() fails on unfavorable numbers”
    (#11352)
  • Fastened “Organising a uint64 fluctuate on a 32-bit machine results in unsuitable codegen”
    (#14616)
  • Fastened “heapqueue pushpop() proc doesn’t collect”
    (#14139)
  • Fastened “[ARC] SIGSEGV when making an strive to swap in a literal/const string”
    (#15112)
  • Fastened “Defer and –gc:arc”
    (#15071)
  • Fastened “interior error: compiler/semobjconstr.nim(324, 20) example”
    (#15111)
  • Fastened “[ARC] Sequence “disappears” with a table internal of a table with an object variant”
    (#15122)
  • Fastened “[ARC] SIGSEGV with tuple assignment attributable to cursor inference”
    (#15130)
  • Fastened “Subject with –gc:arc at collect time”
    (#15129)
  • Fastened “Writing an empty string to an AsyncFile raises an IndexDefect”
    (#15148)
  • Fastened “Compiler is confused about name convention of feature with nested closure”
    (#5688)
  • Fastened “Nil take a look at on every field fails in generic feature”
    (#15101)
  • Fastened “{.nimcall.} convention received’t live far from the creation of closures”
    (#8473)
  • Fastened “smtp.nim(161, 40) Error: model mismatch: received but expected ‘SslContext = void’”
    (#15177)
  • Fastened “[strscans] scanf doesn’t match a single personality with $+ if it’s the tip of the string”
    (#15064)
  • Fastened “Fracture and unsuitable return values when utilizing readPasswordFromStdin on Windows.”
    (#15207)
  • Fastened “That you would be in a position to mediate of purchase error with fieldPairs and genericParams”
    (#15221)
  • Fastened “The StmtList processing of template parameters can lead to surprising errors”
    (#5691)
  • Fastened “[ARC] C compiler error when passing a var openArray to a sink openArray”
    (#15035)
  • Fastened “Inconsistent unsigned -> signed RangeDefect utilization correct via integer sizes”
    (#15210)
  • Fastened “toHex results in RangeDefect exception when used with correct uint64”
    (#15257)
  • Fastened “Arc sink arg smash”
    (#15238)
  • Fastened “SQL ruin out in db_mysql just isn’t any longer adequate”
    (#15219)
  • Fastened “Mixing ‘return’ with expressions is allowed in 1.2”
    (#15280)
  • Fastened “os.getFileInfo() causes ICE with –gc:arc on Windows”
    (#15286)
  • Fastened “[ARC] Sequence “disappears” with a table internal of a table with an object variant”
    (#15122)
  • Fastened “Documentation regression jsre module lacking”
    (#15183)
  • Fastened “CountTable.smallest/greatest() on empty table either asserts or presents bogus reply”
    (#15021)
  • Fastened “[Regression] Parser regression”
    (#15305)
  • Fastened “[ARC] SIGSEGV with tuple unpacking attributable to cursor inference”
    (#15147)
  • Fastened “LwIP/FreeRTOS collect error – lacking SIGPIPE and extra “
    (#15302)
  • Fastened “Memory leaks with async (closure iterators?) below ORC”
    (#15076)
  • Fastened “Worm compiling with –gc:arg or –gc:orc”
    (#15325)
  • Fastened “reminiscence corruption in tmarshall.nim”
    (#9754)
  • Fastened “typed macros ruin generic proc definitions”
    (#15326)
  • Fastened “nim doc2 ignores –docSeeSrcUrl parameter”
    (#6071)
  • Fastened “The decodeData Iterator from cgi module smash”
    (#15369)
  • Fastened “|| iterator generates invalid code when compiling with –debugger:native”
    (#9710)
  • Fastened “Awful selection of variables”
    (#15360)
  • Fastened “Coercions with clear forms ought to traverse pointer modifiers transparently.”
    (#7165)
  • Fastened “Error with clear generic TableRef”
    (#6060)
  • Fastened “Improve photography in nim docgen”
    (#6430)
  • Fastened “Regression. Double sem take a look at for procs.”
    (#15389)
  • Fastened “uri.nim url with literal ipv6 take care of is printed corrupt, and would possibly perchance possibly well no longer parsed all over again”
    (#15333)
  • Fastened “[ARC] Object variant will get corrupted with cursor inference”
    (#15361)
  • Fastened “nim doc .. compiler smash (regression 0.19.6 => 1.0)”
    (#14474)
  • Fastened “can no longer borrow consequence; what it borrows from is doubtlessly mutated”
    (#15403)
  • Fastened “reminiscence corruption for seq.add(seq) with gc:arc and d:useMalloc “
    (#14983)
  • Fastened “DocGen HTML output looks improperly when encountering text straight after/before inline monospace; in some circumstances received’t collect”
    (#11537)
  • Fastened “Deepcopy in arc crashes”
    (#15405)
  • Fastened “pop pragma takes invalid enter”
    (#15430)
  • Fastened “exams/stdlib/tgetprotobyname fails on NetBSD”
    (#15452)
  • Fastened “defer doesnt work with block, ruin and live up for”
    (#15243)
  • Fastened “exams/stdlib/tssl failing on NetBSD”
    (#15493)
  • Fastened “strictFuncs doesn’t seem to raise straightforward ref mutation”
    (#15508)
  • Fastened “Sizeof of case object is unsuitable. Showstopper”
    (#15516)
  • Fastened “[ARC] Inner error when making an strive to make exhaust of a parallel for loop”
    (#15512)
  • Fastened “[ARC] Form-gallop assign op just isn’t any longer being generated”
    (#15510)
  • Fastened “[ARC] Fracture when including openArray proc argument to a local seq”
    (#15511)
  • Fastened “VM: const case object will get some fields zeroed out at runtime”
    (#13081)
  • Fastened “regression(1.2.6 => devel): VM: const case object field access presents: ‘sons’ just isn’t any longer accessible”
    (#15532)
  • Fastened “Csources: mountainous size magnify (x2.3) in 0.20”
    (#12027)
  • Fastened “Outdated-long-established error message for GC alternate suggestions”
    (#15547)
  • Fastened “dbQuote extra ruin out regression”
    (#15560)

Read More

Leave A Reply

Your email address will not be published.