changelog.md 2.5 KB

v0.20.0 - XX/XX/2018

Changes affecting backwards compatibility

  • 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.

  • The unchecked pragma was removed, instead use system.UncheckedArray.
  • The undocumented #? strongSpaces parsing mode has been removed.

Breaking changes in the standard library

Breaking changes in the compiler

  • The compiler now implements the "generic symbol prepass" for 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)

Library additions

  • There is a new stdlib module editdistance as a replacement for the deprecated strutils.editDistance.

  • 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.

Library changes

  • 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.

Language additions

  • Vm suport for float32<->int32 and float64<->int64 casts was added.

Language changes

Tool changes

  • jsondoc now include a moduleDescription field with the module description. jsondoc0 shows comments as it's own objects as shown in the documentation.

Compiler changes

Bugfixes