The NetBSD Project

CVS log for pkgsrc/lang/nim/distinfo

[BACK] Up to [cvs.NetBSD.org] / pkgsrc / lang / nim

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.26 / (download) - annotate - [select for diffs], Sun May 14 21:13:53 2023 UTC (4 months, 1 week ago) by nikita
Branch: MAIN
CVS Tags: pkgsrc-2023Q2-base, pkgsrc-2023Q2, HEAD
Changes since 1.25: +2 -1 lines
Diff to previous 1.25 (colored)

nim: extend with recommendations from Chavdar Ivanov.

Revision 1.25 / (download) - annotate - [select for diffs], Wed Apr 19 22:35:27 2023 UTC (5 months, 1 week ago) by nikita
Branch: MAIN
Changes since 1.24: +4 -4 lines
Diff to previous 1.24 (colored)

nim: update to version 1.6.12

Changelog (https://nim-lang.org/blog/2022/11/23/version-1610-released.html,
https://nim-lang.org/blog/2023/03/10/version-1612-released.html):

Version 1.6.12 released

The Nim team is happy to announce version 1.6.12, our sixth patch release for Nim 1.6.

Version 1.6.12 is a result of almost four months of hard work, and it contains 51 commits, bringing some general improvements over 1.6.10.

Bugfixes

These reported issues were fixed:

    Fixed „ŗ◊‘izeof object containing a set is wrong„ŗ(#20914)
    Fixed „ŗ◊ģissing bounds check for len(toOpenArray..)„ŗ(#20954)
    Fixed „ŗ◊Ędd warning for bare except: clause„ŗ(#19580)
    Fixed „ŗ◊≠ittle Copyright notice inconsistency„ŗ(#20906)
    Fixed „ŗ◊‘td/deques: wrong result after calling shrink„ŗ(#21278)
    Fixed „ŗ◊ o.readLine adds „ŗŌĹ00„ŗchar to the end„ŗ(#21273)
    Fixed „ŗ◊Įew JS mdoe issue: return + ref ints.„ŗ(#21317)
    Fixed „ŗ◊£ad codegen for passed var seq to proc returning array[] converted to seq with @„ŗ(#21333)
    Fixed „ŗ◊Ķemplates allowed to use ambiguous identifier„ŗ(#1027)
    Fixed „ŗ◊ģutating a var parameter through a mutable view triggers SIGSEGV„ŗ(#20422)
    Fixed „ŗ◊őacOS use SecRandomCopyBytes instead of getentropy„ŗ(#20466)
    Fixed „ŗ◊»cc error when constructing an object that has the same name in the same file name in 2 different directories„ŗ(#20139)


Version 1.6.10 released

The Nim team is happy to announce version 1.6.10, our fifth patch release for Nim 1.6.

Version 1.6.10 is a result of almost four months of hard work, and it contains 29 commits, bringing some general improvements over 1.6.8.

This version brings OpenSSL 3 support to Nim 1.6, and large allocations and deallocations for ARC/ORC are now faster.

Bugfixes

These reported issues were fixed:

    Fixed „ŗōšstyleCheck:off does not work (and „ŗŇ‘tyleCheck:hint is now the default?)„ŗ(#20397)
    Fixed „ŗ◊Ňereferencing pointer to incomplete type error with gcc 9.4 with statics/cast„ŗ(#20141)
    Fixed „ŗ◊‘trutils.find uses cstring optimization that stops after \0„ŗ(#19500)
    Fixed „ŗ◊Įimpretty mangles numeric literal procs„ŗ(#20553)
    Fixed „ŗ◊≥egression in proc symbol resolution; Error: attempting to call routine „ŗ(#18990)
    Fixed „ŗ◊–f operator doesn„ŗ—’ consider generics under orc/arc„ŗ(#20391)
    Fixed „ŗōšincompatible type„ŗwhen mixing float32 and cfloat in generics„ŗ(#19349)
    Fixed „ŗ◊ńannot generate code for: mSlice with toOpenArray„ŗ(#19969)
    Fixed „ŗmm flag is ignored on latest Nim 1.7.1 be4bd8„ŗ(#20426)

Revision 1.24 / (download) - annotate - [select for diffs], Thu Sep 29 22:05:39 2022 UTC (11 months, 3 weeks ago) by charlotte
Branch: MAIN
CVS Tags: pkgsrc-2023Q1-base, pkgsrc-2023Q1, pkgsrc-2022Q4-base, pkgsrc-2022Q4
Changes since 1.23: +4 -4 lines
Diff to previous 1.23 (colored)

nim: Update to 1.6.8

Noteworthy changes from 1.6.6:

- Fixed "Add --gc:arc (or --mm:arc) induce different behavior when using
  converter" (#19862)
- Fixed "Converting unsigned integer to float fails in VM" (#19199)
- Fixed "regression(0.20.0 => devel): var params assignment gives silently
  wrong results in VM" (#15974)
- Fixed "genDepend broken for duplicate module names in separate folders"
  (#18735)
- Fixed "Orc booting compiler doesn't work with newSeq operations" (#19404)
- Fixed "hasCustomPragma and getCustomPragmaVal don't work on fields with
  backticks" (#20067)
- Fixed "Cant use uint64 in case" (#20031)
- Fixed "nim jsondoc output is broken" (#20132)
- Fixed "Underscores are unnecessarily escaped in db_mysql" (#20153)
- Fixed "Invalid codegen when block ends with lent" (#20107)
- Fixed "locals doesn't work with ORC" (#20162)
- Fixed "reset does not work on set" (#19967)
- Fixed "selectRead and selectWrite are dangerous to use sockets with FD
  numbers bigger than FD_SETSIZE (1024) on *nixes" (#19973)
- Fixed "use-after-free bugs in object variants" (#20305)
- Fixed "[ARC] C compiler error when using the result of a template in the
  subscript operator" (#20303)
- Fixed "Calling nullary templates without () doesn't work inside calls
  inside other templates" (#13515)
- Fixed "[Regression] Incorrect captures of pegs \ident macro in nim 1.6"
  (#19104)
- Fixed "Windows gcc shipped with choosenim 1.6.4 with TLS emulation turned
  off : The application was unable to start correctly (0xc000007b)."
  (#19713)

Revision 1.23 / (download) - annotate - [select for diffs], Thu May 19 01:50:25 2022 UTC (16 months, 1 week ago) by charlotte
Branch: MAIN
CVS Tags: pkgsrc-2022Q3-base, pkgsrc-2022Q3, pkgsrc-2022Q2-base, pkgsrc-2022Q2
Changes since 1.22: +4 -4 lines
Diff to previous 1.22 (colored)

nim: Update to 1.6.6

Revision 1.22 / (download) - annotate - [select for diffs], Fri Mar 4 13:19:58 2022 UTC (18 months, 3 weeks ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2022Q1-base, pkgsrc-2022Q1
Changes since 1.21: +4 -4 lines
Diff to previous 1.21 (colored)

nim: Update to 1.6.4

Changelog:
Version 1.6.4 released

08 February 2022 The Nim Team

The Nim team is happy to announce version 1.6.4, our second patch release for
Nim 1.6.

Version 1.6.4 is a result of a month and a half of hard work, and it contains
33 commits, fixing one major regression and bringing some general improvements
over 1.6.2.

The most important fix is for the C FFI regression introduced in 1.6.2.

We would recommend to all of our users to upgrade and use version 1.6.4.

Bugfixes

These reported issues were fixed:

  * Fixed "Potential C FFI regression" (#19342)
  * Fixed "re.split unexpected results with zero-width characters" (#14468)
  * Fixed "Out-of-bounds in strformat" (#19107)
  * Fixed "Adding an empty list to a non-empty list breaks the latter list" (
    #19297)
  * Fixed "Wrong result when using varargs with var arguments." (#16617)
  * Fixed "Adding an empty DoublyLinkedList to a non-empty DoublyLinkedList
    breaks the latter list" (#19314)
  * Fixed "Silent FFI bug when passing array inside object using gc:orc" (#
    19497)

Revision 1.21 / (download) - annotate - [select for diffs], Tue Jan 4 12:49:08 2022 UTC (20 months, 3 weeks ago) by ryoon
Branch: MAIN
Changes since 1.20: +4 -4 lines
Diff to previous 1.20 (colored)

nim: Update to 1.6.2

Changelog:
Bugfixes

These reported issues were fixed:

  * Fixed "SYS_getrandom undeclared compiling nim 1.6.0 stdlib on linux kernel
    < 3.17 (including RHEL7)" (#19052)
  * Fixed "Compiler terminated with IndexDefect if --gc:arc or --gc:orc given,
    when proc return a global variable with lent or var type" (#18971)
  * Fixed "Errors initializing an object of RootObj with the C++ backend" (#
    18410)
  * Fixed "Stack traces broken with arc/orc" (#19078)
  * Fixed "isolate happily compiles despite not being able to prove the
    absence of captured refs" (#19013)
  * Fixed "PragmaExpr erroneously added to enum type" (#19011)
  * Fixed "RVO not applied to object with large array" (#14470)
  * Fixed "Compile error from backend gcc when generic int type is defined" (
    #19051)
  * Fixed "Varargs broken in 1.6.0 when len is 0 and preceding block
    arguments." (#19015)
  * Fixed "VM replaces declared type with alias" (#19198)
  * Fixed "regression: effectless inner template declared as side effect" (#
    19159)
  * Fixed "variables in closure iterators loop are not correctly unassigned"
    (#19193)
  * Fixed "Unexported converters propagate through imports and affect code" (
    #19213)
  * Fixed "[arc] of operation segfaults for a ptr object containing traced
    reference" (#19205)
  * Fixed "Static linking with a .lib file not working" (#15955)

This release also includes these improvements:

  * Allow converting static vars to openArray (PR #19047)
  * Do not break interpolation for field init message string (PR #19085)
  * fixes another effect inference bug (PR #19100)
  * fix nimindexterm in rst2tex/doc2tex (PR #19106)
  * Remove tlsEmulation enabled from Windows + GCC config (PR #19119)
  * fixes .raises inference for newSeq builtin under -gc:orc (PR #19158)
  * Fix undeclared SYS_getrandom on emscripten (PR #19144)
  * Merge file size fields correctly on Windows (PR #19141)
  * fix marshal bugs in VM (PR #19161)
  * allow HSlice bounded by constants of distinct types (PR #19219)
  * fixes a possible "javascript:" protocol exploit (PR #19134)
  * let Nim support Nimble 0.14 with lock-file support (PR #19236)
  * nimRawSetjmp: support Windows (PR #19197)
  * Don't read \0 in uri.hostname (PR #19148)
  * json: limit recursion depth (PR #19252)

Revision 1.20 / (download) - annotate - [select for diffs], Sun Nov 21 16:40:02 2021 UTC (22 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2021Q4-base, pkgsrc-2021Q4
Changes since 1.19: +4 -4 lines
Diff to previous 1.19 (colored)

nim: Update to 1.6.0

Changelog:
Nim version 1.6 is now officially released!

A year in the making, 1.6 is the latest stable release and by far the largest
yet. We're proud of what we --- the core team and dedicated volunteers --- have
accomplished with this milestone:

  * 1667 PRs merged (1760 commits)
  * 893 issues closed
  * 15 new stdlib modules
  * new features in more than 40 stdlib modules, including major improvements
    to 10 commonly used modules
  * documentation and minor improvements to 170 modules, including 312 new
    runnable examples
  * 280 new nimble packages

Nim made its first entry in TIOBE index in 2017 at position 129, last year it
entered the top-100, and for 2 months the top-50 (link). We hope this release
will reinforce this trend, building on Nim's core strengths: a practical,
compiled systems programming language offering C++-like performance and
portability, Python-like syntax, Lisp-like flexibility, strong C, C++, JS,
Python interop, and best-in-class metaprogramming.

This release includes improvements in the following areas:

  * new language features (iterable[T], user-defined literals, private imports,
    strict effects, dot-like operators, block arguments with optional
    parameters)
  * new compiler features (nim --eval:cmd, custom nimscript extensions,
    customizable compiler messages)
  * major improvements to --gc:arc and --gc:orc
  * correctness and performance of integer and float parsing and rendering in
    all backends
  * significant improvements in error messages, showing useful context
  * documentation generation logic and documentation, in particular
    runnableExamples now works in more contexts
  * JS, VM and nimscript backend are more consistent with the C backend,
    allowing more modules to work with those backends, including the imports
    from std/prelude; the test suite now standardizes on testing stdlib modules
    on each major backend (C, JS, VM)
  * support for Apple silicon/M1, 32-bit RISC-V, armv8l, CROSSOS, improved
    support for NodeJS backend
  * major improvements to the following modules: system, math, random, json,
    jsonutils, os, typetraits, wrapnils, lists, hashes including performance
    improvements
  * deprecated a number of error prone or redundant features

Why use Nim?

  * One language to rule them all: from shell scripting to web frontend and
    backend, scientific computing, deep learning, blockchain client, gamedev,
    embedded, see also some companies using Nim.
  * Concise, readable and convenient: echo "hello world" is a 1-liner.
  * Small binaries: echo "hello world" generates a 73K binary (or 5K with
    further options), optimized for embedded devices (Go: 2MB, Rust: 377K, C++:
    56K) [1].
  * Fast compile times: a full compiler rebuild takes ~12s (Rust: 15min, gcc:
    30min+, clang: 1hr+, Go: 90s) [2].
  * Native performance: see Web Frameworks Benchmark, ray tracing, primes.
  * No need for makefiles, cmake, configure or other build scripts, thanks to
    compile-time function evaluation (CTFE) and dependency tracking [3].
  * Target any platform with a C compiler: Android and iOS, embedded systems,
    micro-controllers, WASM, Nintendo Switch, Game Boy Advance.
  * Zero-overhead interop lets you reuse code in C, C++ (including templates,
    C++ STL), JS, Objective-C, Python (via nimpy).
  * Built-in documentation generator that understands Nim code and runnable
    examples that stay in sync.

Last but not least, macros let you manipulate/generate code at compile time
instead of relying on code generators, enabling writing DSLs and language
extensions in user code. Typical examples include implementing Python-like
f-strings, optional chaining, command line generators, React-like Single Page
Apps, protobuf serialization and binding generators.

Installing Nim 1.6

We recommend everyone to upgrade to 1.6:

New users

Check out if your package manager already ships version 1.6 or install it as
described here.

Note: earlier this year researchers spotted malware written in Nim programming
language which supposedly led to antivirus vendors falsely tagging all software
written in Nim as a potential threat, including the Nim compiler, nimble (Nim'
s package manager) and so on (core Nim tooling is written entirely in Nim).
This has been an ongoing issue ever since - if you have any issues related to
this, please report the Nim compiler and associated tooling as false detection
to the respective antivirus vendors.

Existing users

If you have installed a previous version of Nim using choosenim, getting Nim
1.6 is as easy as:

choosenim update self
choosenim update stable

If you don't have choosenim, you can follow the same install link as above.

Building from source

git clone https://github.com/nim-lang/Nim
cd Nim
sh build_all.sh

The last command can be re-run after pulling new commits. Note that the
csources repo used was changed to csources_v1, the new setup is designed to be
forward and backward compatible.

Building from a CI setup

We now have bash APIs to (re-)build Nim from source which hide implementation
details, for example: . ci/funs.sh && nimBuildCsourcesIfNeeded. This can be
useful for CI when alternatives (using nightly builds or a Docker image) are
not suitable; in fact all the existing CI pipelines have been refactored to use
this, see #17815.

Contributors to Nim 1.6

Many thanks to our recurring and new contributors. Nim is a community driven
collaborative effort that welcomes all contributions, big or small.

Backward compatibility and preview flags

Starting with this release, we've introduced preview flags of the form
-d:nimPreviewX (e.g. -d:nimPreviewFloatRoundtrip), which allow users to opt-in
to new stdlib/compiler behavior that will likely become the default in the next
or a future release. These staging flags aim to minimize backward compatibility
issues.

We also introduced opt-out flags of the form -d:nimLegacyX, e.g.
-d:nimLegacyCopyFile, for cases where the default was changed to the new
behavior. For a transition period, these flags can be used to get the old
behavior.

Here's the list of these flags introduced in this release, refer to the text
below for explanations:

  * -d:nimLegacyCopyFile
  * -d:nimLegacyJsRound
  * -d:nimLegacyMacrosCollapseSymChoice
  * -d:nimLegacyParseQueryStrict
  * -d:nimLegacyRandomInitRand
  * -d:nimLegacyReprWithNewline
  * -d:nimLegacySigpipeHandler
  * -d:nimLegacyTypeMismatch
  * -d:nimPreviewDotLikeOps
  * -d:nimPreviewFloatRoundtrip
  * -d:nimPreviewHashRef
  * -d:nimPreviewJsonutilsHoleyEnum

Major new features

With so many new features, pinpointing the most salient ones is a subjective
exercise, but here are a select few:

iterable[T]

The iterable[T] type class was added to match called iterators, which solves a
number of long-standing issues related to iterators. Example:

iterator iota(n: int): int =
  for i in 0..<n: yield i

# previously, you'd need `untyped`, which caused other problems such as lack
# of type inference, overloading issues, and MCS.
template sumOld(a: untyped): untyped = # no type inference possible
  var result: typeof(block:(for ai in a: ai))
  for ai in a: result += ai
  result

assert sumOld(iota(3)) == 0 + 1 + 2

# now, you can write:
template sum[T](a: iterable[T]): T =
  # `template sum(a: iterable): auto =` would also be possible
  var result: T
  for ai in a: result += ai
  result

assert sum(iota(3)) == 0 + 1 + 2 # or `iota(3).sum`

In particular iterable arguments can now be used with the method call syntax.
For example:

import std/[sequtils, os]
echo walkFiles("*").toSeq # now works

See PR #17196 for additional details.

Strict effects

The effect system was refined and there is a new .effectsOf annotation that
does explicitly what was previously done implicitly. See the manual for more
details. To write code that is portable with older Nim versions, use this
idiom:

when defined(nimHasEffectsOf):
  {.experimental: "strictEffects".}
else:
  {.pragma: effectsOf.}

proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp.}

To enable the new effect system, compile with --experimental:strictEffects. See
also #18777 and RFC #408.

Private imports and private field access

A new import syntax import foo {.all.} now allows importing all symbols (public
or private) from foo. This can be useful for testing purposes or for more
flexibility in project organization.

Example:

from system {.all.} as system2 import nil
echo system2.ThisIsSystem # ThisIsSystem is private in `system`
import os {.all.} # weirdTarget is private in `os`
echo weirdTarget # or `os.weirdTarget`

Added a new module std/importutils, and an API privateAccess, which allows
access to private fields for an object type in the current scope.

Example:

import times
from std/importutils import privateAccess
block:
  let t = now()
  # echo t.monthdayZero # Error: undeclared field: 'monthdayZero' for type times.DateTime
  privateAccess(typeof(t)) # enables private access in this scope
  echo t.monthdayZero # ok

See PR #17706 for additional details.

nim --eval:cmd

Added nim --eval:cmd to evaluate a command directly, e.g.: nim --eval:"echo 1".
It defaults to e (nimscript) but can also work with other commands, e.g.:

find . | nim r --eval:'import strutils; for a in stdin.lines: echo a.toUpper'

# use as a calculator:
nim --eval:'echo 3.1 / (1.2+7)'
# explore a module's APIs, including private symbols:
nim --eval:'import os {.all.}; echo weirdTarget'
# use a custom backend:
nim r -b:js --eval:"import std/jsbigints; echo 2'big ** 64'big"

See PR #15687 for more details.

Round-trip float to string

system.addFloat and system.$ now can produce string representations of floating
point numbers that are minimal in size and possess round-trip and correct
rounding guarantees (via the Dragonbox algorithm). This currently has to be
enabled via -d:nimPreviewFloatRoundtrip. It is expected that this behavior
becomes the new default in upcoming versions, as with other nimPreviewX define
flags.

Example:

from math import round
let a = round(9.779999999999999, 2)
assert a == 9.78
echo a # with `-d:nimPreviewFloatRoundtrip`: 9.78, like in python3 (instead of  9.779999999999999)

New std/jsbigints module

Provides arbitrary precision integers for the JS target. See PR #16409.
Example:

import std/jsbigints
assert 2'big ** 65'big == 36893488147419103232'big
echo 0xdeadbeef'big shl 4'big # 59774856944n

New std/sysrand module

Cryptographically secure pseudorandom number generator, allows generating
random numbers from a secure source provided by the operating system. Example:

import std/sysrand
assert urandom(1234) != urandom(1234) # unlikely to fail in practice

See PR #16459.

New module: std/tempfiles

Allows creating temporary files and directories, see PR #17361 and followups.

import std/tempfiles
let tmpPath = genTempPath("prefix", "suffix.log", "/tmp/")
# tmpPath looks like: /tmp/prefixpmW1P2KLsuffix.log

let dir = createTempDir("tmpprefix_", "_end")
# created dir looks like: getTempDir() / "tmpprefix_YEl9VuVj_end"

let (cfile, path) = createTempFile("tmpprefix_", "_end.tmp")
# path looks like: getTempDir() / "tmpprefix_FDCIRZA0_end.tmp"
cfile.write "foo"
cfile.setFilePos 0
assert readAll(cfile) == "foo"
close cfile
assert readFile(path) == "foo"

User-defined literals

Custom numeric literals (e.g. -128'bignum) are now supported. Additionally, the
unary minus in -1 is now part of the integer literal, i.e. it is now parsed as
a single token. This implies that edge cases like -128'i8 finally work
correctly. Example:

func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".}
assert 0xffffffffffffffff'big == (1'big shl 64'big) - 1'big

Dot-like operators

With -d:nimPreviewDotLikeOps, dot-like operators (operators starting with .,
but not with ..) now have the same precedence as ., so that a.?b.c is now
parsed as (a.?b).c instead of a.?(b.c). A warning is generated when a dot-like
operator is used without -d:nimPreviewDotLikeOps.

An important use case is to enable dynamic fields without affecting the
built-in . operator, e.g. for std/jsffi, std/json, pkg/nimpy. Example:

import std/json
template `.?`(a: JsonNode, b: untyped{ident}): JsonNode =
  a[astToStr(b)]
let j = %*{"a1": {"a2": 10}}
assert j.?a1.?a2.getInt == 10

Block arguments now support optional parameters

This solves a major pain point for routines accepting block parameters, see PR
#18631 for details:

template fn(a = 1, b = 2, body) = discard
fn(1, 2): # already works
  bar
fn(a = 1): # now works
  bar

Likewise with multiple block arguments via do:

template fn(a = 1, b = 2, body1, body2) = discard
fn(a = 1): # now works
  bar1
do:
  bar2

Other features

For full changelog, see here.

Footnotes

Tested on a 2.3 GHz 8-Core Intel Core i9, 2019 macOS 11.5 with 64GB RAM.

  * [1] command used: nim c -d:danger. The binary size can be further reduced
    to 49K with stripping (--passL:-s) and link-time optimization
    (--passC:-flto). Statically linking against musl brings it under 5K - see
    here for more details.
  * [2] commands used:
      + for Nim: nim c --forceBuild compiler/nim
      + for Rust: ./x.py build, details
      + for GCC: see 1 2
      + for Clang: details
      + for Go: ./make.bash
  * [3] a separate nimscript file can be used if needed to execute code at
    compile time before compiling the main program but it's in the same
    language

Revision 1.19 / (download) - annotate - [select for diffs], Tue Oct 26 10:51:44 2021 UTC (23 months ago) by nia
Branch: MAIN
Changes since 1.18: +2 -2 lines
Diff to previous 1.18 (colored)

lang: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes

The following distfiles could not be fetched (possibly fetched
conditionally?):

./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-linux-gnu.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-linux-musl.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-netbsd.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-armv7-unknown-netbsd-eabihf.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-i686-unknown-linux-gnu.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-powerpc-unknown-netbsd90.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-sparc64-unknown-netbsd.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-apple-darwin.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-freebsd.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-linux-gnu.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-linux-musl.tar.gz
./lang/smlnj/distinfo smlnj-110.73/boot.ppc-unix.tgz
./lang/smlnj/distinfo smlnj-110.73/boot.sparc-unix.tgz
./lang/oracle-jre8/distinfo jce_policy-8.zip
./lang/oracle-jre8/distinfo jre-8u202-linux-i586.tar.gz
./lang/oracle-jre8/distinfo jre-8u202-linux-x64.tar.gz
./lang/oracle-jre8/distinfo jre-8u202-macosx-x64.tar.gz
./lang/oracle-jre8/distinfo jre-8u202-solaris-x64.tar.gz
./lang/oracle-jdk8/distinfo jdk-8u202-linux-i586.tar.gz
./lang/oracle-jdk8/distinfo jdk-8u202-linux-x64.tar.gz
./lang/oracle-jdk8/distinfo jdk-8u202-solaris-x64.tar.gz
./lang/ghc80/distinfo ghc-7.10.3-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc80/distinfo ghc-8.0.2-boot-i386-unknown-freebsd.tar.xz
./lang/ghc80/distinfo ghc-8.0.2-boot-x86_64-unknown-freebsd.tar.xz
./lang/gcc5-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.i386.freebsd.84.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.dragonfly.41.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2
./lang/rust/distinfo rust-1.53.0-aarch64-apple-darwin.tar.gz
./lang/rust/distinfo rust-1.53.0-aarch64-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-1.53.0-aarch64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-aarch64_be-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-arm-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-1.53.0-armv7-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-1.53.0-i686-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-1.53.0-powerpc-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-powerpc-unknown-netbsd90.tar.gz
./lang/rust/distinfo rust-1.53.0-sparc64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-apple-darwin.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-unknown-freebsd.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-unknown-illumos.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64-apple-darwin.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64_be-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-arm-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-std-1.53.0-armv7-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-std-1.53.0-i686-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-std-1.53.0-powerpc-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-powerpc-unknown-netbsd90.tar.gz
./lang/rust/distinfo rust-std-1.53.0-sparc64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-x86_64-apple-darwin.tar.gz
./lang/rust/distinfo rust-std-1.53.0-x86_64-unknown-freebsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-x86_64-unknown-linux-gnu.tar.gz
./lang/smlnj11072/distinfo smlnj-110.72/boot.ppc-unix.tgz
./lang/smlnj11072/distinfo smlnj-110.72/boot.sparc-unix.tgz
./lang/ghc84/distinfo ghc-8.0.2-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc84/distinfo ghc-8.4.4-boot-i386-unknown-freebsd.tar.xz
./lang/ghc84/distinfo ghc-8.4.4-boot-x86_64-apple-darwin.tar.xz
./lang/ghc84/distinfo ghc-8.4.4-boot-x86_64-unknown-freebsd.tar.xz
./lang/ghc7/distinfo ghc-7.10.3-boot-i386-unknown-freebsd.tar.xz
./lang/ghc7/distinfo ghc-7.6.3-boot-i386-unknown-solaris2.tar.xz
./lang/ghc7/distinfo ghc-7.6.3-boot-powerpc-apple-darwin.tar.xz
./lang/ghc7/distinfo ghc-7.6.3-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc90/distinfo ghc-8.10.4-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-aarch64-unknown-netbsd.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-i386-unknown-freebsd.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-x86_64-apple-darwin.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-x86_64-unknown-freebsd.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.7.76-freebsd-10-amd64-20150301.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.7.76-netbsd-7-sparc64-20150301.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.8.181-netbsd-8-aarch64-20180917.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk7u60-bin-dragonfly-3.6-amd64-20140719.tar.bz2
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk7u60-bin-dragonfly-3.8-amd64-20140719.tar.bz2
./lang/go-bin/distinfo go1.14.2.darwin-amd64.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-386.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-amd64.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-arm64.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-armv6l.tar.gz
./lang/go-bin/distinfo go1.14.2.netbsd-arm64.tar.gz
./lang/go-bin/distinfo go1.16beta1.darwin-arm64.tar.gz
./lang/gcc6-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.dragonfly.41.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2
./lang/ghc810/distinfo ghc-8.8.4-boot-x86_64-unknown-solaris2.tar.xz
./lang/sun-jre7/distinfo UnlimitedJCEPolicyJDK7.zip
./lang/sun-jre7/distinfo jre-7u80-linux-x64.tar.gz
./lang/sun-jre7/distinfo jre-7u80-solaris-i586.tar.gz
./lang/sun-jre7/distinfo jre-7u80-solaris-x64.tar.gz
./lang/ghc88/distinfo ghc-8.4.4-boot-i386-unknown-freebsd.tar.xz
./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-apple-darwin.tar.xz
./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-unknown-freebsd.tar.xz
./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-unknown-solaris2.tar.xz
./lang/gcc-aux/distinfo ada-bootstrap.i386.dragonfly.36A.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.i386.freebsd.84.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.dragonfly.36A.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2
./lang/gcc6/distinfo ecj-4.5.jar
./lang/openjdk11/distinfo bootstrap-jdk-1.11.0.7.10-netbsd-9-aarch64-20200509.tar.xz
./lang/sun-jdk7/distinfo jdk-7u80-linux-x64.tar.gz
./lang/sun-jdk7/distinfo jdk-7u80-solaris-i586.tar.gz
./lang/sun-jdk7/distinfo jdk-7u80-solaris-x64.tar.gz

Revision 1.18 / (download) - annotate - [select for diffs], Thu Oct 7 14:21:02 2021 UTC (23 months, 2 weeks ago) by nia
Branch: MAIN
Changes since 1.17: +1 -2 lines
Diff to previous 1.17 (colored)

lang: Remove SHA1 hashes for distfiles

Revision 1.17 / (download) - annotate - [select for diffs], Sun May 30 13:45:46 2021 UTC (2 years, 3 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2021Q3-base, pkgsrc-2021Q3, pkgsrc-2021Q2-base, pkgsrc-2021Q2
Changes since 1.16: +5 -5 lines
Diff to previous 1.16 (colored)

nim: Update to 1.4.6

Changelog:
Version 1.4.8 released

25 May 2021 The Nim Team

The Nim team is happy to announce version 1.4.8, our fourth patch release for
Nim 1.4.

Version 1.4.8 is a result of one month of hard work, and it contains 23 commits
, fixing the most important bugs and bringing additional improvements to our
ORC memory management.

We would recommend to all of our users to upgrade and use version 1.4.8.

Release highlights

  * Just like our devel branch, v1.4.8 is built using csources_v1, which means
    you can use it on Apple M1 chips.
  * Version 1.4.6 triggered some false positives with several antivirus
    softwares. Based on our testing, this shouldn't happen with v1.4.8.
  * Now you can use -d:release and -d:danger in your config files, no need to
    manually write these flags on the command line anymore.
  * Additional improvements to our ORC memory management. Use --gc:orc to
    compile your projects with it.


Version 1.4.6

Version 1.4.6 is our third patch release for Nim 1.4 and it brings several
fixes since version 1.4.4, released two month ago.

Bugfixes since 1.4.4

  * Fixed GC crash resulting from inlining of the memory allocation procs (link
    )
  * Fixed isolate doesn't work (#17264)
  * Fixed regression since 1.4.2: vm crash with lists.SinglyLinkedRing (#
    16384)
  * Fixed Generics sandwiched between two modules don't mixin their
    scope symbols properly (#11225)
  * Fixed json.% raises Defect for uint64 (#17383)
  * Fixed memory allocation during {.global.} init breaks GC (#17085)
  * Fixed incorrect raises effect for $(NimNode) (#17454)

Full changelog since v1.4.4 contains 19 commits.

Revision 1.16 / (download) - annotate - [select for diffs], Mon Mar 1 13:12:56 2021 UTC (2 years, 6 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2021Q1-base, pkgsrc-2021Q1
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored)

nim: Update to 1.4.4

Changelog:
Bugfixes since 1.4.2

    Fixed "-d:fulldebug switch does not compile with gc:arc" (#16214)
    Fixed "Strange behavior when calling into Nim" (#16249)
    Fixed "VC++ winnt.h fatal error "No Target Architecture" in stdlib_io." (#14259)
    Fixed "osLastError may randomly raise defect and crash" (#16359)
    Fixed "& shows as &amp; in docs" (#16364)
    Fixed "gc:arc - SIGSEGV for rawAlloc on windows" (#16365)
    Fixed "generic importc proc's don't work (breaking lots of vmops procs for js)" (#16428)
    Fixed "[ARC] Compiler error with a closure proc in a macro " (#15043)
    Fixed "genericAssignAux runtime error" (#16706)
    Fixed "Concept: codegen ignores parameter passing" (#16897)
    Fixed "{.push exportc.} interacts with anonymous functions" (#16967)
    Fixed "ARC exports a dangerous 'dispose' proc" (#17003)
    Fixed "Cursor inference leading to corrupt memory with a tuple" (#17033)
    Fixed "toOpenArray doesn't work in VM; toOpenArray with var openArray doesn't work in nim js" (#15952)
    Fixed "memory allocation during {.global.} init breaks GC" (#17085)

Revision 1.15 / (download) - annotate - [select for diffs], Mon Dec 7 12:40:44 2020 UTC (2 years, 9 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2020Q4-base, pkgsrc-2020Q4
Changes since 1.14: +5 -5 lines
Diff to previous 1.14 (colored)

nim: Update to 1.4.2

Changelog:
Bugfixes

  * Fixed "dbQuote additional escape regression" (#15560)
  * Fixed "[ARC] Finalizer with a do notation proc crashes the compiler" (#
    15599)
  * Fixed "./koch drnim: git checkout ... fails (invalid git hash)" (#15639)
  * Fixed "Testament does not check memory leaks with Valgrind" (#15631)
  * Fixed "Templates can't be made discardable" (#13609)
  * Fixed "Taking a view of var openArray[T] generates broken C" (#15652)
  * Fixed "Regression: parsecsv from newGZFileStream" (#12410)
  * Fixed "NimVM generic procs that take anonymous tuples gives nil access
    error." (#15662)
  * Fixed "net.$ is not printing a zero group smaller than the compressed
    group" (#15698)
  * Fixed "map, mapIt, filter cause a segfault at compile time in a static
    block when passed an inline function" (#15363)
  * Fixed "const Table losing object variant data at runtime" (#8007)
  * Fixed "regression(1.0.2 => 1.0.4) VM register messed up depending on
    unrelated context" (#15704)
  * Fixed "VM: nil procvar treated as not nil in VM, causing FieldDefect and
    further errors" (#15595)
  * Fixed "ICE with sequtils + algorithm (mapIt, sortedByIt) + json " (#10456
    )
  * Fixed "Size of packed enum of byte is 2 byte; if highest value is 0xFF but
    should be 1" (#15752)
  * Fixed "OrderedTable.== throws error on empty table: unhandled exception:
    index out of bounds..." (#15750)
  * Fixed "strictFunc: system & is considered to have side effects under arc
    mode" (#15756)
  * Fixed "JSON parsing fails for integer values greater than BiggestInt.max
    " (#15413)
  * Fixed "yet another cmpIgnoreStyle bug" (#7686)
  * Fixed "1 mod 0 gives NaN with JS backend" (#7127)
  * Fixed "Discarding a dom.Node raises a javascript error" (#15638)
  * Fixed "Regression: overriding streams.write(T) does not work on 0.19
    anymore" (#9091)
  * Fixed "Converter is applied to the first parameter of operator instead of
    last" (#9165)
  * Fixed "Recursion using concepts crashes compiler" (#8012)
  * Fixed "Union types in javascript" (#7658)
  * Fixed "Ambiguous call error when it's not" (#7416)
  * Fixed "Codegen does not like shadowed parameter" (#7374)
  * Fixed "incomplete code generation when using a compile time variable at
    run time (undeclared identifier)" (#6036)
  * Fixed "Compiler doesn't warn when using {.global.} and {.threadvar.} on
    JS backend despite it not working" (#11625)
  * Fixed "Discarding output with nested for/if statements" (#14227)
  * Fixed "regression: docgen drops enum doc comments" (#15702)
  * Fixed "regression(1.0): codegen error with locals" (#12682)
  * Fixed "[JS] $ on an enum in an if expression causes bad codegen" (#15651)
  * Fixed "Error upon conditional declaration inside a template" (#3670)
  * Fixed "Compiler crash when a value in enum is converted to the enum itself
    " (#15145)
  * Fixed "[AssertionDefect] json.to(type) on object with Option[ref object]
    field" (#15815)
  * Fixed "Crash with const tuple unpacking" (#15717)
  * Fixed "JS codegen can produce extreme switch statements with case a of
    range" (#8821)
  * Fixed "cannot capture result, produces unhelpful eror" (#15594)
  * Fixed "Code that work in 1.2.6, but not 1.4.0" (#15804)
  * Fixed "C-backend link failure for let with {.global, compileTime.} pragma
    " (#12640)
  * Fixed "json.to crashes (SIGSEGV) when object attribute is a JsonNode and
    the key is not there" (#15835)
  * Fixed "Cannot use custom pragmas in ref object" (#8457)
  * Fixed "GC_ref on empty string fails with [GCASSERT] incRef: interiorPtr"
    (#10307)
  * Fixed "VM segmentation faults with swap" (#15463)
  * Fixed "$(s: WideCString) changes result to repr on -gc:arc" (#15663)
  * Fixed "unittest.check rejects with a type error, code that Nim otherwise
    accepts" (#15618)
  * Fixed "Type mismatch on init of static[T] object with T being a static[U]
    " (#11142)
  * Fixed "sizeof array with static N crash in type section" (#12636)
  * Fixed "-gc:arc segfaults when returning result from a proc" (#15609)
  * Fixed "Error: 'newHttpHeaders' can have side effects" (#15851)
  * Fixed "template that overloads [] accessor does not compile" (#8829)
  * Fixed "Simple type definition crash" (#12897)
  * Fixed "mapIt from sequtils not working in {.push compile_time.} context"
    (#12558)
  * Fixed "-gc:arc/orc Error: unhandled exception: 'sym' is not accessible
    using discriminant 'kind' of type 'TNode' [FieldDefect]" (#15707)
  * Fixed "incorrect type inference with static: Error: ordinal type expected
    " (#15858)
  * Fixed "constructor causes SIGBUS if a destroy is defined" (#14601)
  * Fixed "internal error: getTypeDescAux(tyOr) on sink UnionType argument" (
    #15825)
  * Fixed "Console apps in Windows can rise OSError" (#15874)
  * Fixed "nim doc cannot grok IOSelectorsException" (#12471)
  * Fixed "Method dispatch silently breaks on non-ref objects" (#4318)
  * Fixed "Cannot take the compile-time sizeof Atomic types" (#12726)
  * Fixed "Setting subscript index of cstring is allowed and generates bad
    code" (#14157)
  * Fixed "Compiler crash using if as an expression with a noreturn branch" (
    #15909)
  * Fixed "docgen fatal: result[0].kind == nkSym [AssertionDefect]" (#15916)
  * Fixed "Iterator for sharedlist won't iterate all items." (#15941)
  * Fixed "Embedded templates with iterators fails to compile" (#2771)
  * Fixed "C++ Atomics in union: ::::::field with constructor not allowed in
    anonymous aggregate" ([#13062](https://github.com/nim-lang/Nim/issues/
    13062))
  * Fixed "memory corruption in tmarshall.nim" (#9754)
  * Fixed "JS backend doesn't handle float->int type conversion " (#8404)
  * Fixed "The "try except" not work when the "OSError: Too many open files
    " error occurs!" (#15925)
  * Fixed "lent gives wrong results with -d:release" (#14578)
  * Fixed "backticks : Using reserved keywords as identifiers is not
    documented" (#15806)
  * Fixed "backticks : Using reserved keywords as identifiers is not
    documented" (#15806)
  * Fixed "backticks : Using reserved keywords as identifiers is not
    documented" (#15806)
  * Fixed "backticks : Using reserved keywords as identifiers is not
    documented" (#15806)
  * Fixed "Program SIGSEGV when using '-gc:orc'" (#15753)
  * Fixed "Assignment to Option[T] doesn't call destructor on existing
    contained value" (#15910)
  * Fixed "In for loop _ is accessible" (#15972)
  * Fixed "Pragma codegenDecl doesn't work inside iterators" (#6497)
  * Fixed "nim js --gc:arc gives bad error: undeclared identifier: '+!'" (#
    16033)
  * Fixed "create a new function definitions got Internal error: environment
    misses:" (#14847)
  * Fixed "Nim emits #line 0 C preprocessor directives with -debugger:native,
    with ICE in gcc-10" (#15942)
  * Fixed "Serializing and deserializing a proc SIGSEV's" (#16022)
  * Fixed "Small tutorial error" (#16047)
  * Fixed "lent codegen error for c++ (works with c,js,vm)" (#15958)
  * Fixed "sink var/var sink both accepted; sink var leads to bad codegen and
    strange behavior" (#15671)
  * Fixed "tfuturevar fails when activated" (#9695)
  * Fixed "db_sqlite: Error: undeclared field: 'untypedLen'" (#16080)
  * Fixed "xmlparser removes significant white space" (#14056)
  * Fixed "nre.escapeRe is not gcsafe" (#16103)
  * Fixed "macros.getImpl still return incorrect AST for Sym "XXX:ObjectType
    "" (#16110)
  * Fixed ""Error: internal error: genRecordFieldAux" - in the "version-1-4
    " branch" (#16069)
  * Fixed "Tracking memory leaks under ORC (mostly with async)" (#15076)
  * Fixed "Const seq into sink arg: =copy operator not found" (#16120)
  * Fixed "Copying of a sink parameter into a variable not allowed" (#16119)
  * Fixed "Memleak in AsyncHttpServer with arc/orc" (#16154)

Revision 1.14 / (download) - annotate - [select for diffs], Thu Oct 22 10:54:48 2020 UTC (2 years, 11 months ago) by nikita
Branch: MAIN
Changes since 1.13: +5 -5 lines
Diff to previous 1.13 (colored)

nim: Update to 1.4.0

Changelog extracted from https://nim-lang.org/blog/2020/10/16/version-140-released.html

Standard library additions and changes

    Added some enhancements to std/jsonutils module.
        Added a possibility to deserialize JSON arrays directly to
        HashSet and OrderedSet types and respectively to serialize
        those types to JSON arrays via 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 via
        jsonutils.fromJson and jsonutils.toJson procedures.
        Added a Joptions parameter to jsonutils.fromJson currently
        containing two boolean options allowExtraKeys and
        allowMissingKeys.
            If allowExtraKeys is true Nim„ŗ—‘ object to which the JSON
            is parsed is not required to have a field for every JSON
            key.
            If allowMissingKeys is true Nim„ŗ—‘ object to which JSON is
            parsed is allowed to have fields without corresponding
            JSON keys.
    Added bindParams, bindParam to db_sqlite for binding parameters
    into a SqlPrepared statement.
    Added tryInsert,insert procs to db_* libs which accept primary key
    column name.
    Added xmltree.newVerbatimText support create style„ŗ—‘,script„ŗ—‘
    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 more
    bit-scrambling. import hashes; proc hash(x: myInt): Hash =
    hashIdentity(x) recovers the old one in an instantiation context
    while -d:nimIntHash1 recovers it globally.
    deques.peekFirst and deques.peekLast now have var Deque[T] -> var T
    overloads.

    File handles created from high-level abstractions in the stdlib
    will no longer be inherited by child processes. In particular,
    these modules are affected: asyncdispatch, asyncnet, system,
    nativesockets, net and selectors.

    For asyncdispatch, asyncnet, net and nativesockets, an inheritable
    flag has been added to all procs that create sockets, allowing the
    user to control whether the resulting socket is inheritable. This
    flag is provided to ease the writing of multi-process servers,
    where sockets inheritance is desired.

    For a transition period, define nimInheritHandles to enable file
    handle inheritance by default. This flag does not affect the
    selectors module due to the differing semantics between operating
    systems.

    asyncdispatch.setInheritable, system.setInheritable and nativesockets.setInheritable are also introduced for setting file handle or socket inheritance. Not all platforms have these procs defined.

    The file descriptors created for internal bookkeeping by
    ioselector_kqueue and ioselector_epoll will 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., not 3.

    Added commonPrefixLen to critbits.

    relativePath(rel, abs) and relativePath(abs, rel) used to silently
    give wrong results (see #13222); instead they now use
    getCurrentDir to resolve those cases, and this can now throw in
    edge cases where getCurrentDir throws. relativePath also now works
    for js with -d:nodejs.

    JavaScript and NimScript standard library changes:
    streams.StringStream is now supported in JavaScript, with the
    limitation that any buffer pointers used must be castable to ptr
    string, any incompatible pointer type will not work. The lexbase
    and streams modules used to fail to compile on NimScript due to a
    bug, but this has been fixed.

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

    Added streams.readStr and streams.peekStr overloads to accept an
    existing string to modify, which avoids memory allocations,
    similar to streams.readLine (#13857).

    Added high-level asyncnet.sendTo and asyncnet.recvFrom UDP functionality.

    dollars.$ now works for unsigned ints with nim js.

    Improvements to the bitops module, including bitslices,
    non-mutating versions of the original masking functions,
    mask/masked, and varargs support for bitand, bitor, and bitxor.

    sugar.=> and sugar.-> changes: Previously (x, y: int) was
    transformed into (x: auto, y: int), it now becomes (x: int, y:
    int) for consistency with regular proc definitions (although you
    cannot use semicolons).

    Pragmas and using a name are now allowed on the lefthand side of =>.
    Here is an example of these changes:

    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 value for DateTime more
    consistently. Most procs raise an assertion error when given an
    uninitialized DateTime, the exceptions are == and $ (which returns
    "Uninitialized DateTime"). The proc times.isInitialized has been
    added which can be used to check if a DateTime has been
    initialized.

    Fix a bug where calling close on io streams in osproc.startProcess was a noop and led to hangs if a process had both reads from stdin and writes (e.g. to stdout).
    The callback that is passed to system.onThreadDestruction must now be .raises: [].

    The callback that is assigned to system.onUnhandledException must now be .gcsafe.

    osproc.execCmdEx now takes an optional input for stdin, workingDir and env parameters.

    Added a ssl_config module containing lists of secure ciphers as recommended by Mozilla OpSec

    net.newContext now defaults to the list of ciphers targeting „ŗ◊™ntermediate compatibility„ŗper Mozilla„ŗ—‘ recommendation instead of ALL. This change should protect users from the use of weak and insecure ciphers while still provides adequate compatibility with the majority of the Internet.

    A new module std/jsonutils with hookable jsonTo,toJson,fromJson operations for json serialization/deserialization of custom types was added.
    A new proc heapqueue.find[T](heap: HeapQueue[T], x: T): int to get index of element x was 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 uses the ratio of uniforms method of sampling from a Gaussian distribution.
    Added typetraits.elementType to get the element type of an iterable.
    typetraits.$ changes: $(int,) is now "(int,)" instead of "(int)"; $tuple[] is now "tuple[]" instead of "tuple"; $((int, float), int) is now "((int, float), int)" instead of "(tuple of (int, float), int)"

    Added macros.extractDocCommentsAndRunnables helper.
    strformat.fmt and strformat.& support specifier =. fmt"{expr=}" now expands to fmt"expr={expr}".

    Deprecations: instead of os.existsDir use dirExists, instead of os.existsFile use fileExists.
    Added the jsre module, Regular Expressions for the JavaScript target..
    Made maxLines argument Positive in logging.newRollingFileLogger, because negative values will result in a new file being created for each logged line which doesn„ŗ—’ make sense.
    Changed log in logging to use proper log level for JavaScript, e.g. debug uses console.debug, info uses console.info, warn uses console.warn, etc.
    Tables, HashSets, SharedTables and deques don„ŗ—’ require anymore that the passed initial size must be a power of two - this is done internally. Proc rightSize for Tables and HashSets is deprecated, as it is not needed anymore. CountTable.inc takes val: int again not val: Positive; i.e. it can „ŗ◊ńount down„ŗagain.
    Removed deprecated symbols from macros module, some of which were deprecated already in 0.15.
    Removed sugar.distinctBase, deprecated since 0.19. Use typetraits.distinctBase.

    asyncdispatch.PDispatcher.handles is exported so that an external low-level libraries can access it.
    std/with, sugar.dup now support object field assignment expressions:

    import std/with

    type Foo = object
      x, y: int

    var foo = Foo()
    with foo:
      x = 10
      y = 20

    echo foo

    Proc math.round is no longer deprecated. The advice to use strformat instead cannot be applied to every use case. The limitations and the (lack of) reliability of round are well documented.

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

    Added missing attributes and methods to dom.Navigator like deviceMemory, onLine, vibrate(), etc.
    Added strutils.indentation and strutils.dedent which enable indented string literals:

    import strutils
    echo dedent """
      This
        is
          cool!
      """

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

    Added readLines(p: Process) to osproc.
    Added the below toX procs for collections. The usage is similar to procs such as sets.toHashSet and tables.toTable. Previously, it was necessary to create the respective empty collection and add items manually.
        critbits.toCritBitTree, which creates a CritBitTree from an openArray of items 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 control the interval at which progress callbacks are called.
    Added os.copyFileToDir.

Language changes

    The =destroy hook no longer has to reset its target, as the compiler now automatically inserts wasMoved calls where needed.

    The = hook is now called =copy for clarity. The old name = is still available so there is no need to update your code. This change was backported to 1.2 too so you can use the more readable =copy without loss of compatibility.

    In the newruntime it is now allowed to assign to the discriminator field without restrictions as long as the case object doesn„ŗ—’ have a custom destructor. The discriminator value doesn„ŗ—’ have to be a constant either. If you have a custom destructor for a case object and you do want to freely assign discriminator fields, it is recommended to refactor the object into 2 objects like this:

    type
      MyObj = object
        case kind: bool
        of true: y: ptr UncheckedArray[float]
        of false: z: seq[int]

    proc `=destroy`(x: MyObj) =
      if x.kind and x.y != nil:
        deallocShared(x.y)

    Refactor into:

    type
      MySubObj = object
        val: ptr UncheckedArray[float]
      MyObj = object
        case kind: bool
        of true: y: MySubObj
        of false: z: seq[int]

    proc `=destroy`(x: MySubObj) =
      if x.val != nil:
        deallocShared(x.val)

    getImpl on enum type symbols now returns field syms instead of idents. This helps with writing typed macros. The old behavior for backwards compatibility can be restored with --useVersion:1.0.
    The typed AST for proc headers will now have the arguments be syms instead of idents. This helps with writing typed macros. The old behaviour for backwards compatibility can be restored with --useVersion:1.0.
    let statements can now be used without a value if declared with importc/importcpp/importjs/importobjc.
    The keyword from is now usable as an operator.
    Exceptions inheriting from system.Defect are no longer tracked with the .raises: [] exception tracking mechanism. This is more consistent with the built-in operations. The following always used to compile (and still does):

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

    Now also this compiles:

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

    The reason for this is that DivByZeroDefect inherits from Defect and with --panics:on Defects become unrecoverable errors.
    Added the thiscall calling convention as specified by Microsoft, mostly for hooking purposes.
    Deprecated the {.unroll.} pragma, because it was always ignored by the compiler anyway.
    Removed the deprecated strutils.isNilOrWhitespace.
    Removed the deprecated sharedtables.initSharedTable.
    Removed the deprecated asyncdispatch.newAsyncNativeSocket.

    Removed the deprecated dom.releaseEvents and dom.captureEvents.

    Removed sharedlists.initSharedList, was deprecated and produces undefined behaviour.

    There is a new experimental feature called „ŗ◊‘trictFuncs„ŗwhich makes the definition of .noSideEffect stricter. See here for more information.

    „ŗ◊«or-loop macros„ŗ(see the manual) are no longer an experimental feature. In other words, you don„ŗ—’ have to write pragma {.experimental: "forLoopMacros".} if you want to use them.

    Added the .noalias pragma. It is mapped to C„ŗ—‘ restrict keyword for the increased performance this keyword can enable.
    items no longer compiles with enums with holes as its behavior was error prone, see #14004.

    system.deepcopy has to be enabled explicitly for --gc:arc and --gc:orc via --deepcopy:on.
    Added the std/effecttraits module for introspection of the inferred effects. We hope this enables async macros that are precise about the possible exceptions that can be raised.
    The pragma blocks {.gcsafe.}: ... and {.noSideEffect.}: ... can now also be written as {.cast(gcsafe).}: ... and {.cast(noSideEffect).}: .... This is the new preferred way of writing these, emphasizing their unsafe nature.

Compiler changes
    Specific warnings can now be turned into errors via --warningAsError[X]:on|off.
    The define and undef pragmas have been de-deprecated.
    New command: nim r main.nim [args...] which compiles and runs main.nim, and implies --usenimcache so that the output is saved to $nimcache/main$exeExt, using the same logic as nim c -r to avoid recompilations when sources don„ŗ—’ change. Example:

    nim r compiler/nim.nim --help # only 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 main # binary saved to /tmp/main

    --hint:processing is now supported and means --hint:processing:on (likewise with other hints and warnings), which is consistent with all other bool flags. (since 1.3.3).
    nim doc -r main and nim rst2html -r main now call openDefaultBrowser.
    Added the new hint --hint:msgOrigin will show where a compiler msg (hint|warning|error) was generated; this helps in particular when it„ŗ—‘ non obvious where it came from either because multiple locations generate the same message, or because the message involves runtime formatting.
    Added the new flag --backend:js|c|cpp|objc (or -b:js etc), to change the backend; can be used with any command (e.g. nim r, doc, check etc); safe to re-assign.
    Added the new flag --doccmd:cmd to pass additional flags for runnableExamples, e.g.: --doccmd:-d:foo --threads use --doccmd:skip to skip runnableExamples and rst test snippets.
    Added the new flag --usenimcache to output binary files to nimcache.
    runnableExamples "-b:cpp -r:off": code is now supported, allowing to override how an example is compiled and run, for example to change the backend.
    nim doc now outputs under $projectPath/htmldocs when --outdir is unspecified (with or without --project); passing --project now automatically generates an index and enables search. See docgen for details.
    Removed the --oldNewlines switch.
    Removed the --laxStrings switch for mutating the internal zero terminator on strings.
    Removed the --oldast switch.
    Removed the --oldgensym switch.
    $getType(untyped) is now „ŗ◊÷ntyped„ŗinstead of „ŗ◊∆xpr„ŗ $getType(typed) is now „ŗ◊’yped„ŗinstead of „ŗ◊‘tmt„ŗ
    Sink inference is now disabled per default and has to enabled explicitly via --sinkInference:on. Note: For the standard library sink inference remains enabled. This change is most relevant for the --gc:arc, --gc:orc memory management modes.

Tool changes
    nimsuggest now returns both the forward declaration and the implementation location upon a def query. Previously the behavior was to return the forward declaration only.

Bugfixes
    Fixed „ŗ◊”epr() not available for uint{,8,16,32,64} under „ŗŇ»c:arc„ŗ(#13872)
    Fixed „ŗ◊§ritical: 1 completed Future, multiple await: Only 1 await will be awakened (the last one)„ŗ(#13889)
    Fixed „ŗ◊ńrash on openarray interator with argument in stmtListExpr„ŗ(#13739)
    Fixed „ŗ◊īome compilers on Windows don„ŗ—’ work„ŗ(#13910)
    Fixed „ŗ◊…ttpclient hangs if it recieves an HTTP 204 (No Content)„ŗ(#13894)
    Fixed „ŗōšdistinct uint64„ŗtype corruption on 32-bit, when using {.borrow.} operators„ŗ(#13902)
    Fixed „ŗ◊≥egression: impossible to use typed pragmas with proc types„ŗ(#13909)
    Fixed „ŗ◊–penssl wrapper corrupts stack on OpenSSL 1.1.1f + Android„ŗ(#13903)
    Fixed „ŗ◊§ compile error with „ŗŇ»c:arc on version 1.2.0 „ŗ◊÷nknown type name „ŗŌĶGenericSeq„ŗ“š (#13863)
    Fixed „ŗ◊◊ar return type for proc doesn„ŗ—’ work at c++ backend„ŗ(#13848)
    Fixed „ŗ◊ĶimeFormat() should raise an error but craches at compilation time„ŗ(#12864)
    Fixed „ŗ◊»c:arc cannot fully support threadpool with FlowVar„ŗ(#13781)
    Fixed „ŗ◊‘imple „ŗŌ◊ar openarray[char]„ŗassignment crash when the openarray source is a local string and using gc:arc„ŗ(#14003)
    Fixed „ŗ◊§ant use expressions with when in type sections.„ŗ(#14007)
    Fixed „ŗ◊«or a in MyEnum gives incorrect results with enum with holes„ŗ(#14001)
    Fixed „ŗ◊Ķrivial crash„ŗ(#12741)
    Fixed „ŗ◊¶num with holes cannot be used as Table index„ŗ(#12834)
    Fixed „ŗ◊‘pawn proc that uses typedesc crashes the compiler„ŗ(#14014)
    Fixed „ŗ◊•ocs Search Results box styling is not Dark Mode Friendly„ŗ(#13972)
    Fixed „ŗōšgc:arc -d:useSysAssert undeclared identifier cstderr with newSeq„ŗ(#14038)
    Fixed „ŗ◊ ssues in the manual„ŗ(#12486)
    Fixed „ŗ◊Ęnnoying warning: inherit from a more precise exception type like ValueError, IOError or OSError [InheritFromException]„ŗ(#14052)
    Fixed „ŗ◊”elativePath(„ŗ◊«oo„ŗ „ŗ„ŗ and relativePath(„ŗ„ŗ „ŗ◊«oo„ŗ is wrong„ŗ(#13222)
    Fixed „ŗ◊ľregression] parseEnum does not work anymore for enums with holes„ŗ(#14030)
    Fixed „ŗ◊¶xception types in the stdlib should inherit from CatchableError or Defect, not Exception„ŗ(#10288)
    Fixed „ŗ◊ģake debugSend and debugRecv procs public in smtp.nim„ŗ(#12189)
    Fixed „ŗ◊Ŕmltree need add raw text, when add style element„ŗ(#14064)
    Fixed „ŗ◊”aises requirement does not propagate to derived methods„ŗ(#8481)
    Fixed „ŗ◊’ests/stdlib/tgetaddrinfo.nim fails on NetBSD„ŗ(#14091)
    Fixed „ŗ◊’ests/niminaction/Chapter8/sdl/sdl_test.nim fails on NetBSD„ŗ(#14088)
    Fixed „ŗ◊™ncorrect escape sequence for example in jsffi library documentation„ŗ(#14110)
    Fixed „ŗ◊©CR: Can not link exported const, in external library„ŗ(#13915)
    Fixed „ŗ◊§annot import std/unidecode„ŗ(#14112)
    Fixed „ŗ◊őacOS: dsymutil should not be called on static libraries„ŗ(#14132)
    Fixed „ŗ◊Ōim jsondoc -o:doc.json filename.nim fails when sequences without a type are used„ŗ(#14066)
    Fixed „ŗ◊¬lgorithm.sortedByIt template corrupts tuple input under „ŗŇ»c:arc„ŗ(#14079)
    Fixed „ŗ◊™nvalid C code with lvalue conversion„ŗ(#14160)
    Fixed „ŗ◊‘trformat: doc example fails„ŗ(#14054)
    Fixed „ŗ◊Įim doc fail to run for nim 1.2.0 (nim 1.0.4 is ok)„ŗ(#13986)
    Fixed „ŗ◊¶xception when converting csize to clong„ŗ(#13698)
    Fixed „ŗ◊ľDocumentation] overloading using named arguments works but is not documented„ŗ(#11932)
    Fixed „ŗ◊ mport os + use of existsDir/dirExists/existsFile/fileExists/findExe in config.nims causes „ŗ◊¬mbiguous call„ŗerror„ŗ(#14142)
    Fixed „ŗ◊ mport os + use of existsDir/dirExists/existsFile/fileExists/findExe in config.nims causes „ŗ◊¬mbiguous call„ŗerror„ŗ(#14142)
    Fixed „ŗ◊”unnableExamples doc gen crashes compiler with except Exception as e syntax„ŗ(#14177)
    Fixed „ŗ◊ľARC] Segfault with cyclic references (?)„ŗ(#14159)
    Fixed „ŗ◊īemcheck regression when accessing a static parameter in proc„ŗ(#14136)
    Fixed „ŗ◊ terator walkDir doesn„ŗ—’ work with -d:useWinAnsi„ŗ(#14201)
    Fixed „ŗ◊ńas is wrong for tcc„ŗ(#14151)
    Fixed „ŗ◊—roc execCmdEx doesn„ŗ—’ work with -d:useWinAnsi„ŗ(#14203)
    Fixed „ŗ◊∂se -d:nimEmulateOverflowChecks by default?„ŗ(#14209)
    Fixed „ŗ◊įld sequences with destructor objects bug„ŗ(#14217)
    Fixed „ŗ◊ľARC] ICE when changing the discriminant of a return value„ŗ(#14244)
    Fixed „ŗ◊ľARC] ICE with static objects„ŗ(#14236)
    Fixed „ŗ◊ľARC] „ŗ◊ nternal error: environment misses: a„ŗin a finalizer„ŗ(#14243)
    Fixed „ŗ◊ľARC] compile failure using repr with object containing ref seq[string]„ŗ(#14270)
    Fixed „ŗ◊ľARC] implicit move on last use happening on non-last use„ŗ(#14269)
    Fixed „ŗ◊ľARC] Compiler crash with a recursive non-ref object variant„ŗ(#14294)
    Fixed „ŗ◊…tmlparser.parseHtml behaves differently using „ŗŇ»c:arc or „ŗŇ»c:orc„ŗ(#13946)
    Fixed „ŗ◊™nvalid return value of openProcess is NULL rather than INVALID_HANDLE_VALUE(-1) in windows„ŗ(#14289)
    Fixed „ŗ◊ĘRC codegen bug with inline iterators„ŗ(#14219)
    Fixed „ŗ◊£uilding koch on OpenBSD fails unless the Nim directory is in $PATH„ŗ(#13758)
    Fixed „ŗ◊ľgc:arc] case object assignment SIGSEGV: destroy not called for primitive type „ŗ(#14312)
    Fixed „ŗ◊§rash when using thread and „ŗŇ»c:arc „ŗ(#13881)
    Fixed „ŗ◊®etting „ŗ◊łarning: Cannot prove that „ŗŌ”esult„ŗis initialized„ŗfor an importcpp„ŗ—Ň proc with var T return type„ŗ(#14314)
    Fixed „ŗ◊Ōim cpp -r --gc:arc segfaults on caught AssertionError„ŗ(#13071)
    Fixed „ŗ◊’ests/async/tasyncawait.nim is recently very flaky„ŗ(#14320)
    Fixed „ŗ◊•ocumentation nonexistent quitprocs module„ŗ(#14331)
    Fixed „ŗ◊īIGSEV encountered when creating threads in a loop w/ „ŗŇ»c:arc„ŗ(#13935)
    Fixed „ŗ◊Ōim-gdb is missing from all released packages„ŗ(#13104)
    Fixed „ŗ◊‘ysAssert error with gc:arc on 3 line program„ŗ(#13862)
    Fixed „ŗ◊ńompiler error with inline async proc and pragma„ŗ(#13998)
    Fixed „ŗ◊ľARC] Compiler crash when adding to a seq[ref Object]„ŗ(#14333)
    Fixed „ŗ◊Ōimvm: sysFatal: unhandled exception: „ŗŌ‘ons„ŗis not accessible using discriminant „ŗŌŐind„ŗof type „ŗŌĶNode„ŗ[FieldError]„ŗ(#14340)
    Fixed „ŗ◊ľRegression] karax events are not firing „ŗ(#14350)
    Fixed „ŗ◊–dbcsql module has some wrong integer types„ŗ(#9771)
    Fixed „ŗ◊Ňb_sqlite needs sqlPrepared„ŗ(#13559)
    Fixed „ŗ◊ľRegression] createThread is not GC-safe„ŗ(#14370)
    Fixed „ŗ◊£roken example on hot code reloading„ŗ(#14380)
    Fixed „ŗ◊”unnableExamples block with except on specified error fails with nim doc„ŗ(#12746)
    Fixed „ŗ◊ńompiler as a library: findNimStdLibCompileTime fails to find system.nim„ŗ(#12293)
    Fixed „ŗ bugs with importcpp exceptions„ŗ(#14369)
    Fixed „ŗ◊•ocs shouldn„ŗ—’ collapse pragmas inside runnableExamples/code blocks„ŗ(#14174)
    Fixed „ŗ◊£ad codegen/emit for hashes.hiXorLo in some contexts.„ŗ(#14394)
    Fixed „ŗ◊£oehm GC does not scan thread-local storage„ŗ(#14364)
    Fixed „ŗ◊≥VO not exception safe„ŗ(#14126)
    Fixed „ŗ◊”unnableExamples that are only compiled„ŗ(#10731)
    Fixed „ŗ◊«oldr raises IndexError when called on sequence„ŗ(#14404)
    Fixed „ŗ◊őoveFile does not overwrite destination file„ŗ(#14057)
    Fixed „ŗ◊Ňoc2 outputs in current work dir„ŗ(#6583)
    Fixed „ŗ◊ľdocgen] proc doc comments silently omitted after 1st runnableExamples„ŗ(#9227)
    Fixed „ŗ◊Ōim doc --project shows „ŗŌ°@/„ŗinstead of „ŗ./„ŗfor relative paths to submodules„ŗ(#14448)
    Fixed „ŗ◊”e, nre have wrong start semantics„ŗ(#14284)
    Fixed „ŗ◊”unnableExamples should preserve source code doc comments, strings, and (maybe) formatting„ŗ(#8871)
    Fixed „ŗ◊Ōim doc .. fails when runnableExamples uses $ [devel] [regression]„ŗ(#14485)
    Fixed „ŗ◊ tems is 20%~30% slower than iteration via an index„ŗ(#14421)
    Fixed „ŗ◊ĘRC: unreliable setLen „ŗ(#14495)
    Fixed „ŗ◊Õent is unsafe: after #14447 you can modify variables with „ŗ◊ tems„ŗloop for sequences„ŗ(#14498)
    Fixed „ŗ◊◊ar op = fn() wrongly gives warning ObservableStores with object of RootObj type„ŗ(#14514)
    Fixed „ŗ◊§ompiler assertion„ŗ(#14562)
    Fixed „ŗ◊§an„ŗ—’ get ord of a value of a Range type in the JS backend „ŗ(#14570)
    Fixed „ŗ◊ňs: can„ŗ—’ take addr of param (including implicitly via lent)„ŗ(#14576)
    Fixed „ŗ◊‹.noinit.} ignored in for loop -> bad codegen for non-movable types„ŗ(#14118)
    Fixed „ŗ◊»eneric destructor gives: Error: unresolved generic parameter„ŗ(#14315)
    Fixed „ŗ◊ģemory leak with arc gc„ŗ(#14568)
    Fixed „ŗ◊∆scape analysis broken with lent„ŗ(#14557)
    Fixed „ŗ◊ōrapWords seems to ignore linebreaks when wrapping, leaving breaks in the wrong place„ŗ(#14579)
    Fixed „ŗ◊Õent gives wrong results with -d:release„ŗ(#14578)
    Fixed „ŗ◊Įested await expressions regression: await a(await expandValue()) doesnt compile„ŗ(#14279)
    Fixed „ŗ◊ōindows CI docs fails with strange errors„ŗ(#14545)
    Fixed „ŗ◊ľCI] tests/async/tioselectors.nim flaky test for freebsd + OSX CI„ŗ(#13166)
    Fixed „ŗ◊‘eq.setLen sometimes doesn„ŗ—’ zero memory„ŗ(#14655)
    Fixed „ŗ◊Ōim dump is roughly 100x slower in 1.3 versus 1.2„ŗ(#14179)
    Fixed „ŗ◊≥egression: devel docgen cannot generate document for method„ŗ(#14691)
    Fixed „ŗ◊”ecently flaky tests/async/t7758.nim„ŗ(#14685)
    Fixed „ŗ◊£ind no longer working in generic procs.„ŗ(#11811)
    Fixed „ŗ◊Ķhe pegs module doesn„ŗ—’ work with generics!„ŗ(#14718)
    Fixed „ŗ◊•efer is not properly working for asynchronous procedures.„ŗ(#13899)
    Fixed „ŗ◊Ędd an ARC test with threads in a loop„ŗ(#14690)
    Fixed „ŗ◊ľgoto exceptions] {.noReturn.} pragma is not detected in a case expression„ŗ(#14458)
    Fixed „ŗ◊ľexceptions:goto] C compiler error with dynlib pragma calling a proc„ŗ(#14240)
    Fixed „ŗ◊§annot borrow var float64 in infix assignment„ŗ(#14440)
    Fixed „ŗ◊Õib/pure/memfiles.nim: compilation error with „ŗŇ’aintMode:on„ŗ(#14760)
    Fixed „ŗ◊ŌewWideCString allocates a multiple of the memory needed„ŗ(#14750)
    Fixed „ŗ◊Įim source archive install: „ŗŌ nstall.sh„ŗfails with error: cp: cannot stat „ŗŌ√in/nim-gdb„ŗ No such file or directory„ŗ(#14748)
    Fixed „ŗ◊Ōim cpp -r tests/exception/t9657 hangs„ŗ(#10343)
    Fixed „ŗ◊•etect tool fails on FreeBSD„ŗ(#14715)
    Fixed „ŗ◊ńompiler crash: findUnresolvedStatic „ŗ(#14802)
    Fixed „ŗ◊‘eq namespace (?) regression„ŗ(#4796)
    Fixed „ŗ◊Īossible out of bounds string access in std/colors parseColor and isColor„ŗ(#14839)
    Fixed „ŗ◊ńompile error on latest devel with orc and ssl„ŗ(#14647)
    Fixed „ŗ◊ľminor] $ wrong for type tuple„ŗ(#13432)
    Fixed „ŗ◊•ocumentation missing on devel asyncftpclient„ŗ(#14846)
    Fixed „ŗ◊Ōimpretty is confused with a trailing comma in enum definition„ŗ(#14401)
    Fixed „ŗ◊įutput arguments get ignored when compiling with „ŗҬpp:staticlib„ŗ(#12745)
    Fixed „ŗ◊ľARC] destructive move destroys the object too early„ŗ(#14396)
    Fixed „ŗ◊…ighlite.getNextToken() crashes if the buffer string is „ŗ◊∆cho „ŗ„ŗŕš (#14830)
    Fixed „ŗ◊ģemory corruption with „ŗŇ»c:arc with a seq of objects with an empty body.„ŗ(#14472)
    Fixed „ŗ◊ītropped identifiers don„ŗ—’ work as field names in tuple literals„ŗ(#14911)
    Fixed „ŗ◊Īlease revert my commit„ŗ(#14930)
    Fixed „ŗ◊ľARC] C compiler error with inline iterators and imports„ŗ(#14864)
    Fixed „ŗ◊ĘsyncHttpClient segfaults with gc:orc, possibly memory corruption„ŗ(#14402)
    Fixed „ŗ◊ľARC] Template with a block evaluating to a GC„ŗ—Ň value results in a compiler crash„ŗ(#14899)
    Fixed „ŗ◊ľARC] Weird issue with if expressions and templates„ŗ(#14900)
    Fixed „ŗ◊Ŕmlparser does not compile on devel„ŗ(#14805)
    Fixed „ŗ◊”eturning lent T from a var T param gives codegen errors or SIGSEGV„ŗ(#14878)
    Fixed „ŗ◊ľARC] Weird issue with if expressions and templates„ŗ(#14900)
    Fixed „ŗ◊’hreads:on + gc:orc + unittest = C compiler errors„ŗ(#14865)
    Fixed „ŗ◊őitems, mpairs doesn„ŗ—’ work at compile time anymore„ŗ(#12129)
    Fixed „ŗ◊‘trange result from executing code in const expression„ŗ(#10465)
    Fixed „ŗ◊īame warning printed 3 times„ŗ(#11009)
    Fixed „ŗ◊’ype alias for generic typeclass doesn„ŗ—’ work„ŗ(#4668)
    Fixed „ŗ◊∆xceptions:goto Bug devel codegen lvalue NIM_FALSE=NIM_FALSE„ŗ(#14925)
    Fixed „ŗ◊’he „ŗŇ÷seVersion:1.0 no longer works in devel„ŗ(#14912)
    Fixed „ŗ◊’emplate declaration of iterator doesn„ŗ—’ compile„ŗ(#4722)
    Fixed „ŗ◊§ompiler crash on type inheritance with static generic parameter and equality check„ŗ(#12571)
    Fixed „ŗ◊Įim crashes while handling a cast in async circumstances.„ŗ(#13815)
    Fixed „ŗ◊ľARC] Internal compiler error when calling an iterator from an inline proc „ŗ(#14383)
    Fixed „ŗōšCannot instantiate„ŗerror when template uses generic type„ŗ(#5926)
    Fixed „ŗ◊•ifferent raises behaviour for newTerminal between Linux and Windows„ŗ(#12759)
    Fixed „ŗ◊¶xpand on a type (that defines a proc type) in error message „ŗ(#6608)
    Fixed „ŗ◊÷nittest require quits program with an exit code of 0„ŗ(#14475)
    Fixed „ŗ◊≥ange type: Generics vs concrete type, semcheck difference.„ŗ(#8426)
    Fixed „ŗ◊ľMacro] Type mismatch when parameter name is the same as a field„ŗ(#13253)
    Fixed „ŗ◊®eneric instantiation failure when converting a sequence of circular generic types to strings„ŗ(#10396)
    Fixed „ŗ◊ nitOptParser ignores argument after value option with empty value.„ŗ(#13086)
    Fixed „ŗ◊ľARC] proc with both explicit and implicit return results in a C compiler error„ŗ(#14985)
    Fixed „ŗ◊Ęlias type forgets implicit generic params depending on order„ŗ(#14990)
    Fixed „ŗ◊ľARC] sequtils.insert has different behaviour between ARC/refc„ŗ(#14994)
    Fixed „ŗ◊Ķhe documentation for „ŗ◊…ot code reloading„ŗreferences a non-existent npm package„ŗ(#13621)
    Fixed „ŗ◊∆xistsDir deprecated but breaking dir undeclared„ŗ(#15006)
    Fixed „ŗ◊÷ri.decodeUrl crashes on incorrectly formatted input„ŗ(#14082)
    Fixed „ŗ◊’estament incorrectly reports time for tests, leading to wrong conclusions„ŗ(#14822)
    Fixed „ŗ◊§alling peekChar with Stream returned from osproc.outputStream generate runtime error„ŗ(#14906)
    Fixed „ŗ◊ÕocalPassC pragma should come after other flags„ŗ(#14194)
    Fixed „ŗōšCould not load„ŗdynamic library at runtime because of hidden dependency„ŗ(#2408)
    Fixed „ŗōšgc:arc generate invalid code for {.global.} (¬ęnimErr_¬Ľ in NIM_UNLIKELY)(#14480)
    Fixed „ŗ◊∂sing ^ from stdlib/math along with converters gives a match for types that aren„ŗ—’ SomeNumber„ŗ(#15033)
    Fixed „ŗ◊ľARC] Weird exception behaviour from doAssertRaises„ŗ(#15026)
    Fixed „ŗ◊ľARC] Compiler crash declaring a finalizer proc directly in „ŗŌŌew„ŗ“š (#15044)
    Fixed „ŗ◊ľARC] C compiler error when creating a var of a const seq„ŗ(#15036)
    Fixed „ŗ◊ńode with named arguments in proc of winim/com can not been compiled„ŗ(#15056)
    Fixed „ŗ◊ňavascript backend produces javascript code with syntax error in object syntax„ŗ(#14534)
    Fixed „ŗōšgc:arc should be ignored in JS mode.„ŗ(#14684)
    Fixed „ŗ◊¬rc: C compilation error with imported global code using a closure iterator„ŗ(#12990)
    Fixed „ŗ◊ľARC] Crash when modifying a string with mitems iterator„ŗ(#15052)
    Fixed „ŗ◊ľARC] SIGSEGV when calling a closure as a tuple field in a seq„ŗ(#15038)
    Fixed „ŗ◊—ass varargs[seq[T]] to iterator give empty seq „ŗ(#12576)
    Fixed „ŗ◊§ompiler crashes when using string as object variant selector with else branch„ŗ(#14189)
    Fixed „ŗ◊ęS compiler error related to implicit return and return var type„ŗ(#11354)
    Fixed „ŗ◊ŌkRecWhen causes internalAssert in semConstructFields„ŗ(#14698)
    Fixed „ŗ◊ģemory leaks with async (closure iterators?) under ORC„ŗ(#15076)
    Fixed „ŗ◊‘trutil.insertSep() fails on negative numbers„ŗ(#11352)
    Fixed „ŗ◊§onstructing a uint64 range on a 32-bit machine leads to incorrect codegen„ŗ(#14616)
    Fixed „ŗ◊…eapqueue pushpop() proc doesn„ŗ—’ compile„ŗ(#14139)
    Fixed „ŗ◊ľARC] SIGSEGV when trying to swap in a literal/const string„ŗ(#15112)
    Fixed „ŗ◊•efer and „ŗŇ»c:arc„ŗ(#15071)
    Fixed „ŗ◊ nternal error: compiler/semobjconstr.nim(324, 20) example„ŗ(#15111)
    Fixed „ŗ◊ľARC] Sequence „ŗ◊Ňisappears„ŗwith a table inside of a table with an object variant„ŗ(#15122)
    Fixed „ŗ◊ľARC] SIGSEGV with tuple assignment caused by cursor inference„ŗ(#15130)
    Fixed „ŗ◊™ssue with „ŗŇ»c:arc at compile time„ŗ(#15129)
    Fixed „ŗ◊łriting an empty string to an AsyncFile raises an IndexDefect„ŗ(#15148)
    Fixed „ŗ◊§ompiler is confused about call convention of function with nested closure„ŗ(#5688)
    Fixed „ŗ◊Įil check on each field fails in generic function„ŗ(#15101)
    Fixed „ŗ◊‹.nimcall.} convention won„ŗ—’ avoid the creation of closures„ŗ(#8473)
    Fixed „ŗ◊‘mtp.nim(161, 40) Error: type mismatch: got <typeof(nil)> but expected „ŗŌīslContext = void„ŗ“š (#15177)
    Fixed „ŗ◊ľstrscans] scanf doesn„ŗ—’ match a single character with $+ if it„ŗ—‘ the end of the string„ŗ(#15064)
    Fixed „ŗ◊§rash and incorrect return values when using readPasswordFromStdin on Windows.„ŗ(#15207)
    Fixed „ŗ◊Īossible capture error with fieldPairs and genericParams„ŗ(#15221)
    Fixed „ŗ◊Ķhe StmtList processing of template parameters can lead to unexpected errors„ŗ(#5691)
    Fixed „ŗ◊ľARC] C compiler error when passing a var openArray to a sink openArray„ŗ(#15035)
    Fixed „ŗ◊™nconsistent unsigned -> signed RangeDefect usage across integer sizes„ŗ(#15210)
    Fixed „ŗ◊’oHex results in RangeDefect exception when used with large uint64„ŗ(#15257)
    Fixed „ŗ◊Ęrc sink arg crash„ŗ(#15238)
    Fixed „ŗ◊īQL escape in db_mysql is not enough„ŗ(#15219)
    Fixed „ŗ◊ģixing „ŗŌ”eturn„ŗwith expressions is allowed in 1.2„ŗ(#15280)
    Fixed „ŗ◊–s.getFileInfo() causes ICE with „ŗŇ»c:arc on Windows„ŗ(#15286)
    Fixed „ŗ◊ľARC] Sequence „ŗ◊Ňisappears„ŗwith a table inside of a table with an object variant„ŗ(#15122)
    Fixed „ŗ◊•ocumentation regression jsre module missing„ŗ(#15183)
    Fixed „ŗ◊§ountTable.smallest/largest() on empty table either asserts or gives bogus answer„ŗ(#15021)
    Fixed „ŗ◊ľRegression] Parser regression„ŗ(#15305)
    Fixed „ŗ◊ľARC] SIGSEGV with tuple unpacking caused by cursor inference„ŗ(#15147)
    Fixed „ŗ◊≠wIP/FreeRTOS compile error - missing SIGPIPE and more „ŗ(#15302)
    Fixed „ŗ◊ģemory leaks with async (closure iterators?) under ORC„ŗ(#15076)
    Fixed „ŗ◊£ug compiling with „ŗŇ»c:arg or „ŗŇ»c:orc„ŗ(#15325)
    Fixed „ŗ◊őemory corruption in tmarshall.nim„ŗ(#9754)
    Fixed „ŗ◊’yped macros break generic proc definitions„ŗ(#15326)
    Fixed „ŗ◊Ōim doc2 ignores „ŗŇŇocSeeSrcUrl parameter„ŗ(#6071)
    Fixed „ŗ◊Ķhe decodeData Iterator from cgi module crash„ŗ(#15369)
    Fixed „ŗ◊›| iterator generates invalid code when compiling with „ŗŇŇebugger:native„ŗ(#9710)
    Fixed „ŗ◊łrong number of variables„ŗ(#15360)
    Fixed „ŗ◊§oercions with distinct types should traverse pointer modifiers transparently.„ŗ(#7165)
    Fixed „ŗ◊¶rror with distinct generic TableRef„ŗ(#6060)
    Fixed „ŗ◊īupport images in nim docgen„ŗ(#6430)
    Fixed „ŗ◊≥egression. Double sem check for procs.„ŗ(#15389)
    Fixed „ŗ◊÷ri.nim url with literal ipv6 address is printed wrong, and cannot parsed again„ŗ(#15333)
    Fixed „ŗ◊ľARC] Object variant gets corrupted with cursor inference„ŗ(#15361)
    Fixed „ŗ◊Ōim doc .. compiler crash (regression 0.19.6 => 1.0)„ŗ(#14474)
    Fixed „ŗ◊ńannot borrow result; what it borrows from is potentially mutated„ŗ(#15403)
    Fixed „ŗ◊őemory corruption for seq.add(seq) with gc:arc and d:useMalloc „ŗ(#14983)
    Fixed „ŗ◊•ocGen HTML output appears improperly when encountering text immediately after/before inline monospace; in some cases won„ŗ—’ compile„ŗ(#11537)
    Fixed „ŗ◊•eepcopy in arc crashes„ŗ(#15405)
    Fixed „ŗ◊—op pragma takes invalid input„ŗ(#15430)
    Fixed „ŗ◊’ests/stdlib/tgetprotobyname fails on NetBSD„ŗ(#15452)
    Fixed „ŗ◊Ňefer doesnt work with block, break and await„ŗ(#15243)
    Fixed „ŗ◊’ests/stdlib/tssl failing on NetBSD„ŗ(#15493)
    Fixed „ŗ◊‘trictFuncs doesn„ŗ—’ seem to catch simple ref mutation„ŗ(#15508)
    Fixed „ŗ◊īizeof of case object is incorrect. Showstopper„ŗ(#15516)
    Fixed „ŗ◊ľARC] Internal error when trying to use a parallel for loop„ŗ(#15512)
    Fixed „ŗ◊ľARC] Type-bound assign op is not being generated„ŗ(#15510)
    Fixed „ŗ◊ľARC] Crash when adding openArray proc argument to a local seq„ŗ(#15511)
    Fixed „ŗ◊∑M: const case object gets some fields zeroed out at runtime„ŗ(#13081)
    Fixed „ŗ◊”egression(1.2.6 => devel): VM: const case object field access gives: „ŗŌ‘ons„ŗis not accessible„ŗ(#15532)
    Fixed „ŗ◊§sources: huge size increase (x2.3) in 0.20„ŗ(#12027)
    Fixed „ŗ◊įut of date error message for GC options„ŗ(#15547)
    Fixed „ŗ◊ŇbQuote additional escape regression„ŗ(#15560)

Revision 1.13 / (download) - annotate - [select for diffs], Sun Aug 9 22:11:29 2020 UTC (3 years, 1 month ago) by nikita
Branch: MAIN
CVS Tags: pkgsrc-2020Q3-base, pkgsrc-2020Q3
Changes since 1.12: +5 -5 lines
Diff to previous 1.12 (colored)

nim: Update to 1.2.6

Changelog extracted from the unspecific changelog.md on the 1.2.6 tag.
Unable to get a Changelog diff for 1.2.4 and 1.2.6.

# v1.4.0 - yyyy-mm-dd

## Standard library additions and changes

  For `net` and `nativesockets`, an `inheritable` flag has been added to all
  `proc`s that create sockets, allowing the user to control whether the
  resulting socket is inheritable. This flag is provided to ease the writing of
  multi-process servers, where sockets inheritance is desired.

  For a transistion period, define `nimInheritHandles` to enable file handle
  inheritance by default. This flag does **not** affect the `selectors` module
  due to the differing semantics between operating systems.

  `system.setInheritable` and `nativesockets.setInheritable` is also introduced
  for setting file handle or socket inheritance. Not all platform have these
  `proc`s defined.

- The file descriptors created for internal bookkeeping by `ioselector_kqueue`
  and `ioselector_epoll` will 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.`, not `3`.
- `critbits` adds `commonPrefixLen`.

- `relativePath(rel, abs)` and `relativePath(abs, rel)` used to silently give wrong results
  (see #13222); instead they now use `getCurrentDir` to resolve those cases,
  and this can now throw in edge cases where `getCurrentDir` throws.
  `relativePath` also now works for js with `-d:nodejs`.

- JavaScript and NimScript standard library changes: `streams.StringStream` is
  now supported in JavaScript, with the limitation that any buffer `pointer`s
  used must be castable to `ptr string`, any incompatible pointer type will not
  work. The `lexbase` and `streams` modules used to fail to compile on
  NimScript due to a bug, but this has been fixed.

  The following modules now compile on both JS and NimScript: `parsecsv`,
  `parsecfg`, `parsesql`, `xmlparser`, `htmlparser` and `ropes`. Additionally
  supported for JS is `cstrutils.startsWith` and `cstrutils.endsWith`, for
  NimScript: `json`, `parsejson`, `strtabs` and `unidecode`.

- Added `streams.readStr` and `streams.peekStr` overloads to
  accept an existing string to modify, which avoids memory
  allocations, similar to `streams.readLine` (#13857).

- Added high-level `asyncnet.sendTo` and `asyncnet.recvFrom`. UDP functionality.

- `paramCount` & `paramStr` are now defined in os.nim instead of nimscript.nim for nimscript/nimble.
- `dollars.$` now works for unsigned ints with `nim js`

- Improvements to the `bitops` module, including bitslices, non-mutating versions
  of the original masking functions, `mask`/`masked`, and varargs support for
  `bitand`, `bitor`, and `bitxor`.

- `sugar.=>` and `sugar.->` changes: Previously `(x, y: int)` was transformed
  into `(x: auto, y: int)`, it now becomes `(x: int, y: int)` in consistency
  with regular proc definitions (although you cannot use semicolons).

  Pragmas and using a name are now allowed on the lefthand side of `=>`. Here
  is an aggregate example of these changes:
  ```nim
  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 value for `DateTime` more consistently. Most procs raise an assertion error when given
  an uninitialized `DateTime`, the exceptions are `==` and `$` (which returns `"Uninitialized DateTime"`). The proc `times.isInitialized`
  has been added which can be used to check if a `DateTime` has been initialized.

- Fix a bug where calling `close` on io streams in osproc.startProcess was a noop and led to
  hangs if a process had both reads from stdin and writes (eg to stdout).

- The callback that is passed to `system.onThreadDestruction` must now be `.raises: []`.
- The callback that is assigned to `system.onUnhandledException` must now be `.gcsafe`.

- `osproc.execCmdEx` now takes an optional `input` for stdin, `workingDir` and `env`
  parameters.

- Added a `ssl_config` module containing lists of secure ciphers as recommended by
  [Mozilla OpSec](https://wiki.mozilla.org/Security/Server_Side_TLS)

- `net.newContext` now defaults to the list of ciphers targeting
  ["Intermediate compatibility"](https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29)
  per Mozilla's recommendation instead of `ALL`. This change should protect
  users from the use of weak and insecure ciphers while still provides
  adequate compatibility with the majority of the Internet.

- A new module `std/jsonutils` with hookable `jsonTo,toJson,fromJson` operations for json
  serialization/deserialization of custom types was added.

- A new proc `heapqueue.find[T](heap: HeapQueue[T], x: T): int` to get index of element ``x``
  was added.
- Added `rstgen.rstToLatex` convenience proc for `renderRstToOut` and `initRstGenerator`
  with `outLatex` output.
- Added `os.normalizeExe`, e.g.: `koch` => `./koch`.
- `macros.newLit` now preserves named vs unnamed tuples; use `-d:nimHasWorkaround14720`
  to keep old behavior.
- Added `random.gauss`, that uses the ratio of uniforms method of sampling from a Gaussian distribution.
- Added `typetraits.elementType` to get element type of an iterable.
- `typetraits.$` changes: `$(int,)` is now `"(int,)"` instead of `"(int)"`;
  `$tuple[]` is now `"tuple[]"` instead of `"tuple"`;
  `$((int, float), int)` is now `"((int, float), int)"` instead of `"(tuple of (int, float), int)"`
- Added `macros.extractDocCommentsAndRunnables` helper

- `strformat.fmt` and `strformat.&` support `= specifier`. `fmt"{expr=}"` now
  expands to `fmt"expr={expr}"`.
- deprecations: `os.existsDir` => `dirExists`, `os.existsFile` => `fileExists`

- Added `jsre` module, [Regular Expressions for the JavaScript target.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)
- Made `maxLines` argument `Positive` in `logging.newRollingFileLogger`,
  because negative values will result in a new file being created for each logged
  line which doesn't make sense.
- Changed `log` in `logging` to use proper log level on JavaScript target,
  e.g. `debug` uses `console.debug`, `info` uses `console.info`, `warn` uses `console.warn`, etc.
- Tables, HashSets, SharedTables and deques don't require anymore that the passed
  initial size must be a power of two - this is done internally.
  Proc `rightSize` for Tables and HashSets is deprecated, as it is not needed anymore.
  `CountTable.inc` takes `val: int` again not `val: Positive`; I.e. it can "count down" again.
- Removed deprecated symbols from `macros` module, deprecated as far back as `0.15`.


## Language changes
- In newruntime it is now allowed to assign discriminator field without restrictions as long as case object doesn't have custom destructor. Discriminator value doesn't have to be a constant either. If you have custom destructor for case object and you do want to freely assign discriminator fields, it is recommended to refactor object into 2 objects like this:
  ```nim
  type
    MyObj = object
      case kind: bool
        of true: y: ptr UncheckedArray[float]
        of false: z: seq[int]

  proc `=destroy`(x: MyObj) =
    if x.kind and x.y != nil:
      deallocShared(x.y)
      x.y = nil
  ```
  Refactor into:
  ```nim
  type
    MySubObj = object
      val: ptr UncheckedArray[float]
    MyObj = object
      case kind: bool
      of true: y: MySubObj
      of false: z: seq[int]

  proc `=destroy`(x: MySubObj) =
    if x.val != nil:
      deallocShared(x.val)
      x.val = nil
  ```

Revision 1.12 / (download) - annotate - [select for diffs], Sun Jun 21 07:43:29 2020 UTC (3 years, 3 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2020Q2-base, pkgsrc-2020Q2
Changes since 1.11: +6 -5 lines
Diff to previous 1.11 (colored)

nim: Update to 1.2.2

Changelog:
Bugfixes

    Fixed „ŗ◊§ritical: 1 completed Future, multiple await: Only 1 await will be awakened (the last one)„ŗ(#13889)
    Fixed „ŗōšdistinct uint64„ŗtype corruption on 32-bit, when using {.borrow.} operators„ŗ(#13902)
    Fixed „ŗ◊≥egression: impossible to use typed pragmas with proc types„ŗ(#13909)
    Fixed „ŗ◊–penssl wrapper corrupts stack on OpenSSL 1.1.1f + Android„ŗ(#13903)
    Fixed „ŗ◊¬dd nimExe to nim dump„ŗ(#13876)
    Fixed „ŗ◊‘imple „ŗŌ◊ar openarray[char]„ŗassignment crash when the openarray source is a local string and using gc:arc„ŗ(#14003)
    Fixed „ŗ◊§ant use expressions with when in type sections.„ŗ(#14007)
    Fixed „ŗ◊Ęnnoying warning: inherit from a more precise exception type like ValueError, IOError or OSError [InheritFromException]„ŗ(#14052)
    Fixed „ŗ◊™ncorrect escape sequence for example in jsffi library documentation„ŗ(#14110)
    Fixed „ŗ◊őacOS: dsymutil should not be called on static libraries„ŗ(#14132)
    Fixed „ŗ◊ßix single match output„ŗ(#12920)
    Fixed „ŗ◊¬lgorithm.sortedByIt template corrupts tuple input under „ŗŇ»c:arc„ŗ(#14079)
    Fixed „ŗ◊‘trformat: doc example fails„ŗ(#14054)
    Fixed „ŗ◊Įim doc fail to run for nim 1.2.0 (nim 1.0.4 is ok)„ŗ(#13986)
    Fixed „ŗ◊¶xception when converting csize to clong„ŗ(#13698)
    Fixed „ŗ◊ľARC] Segfault with cyclic references (?)„ŗ(#14159)
    Fixed „ŗ◊ńas is wrong for tcc„ŗ(#14151)
    Fixed „ŗ◊∂se -d:nimEmulateOverflowChecks by default?„ŗ(#14209)
    Fixed „ŗ◊™nvalid return value of openProcess is NULL rather than INVALID_HANDLE_VALUE(-1) in windows„ŗ(#14289)
    Fixed „ŗ◊Ōim-gdb is missing from all released packages„ŗ(#13104)
    Fixed „ŗ◊ńompiler error with inline async proc and pragma„ŗ(#13998)
    Fixed „ŗ◊≠inker error with closures„ŗ(#209)
    Fixed „ŗ◊ĘRC codegen bug with inline iterators„ŗ(#14219)
    Fixed „ŗ◊ľARC] implicit move on last use happening on non-last use„ŗ(#14269)
    Fixed „ŗ◊£oehm GC does not scan thread-local storage„ŗ(#14364)
    Fixed „ŗ◊≥VO not exception safe„ŗ(#14126)
    Fixed „ŗ◊ĘRC: unreliable setLen „ŗ(#14495)
    Fixed „ŗ◊Õent is unsafe: after #14447 you can modify variables with „ŗ◊ tems„ŗloop for sequences„ŗ(#14498)
    Fixed „ŗ◊őoveFile does not overwrite destination file„ŗ(#14057)
    Fixed „ŗ◊◊ar op = fn() wrongly gives warning ObservableStores with object of RootObj type„ŗ(#14514)
    Fixed „ŗ◊ōrapWords seems to ignore linebreaks when wrapping, leaving breaks in the wrong place„ŗ(#14579)

Revision 1.11 / (download) - annotate - [select for diffs], Sun Apr 5 01:29:15 2020 UTC (3 years, 5 months ago) by ryoon
Branch: MAIN
Changes since 1.10: +5 -5 lines
Diff to previous 1.10 (colored)

nim: Update to 1.2.0

Changelog:
# v1.2.0 - 2020-04-02

## Standard library additions and changes

- Added overloaded `strformat.fmt` macro that use specified characters as
  delimiter instead of '{' and '}'.
- Added new procs in `tables.nim`: `OrderedTable.pop`, `CountTable.del`,
  `CountTable.pop`, `Table.pop`.
- Added `strtabs.clear` overload that reuses the existing mode.
- Added `browsers.osOpen` const alias for the operating system specific *"open"* command.
- Added `sugar.dup` for turning in-place algorithms like `sort` and `shuffle`
  into operations that work on a copy of the data and return the mutated copy,
  like the existing `sorted` does.
- Added `sugar.collect` that does comprehension for seq/set/table collections.
- Added `sugar.capture` for capturing some local loop variables when creating a
  closure. This is an enhanced version of `closureScope`.
- Added `typetraits.tupleLen` to get number of elements of a tuple/type tuple,
  and `typetraits.get` to get the ith element of a type tuple.
- Added `typetraits.genericParams` to return a tuple of generic params from a
  generic instantiation.
- `options` now treats `proc` like other pointer types, meaning `nil` proc variables
  are converted to `None`.
- Added `os.normalizePathEnd` for additional path sanitization.
- Added `times.fromUnixFloat,toUnixFloat`, sub-second resolution versions of
  `fromUnix`,`toUnixFloat`.
- Added `wrapnils` module for chains of field-access and indexing where the LHS
  can be nil. This simplifies code by reducing need for if-else branches around
  intermediate maybe nil values. E.g. `echo ?.n.typ.kind`.
- Added `minIndex`, `maxIndex` and `unzip` to the `sequtils` module.
- Added `os.isRelativeTo` to tell whether a path is relative to another.
- Added `resetOutputFormatters` to `unittest`.
- Added `expectIdent` to the `macros` module.
- Added `os.isValidFilename` that returns `true` if `filename` argument is valid
  for cross-platform use.
- Added `times.isLeapDay`
- `base64` adds URL-Safe Base64, implements RFC-4648 Section-7.
- Added a new module, `std / compilesettings` for querying the compiler about
  diverse configuration settings.
- Added `net.getPeerCertificates` and `asyncnet.getPeerCertificates` for
  retrieving the verified certificate chain of the peer we are connected to
  through an SSL-wrapped `Socket`/`AsyncSocket`.
- Added `browsers.openDefaultBrowser` without URL, implements IETF RFC-6694 Section-3.
- Added `jsconsole.trace`, `jsconsole.table`, `jsconsole.exception` for JavaScript target.
- Added `distinctBase` overload for values: `assert 12.MyInt.distinctBase == 12`
- Added new module `std/stackframes`, in particular `setFrameMsg`, which enables
  custom runtime annotation of stackframes, see #13351 for examples.
  Turn on/off via `--stackTraceMsgs:on/off`.
- Added `sequtils.countIt`, allowing for counting items using a predicate.
- Added a `with` macro for easy function chaining that's available everywhere,
  there is no need to concern your APIs with returning the first argument
  to enable "chaining", instead use the dedicated macro `with` that
  was designed for it. For example:

```nim
type
  Foo = object
    col, pos: string

proc setColor(f: var Foo; r, g, b: int) = f.col = $(r, g, b)
proc setPosition(f: var Foo; x, y: float) = f.pos = $(x, y)

var f: Foo
with(f, setColor(2, 3, 4), setPosition(0.0, 1.0))
echo f
```

- `macros.newLit` now works for ref object types.
- `macro pragmas` can now be used in type sections.
- 5 new pragmas were added to Nim in order to make the upcoming tooling more
  convenient to use. Nim compiler checks these pragmas for syntax but otherwise
  ignores them. The pragmas are `requires`, `ensures`, `assume`, `assert`, `invariant`.
- `system.writeFile` has been overloaded to also support `openarray[byte]`.
- `asyncdispatch.drain` now properly takes into account `selector.hasPendingOperations`
  and only returns once all pending async operations are guaranteed to have completed.
- `sequtils.zip` now returns a sequence of anonymous tuples i.e. those tuples
  now do not have fields named "a" and "b".
- `distinctBase` has been moved from `sugar` to `typetraits` and now it is
  implemented as compiler type trait instead of macro. `distinctBase` in sugar
  module is now deprecated.
- `CountTable.mget` has been removed from `tables.nim`. It didn't work, and it
  was an oversight to be included in v1.0.
- `tables.merge(CountTable, CountTable): CountTable` has been removed.
  It didn't work well together with the existing inplace version of the same proc
  (`tables.merge(var CountTable, CountTable)`).
  It was an oversight to be included in v1.0.
- `asyncdispatch.drain` now consistently uses the passed timeout value for all
  iterations of the event loop, and not just the first iteration.
  This is more consistent with the other asyncdispatch APIs, and allows
  `asyncdispatch.drain` to be more efficient.
- `base64.encode` and `base64.decode` were made faster by about 50%.
- `htmlgen` adds [MathML](https://wikipedia.org/wiki/MathML) support
  (ISO 40314).
- `macros.eqIdent` is now invariant to export markers and backtick quotes.
- `htmlgen.html` allows `lang` in the `<html>` tag and common valid attributes.
- `macros.basename` and `basename=` got support for `PragmaExpr`,
  so that an expression like `MyEnum {.pure.}` is handled correctly.
- `httpclient.maxredirects` changed from `int` to `Natural`, because negative values
  serve no purpose whatsoever.
- `httpclient.newHttpClient` and `httpclient.newAsyncHttpClient` added `headers`
  argument to set initial HTTP Headers, instead of a hardcoded empty `newHttpHeader()`.
- `parseutils.parseUntil` has now a different behaviour if the `until` parameter is
  empty. This was required for intuitive behaviour of the strscans module
  (see bug #13605).
- `strutils.formatFloat` with `precision = 0` has the same behavior in all
  backends, and it is compatible with Python's behavior,
  e.g. `formatFloat(3.14159, precision = 0)` is now `3`, not `3.`.
- `times.parse` now only uses input to compute its result, and not `now`:
  `parse("2020", "YYYY", utc())` is now `2020-01-01T00:00:00Z` instead of
  `2020-03-02T00:00:00Z` if run on 03-02; it also doesn't crash anymore when
  used on 29th, 30th, 31st of each month.
- `httpcore.==(string, HttpCode)` is now deprecated due to lack of practical
  usage. The `$` operator can be used to obtain the string form of `HttpCode`
  for comparison if desired.
- `std/oswalkdir` was buggy, it's now deprecated and reuses `std/os` procs.
- `net.newContext` now performs SSL Certificate checking on Linux and OSX.
  Define `nimDisableCertificateValidation` to disable it globally.
- `os.walkDir` and `os.walkDirRec` now have new flag, `checkDir` (default: false).
  If it is set to true, it will throw if input dir is invalid instead of a noop
  (which is the default behaviour, as it was before this change),
  `os.walkDirRec` only throws if top-level dir is invalid, but ignores errors for
  subdirs, otherwise it would be impossible to resume iteration.
- The `FD` variant of `selector.unregister` for `ioselector_epoll` and
  `ioselector_select` now properly handle the `Event.User` select event type.
- `joinPath` path normalization when `/` is the first argument works correctly:
  `assert "/" / "/a" == "/a"`. Fixed the edge case: `assert "" / "" == ""`.
- `xmltree` now adds indentation consistently to child nodes for any number
  of children nodes.
- `os.splitPath()` behavior synchronized with `os.splitFile()` to return "/"
  as the dir component of `/root_sub_dir` instead of the empty string.
- The deprecated `lc` macro has been removed from `sugar`. It is now replaced with the
  more powerful `collect` macro.
- `os.relativePath("foo", "foo")` is now `"."`, not `""`, as `""` means invalid
  path and shouldn't be conflated with `"."`; use `-d:nimOldRelativePathBehavior`
  to restore the old behavior.
- `os.joinPath(a, b)` now honors trailing slashes in `b` (or `a` if `b` = "").
- `base64.encode` no longer supports `lineLen` and `newLine`.
  Use `base64.encodeMime` instead.


## Language changes

- An `align` pragma can now be used for variables and object fields, similar
  to the `alignas` declaration modifier in C/C++.
- `=sink` type bound operator is now optional. Compiler can now use combination
  of `=destroy` and `copyMem` to move objects efficiently.
- Unsigned integer operators have been fixed to allow promotion of the first operand.
- Conversions to unsigned integers are unchecked at runtime, imitating earlier Nim
  versions. The documentation was improved to acknowledge this special case.
  See https://github.com/nim-lang/RFCs/issues/175 for more details.
- New syntax for lvalue references: `var b {.byaddr.} = expr` enabled by
  `import std/decls`.
- `var a {.foo.}: MyType = expr` now lowers to `foo(a, MyType, expr)` for
  non-builtin pragmas, enabling things like lvalue references (see `decls.byaddr`).


## Compiler changes

- Generated JS code uses spaces, instead of mixed spaces and tabs.
- The Nim compiler now supports the ``--asm`` command option for easier
  inspection of the produced assembler code.
- The Nim compiler now supports a new pragma called ``.localPassc`` to
  pass specific compiler options to the C(++) backend for the C(++) file
  that was produced from the current Nim module.
- The compiler now inferes "sink parameters". To disable this for a specific routine,
  annotate it with `.nosinks`. To disable it for a section of code, use
  `{.push sinkInference: off.}`...`{.pop.}`.
- The compiler now supports a new switch `--panics:on` that turns runtime
  errors like `IndexError` or `OverflowError` into fatal errors that **cannot**
  be caught via Nim's `try` statement. `--panics:on` can improve the
  runtime efficiency and code size of your program significantly.
- The compiler now warns about inheriting directly from `system.Exception` as
  this is **very bad** style. You should inherit from `ValueError`, `IOError`,
  `OSError` or from a different specific exception type that inherits from
  `CatchableError` and cannot be confused with a `Defect`.
- The error reporting for Nim's effect system has been improved.
- Implicit conversions for `const` behave correctly now, meaning that code like
  `const SOMECONST = 0.int; procThatTakesInt32(SOMECONST)` will be illegal now.
  Simply write `const SOMECONST = 0` instead.
- The `{.dynlib.}` pragma is now required for exporting symbols when making
  shared objects on POSIX and macOS, which make it consistent with the behavior
  on Windows.
- The compiler is now more strict about type conversions concerning proc
  types: Type conversions cannot be used to hide `.raise` effects or side
  effects, instead a `cast` must be used. With the flag `--useVersion:1.0` the
  old behaviour is emulated.
- The Nim compiler now implements a faster way to detect overflows based
  on GCC's `__builtin_sadd_overflow` family of functions. (Clang also
  supports these). Some versions of GCC lack this feature and unfortunately
  we cannot detect this case reliably. So if you get compilation errors like
  "undefined reference to `__builtin_saddll_overflow`" compile your programs
  with `-d:nimEmulateOverflowChecks`.


## Tool changes

- Nimpretty doesn't accept negative indentation argument anymore, because it was
  breaking files.


## Bugfixes

- Fixed "`nimgrep --nocolor` is ignored on posix; should be instead: `--nimgrep --color=[auto]|true|false`"
  ([#7591](https://github.com/nim-lang/Nim/issues/7591))
- Fixed "Runtime index on const array (of converted obj) causes C-compiler error"
  ([#10514](https://github.com/nim-lang/Nim/issues/10514))
- Fixed "windows x86 with vcc compile error with "asmNoStackFrame""
  ([#12298](https://github.com/nim-lang/Nim/issues/12298))
- Fixed "[TODO] regression: Error: Locks requires --threads:on option"
  ([#12330](https://github.com/nim-lang/Nim/issues/12330))
- Fixed "Add --cc option to --help or --fullhelp output"
  ([#12010](https://github.com/nim-lang/Nim/issues/12010))
- Fixed "questionable `csize` definition in `system.nim`"
  ([#12187](https://github.com/nim-lang/Nim/issues/12187))
- Fixed "os.getAppFilename() returns incorrect results on OpenBSD"
  ([#12389](https://github.com/nim-lang/Nim/issues/12389))
- Fixed "HashSet[uint64] slow insertion depending on values"
  ([#11764](https://github.com/nim-lang/Nim/issues/11764))
- Fixed "Differences between compiling 'classic call syntax' vs 'method call syntax' ."
  ([#12453](https://github.com/nim-lang/Nim/issues/12453))
- Fixed "c -d:nodejs --> SIGSEGV: Illegal storage access"
  ([#12502](https://github.com/nim-lang/Nim/issues/12502))
- Fixed "Closure iterator crashes on --newruntime due to "dangling references""
  ([#12443](https://github.com/nim-lang/Nim/issues/12443))
- Fixed "No `=destroy` for elements of closure environments other than for latest devel --gc:destructors"
  ([#12577](https://github.com/nim-lang/Nim/issues/12577))
- Fixed "strutils:formatBiggestFloat() gives different results in JS mode"
  ([#8242](https://github.com/nim-lang/Nim/issues/8242))
- Fixed "Regression (devel): the new `csize_t` definition isn't consistently used, nor tested thoroughly..."
  ([#12597](https://github.com/nim-lang/Nim/issues/12597))
- Fixed "tables.take() is defined only for `Table` and missed for other table containers"
  ([#12519](https://github.com/nim-lang/Nim/issues/12519))
- Fixed "`pthread_key_t` errors on OpenBSD"
  ([#12135](https://github.com/nim-lang/Nim/issues/12135))
- Fixed "newruntime: simple seq pop at ct results in compile error"
  ([#12644](https://github.com/nim-lang/Nim/issues/12644))
- Fixed "[Windows] finish.exe C:\Users\<USERNAME>\.nimble\bin is not in your PATH environment variable."
  ([#12319](https://github.com/nim-lang/Nim/issues/12319))
- Fixed "Error with strformat + asyncdispatch + const"
  ([#12612](https://github.com/nim-lang/Nim/issues/12612))
- Fixed "MultipartData needs $"
  ([#11863](https://github.com/nim-lang/Nim/issues/11863))
- Fixed "Nim stdlib style issues with --styleCheck:error"
  ([#12687](https://github.com/nim-lang/Nim/issues/12687))
- Fixed "new $nimbleDir path substitution yields unexpected search paths"
  ([#12767](https://github.com/nim-lang/Nim/issues/12767))
- Fixed "Regression: inlined procs now get multiple rounds of destructor injection"
  ([#12766](https://github.com/nim-lang/Nim/issues/12766))
- Fixed "newruntime: compiler generates defective code"
  ([#12669](https://github.com/nim-lang/Nim/issues/12669))
- Fixed "broken windows modules path handling because of 'os.relativePath' breaking changes"
  ([#12734](https://github.com/nim-lang/Nim/issues/12734))
- Fixed "for loop tuple syntax not rendered correctly"
  ([#12740](https://github.com/nim-lang/Nim/issues/12740))
- Fixed "Crash when trying to use `type.name[0]`"
  ([#12804](https://github.com/nim-lang/Nim/issues/12804))
- Fixed "Enums should be considered Trivial types in Atomics"
  ([#12812](https://github.com/nim-lang/Nim/issues/12812))
- Fixed "Produce static/const initializations for variables when possible"
  ([#12216](https://github.com/nim-lang/Nim/issues/12216))
- Fixed "Assigning descriminator field leads to internal assert with --gc:destructors"
  ([#12821](https://github.com/nim-lang/Nim/issues/12821))
- Fixed "nimsuggest `use` command does not return all instances of symbol"
  ([#12832](https://github.com/nim-lang/Nim/issues/12832))
- Fixed "@[] is a problem for --gc:destructors"
  ([#12820](https://github.com/nim-lang/Nim/issues/12820))
- Fixed "Codegen ICE in allPathsAsgnResult"
  ([#12827](https://github.com/nim-lang/Nim/issues/12827))
- Fixed "seq[Object with ref and destructor type] doesn't work in old runtime"
  ([#12882](https://github.com/nim-lang/Nim/issues/12882))
- Fixed "Destructor not invoked because it is instantiated too late, old runtime"
  ([#12883](https://github.com/nim-lang/Nim/issues/12883))
- Fixed "The collect macro does not handle if/case correctly"
  ([#12874](https://github.com/nim-lang/Nim/issues/12874))
- Fixed "allow typed/untyped params in magic procs (even if not in stdlib)"
  ([#12911](https://github.com/nim-lang/Nim/issues/12911))
- Fixed "ARC/newruntime memory corruption"
  ([#12899](https://github.com/nim-lang/Nim/issues/12899))
- Fixed "tasyncclosestall.nim still flaky test: Address already in use"
  ([#12919](https://github.com/nim-lang/Nim/issues/12919))
- Fixed "newruntime and computed goto: variables inside the loop are in generated code uninitialised"
  ([#12785](https://github.com/nim-lang/Nim/issues/12785))
- Fixed "osx: dsymutil needs to be called for debug builds to keep debug info"
  ([#12735](https://github.com/nim-lang/Nim/issues/12735))
- Fixed "codegen ICE with ref objects, gc:destructors"
  ([#12826](https://github.com/nim-lang/Nim/issues/12826))
- Fixed "mutable iterator cannot yield named tuples"
  ([#12945](https://github.com/nim-lang/Nim/issues/12945))
- Fixed "parsecfg stores "\r\n" line breaks just as "\n""
  ([#12970](https://github.com/nim-lang/Nim/issues/12970))
- Fixed "db_postgres.getValue issues warning when no rows found"
  ([#12973](https://github.com/nim-lang/Nim/issues/12973))
- Fixed "ARC: Unpacking tuple with seq causes segfault"
  ([#12989](https://github.com/nim-lang/Nim/issues/12989))
- Fixed "ARC/newruntime: strutils.join on seq with only empty strings causes segfault"
  ([#12965](https://github.com/nim-lang/Nim/issues/12965))
- Fixed "regression (1.0.4): `{.push exportc.}` wrongly affects generic instantiations, causing codegen errors"
  ([#12985](https://github.com/nim-lang/Nim/issues/12985))
- Fixed "cdt, crash with --gc:arc, works fine with default gc"
  ([#12978](https://github.com/nim-lang/Nim/issues/12978))
- Fixed "ARC: No indexError thrown on out-of-bound seq access, SIGSEGV instead"
  ([#12961](https://github.com/nim-lang/Nim/issues/12961))
- Fixed "ARC/async: Returning in a try-block results in wrong codegen"
  ([#12956](https://github.com/nim-lang/Nim/issues/12956))
- Fixed "asm keyword is generating wrong output C code when --cc:tcc"
  ([#12988](https://github.com/nim-lang/Nim/issues/12988))
- Fixed "Destructor not invoked"
  ([#13026](https://github.com/nim-lang/Nim/issues/13026))
- Fixed "ARC/newruntime: Adding inherited var ref object to seq with base type causes segfault"
  ([#12964](https://github.com/nim-lang/Nim/issues/12964))
- Fixed "Style check error with JS compiler target"
  ([#13032](https://github.com/nim-lang/Nim/issues/13032))
- Fixed "regression(1.0.4): undeclared identifier: 'readLines'; plus another regression and bug"
  ([#13013](https://github.com/nim-lang/Nim/issues/13013))
- Fixed "regression(1.04) `invalid pragma: since` with nim js"
  ([#12996](https://github.com/nim-lang/Nim/issues/12996))
- Fixed "Sink to MemMove optimization in injectdestructors"
  ([#13002](https://github.com/nim-lang/Nim/issues/13002))
- Fixed "--gc:arc: `catch` doesn't work with exception subclassing"
  ([#13072](https://github.com/nim-lang/Nim/issues/13072))
- Fixed "nim c --gc:arc --exceptions:{setjmp,goto} incorrectly handles raise; `nim cpp --gc:arc` is ok"
  ([#13070](https://github.com/nim-lang/Nim/issues/13070))
- Fixed "typetraits feature request - get subtype of a generic type"
  ([#6454](https://github.com/nim-lang/Nim/issues/6454))
- Fixed "CountTable inconsistencies between keys() and len() after setting value to 0"
  ([#12813](https://github.com/nim-lang/Nim/issues/12813))
- Fixed "{.align.} pragma is not applied if there is a generic field"
  ([#13122](https://github.com/nim-lang/Nim/issues/13122))
- Fixed "ARC, finalizer, allow rebinding the same function multiple times"
  ([#13112](https://github.com/nim-lang/Nim/issues/13112))
- Fixed "`nim doc` treats `export localSymbol` incorrectly"
  ([#13100](https://github.com/nim-lang/Nim/issues/13100))
- Fixed "--gc:arc SIGSEGV (double free?)"
  ([#13119](https://github.com/nim-lang/Nim/issues/13119))
- Fixed "codegen bug with arc"
  ([#13105](https://github.com/nim-lang/Nim/issues/13105))
- Fixed "symbols not defined in the grammar"
  ([#10665](https://github.com/nim-lang/Nim/issues/10665))
- Fixed "[JS] Move is not defined"
  ([#9674](https://github.com/nim-lang/Nim/issues/9674))
- Fixed "[TODO] pathutils.`/` can return invalid AbsoluteFile"
  ([#13121](https://github.com/nim-lang/Nim/issues/13121))
- Fixed "regression(1.04) `nim doc main.nim` generates broken html (no css)"
  ([#12998](https://github.com/nim-lang/Nim/issues/12998))
- Fixed "Wrong supportsCopyMem on string in type section"
  ([#13095](https://github.com/nim-lang/Nim/issues/13095))
- Fixed "Arc, finalizer, out of memory"
  ([#13157](https://github.com/nim-lang/Nim/issues/13157))
- Fixed "`--genscript` messes up nimcache and future nim invocations"
  ([#13144](https://github.com/nim-lang/Nim/issues/13144))
- Fixed "--gc:arc with --exceptions:goto for "nim c" generate invalid c code"
  ([#13186](https://github.com/nim-lang/Nim/issues/13186))
- Fixed "[regression] duplicate member `_i1` codegen bug"
  ([#13195](https://github.com/nim-lang/Nim/issues/13195))
- Fixed "RTree investigations with valgrind for --gc:arc"
  ([#13110](https://github.com/nim-lang/Nim/issues/13110))
- Fixed "relativePath("foo", ".") returns wrong path"
  ([#13211](https://github.com/nim-lang/Nim/issues/13211))
- Fixed "asyncftpclient - problem with welcome.msg"
  ([#4684](https://github.com/nim-lang/Nim/issues/4684))
- Fixed "Unclear error message, lowest priority"
  ([#13256](https://github.com/nim-lang/Nim/issues/13256))
- Fixed "Channel messages are corrupted"
  ([#13219](https://github.com/nim-lang/Nim/issues/13219))
- Fixed "Codegen bug with exportc and case objects"
  ([#13281](https://github.com/nim-lang/Nim/issues/13281))
- Fixed "[bugfix] fix #11590: c compiler warnings silently ignored, giving undefined behavior"
  ([#11591](https://github.com/nim-lang/Nim/issues/11591))
- Fixed "[CI] tnetdial flaky test"
  ([#13132](https://github.com/nim-lang/Nim/issues/13132))
- Fixed "Cross-Compiling with -d:mingw fails to locate compiler under OSX"
  ([#10717](https://github.com/nim-lang/Nim/issues/10717))
- Fixed "`nim doc --project` broken with imports below main project file or duplicate names"
  ([#13150](https://github.com/nim-lang/Nim/issues/13150))
- Fixed "regression: isNamedTuple(MyGenericTuple[int]) is false, should be true"
  ([#13349](https://github.com/nim-lang/Nim/issues/13349))
- Fixed "--gc:arc codegen bug copying objects bound to C structs with missing C struct fields"
  ([#13269](https://github.com/nim-lang/Nim/issues/13269))
- Fixed "write requires conversion to string"
  ([#13182](https://github.com/nim-lang/Nim/issues/13182))
- Fixed "Some remarks to stdlib documentation"
  ([#13352](https://github.com/nim-lang/Nim/issues/13352))
- Fixed "a `check` in unittest generated by template doesn't show actual value"
  ([#6736](https://github.com/nim-lang/Nim/issues/6736))
- Fixed "Implicit return with case expression fails with 'var' return."
  ([#3339](https://github.com/nim-lang/Nim/issues/3339))
- Fixed "Segfault with closure on arc"
  ([#13314](https://github.com/nim-lang/Nim/issues/13314))
- Fixed "[Macro] Crash on malformed case statement with multiple else"
  ([#13255](https://github.com/nim-lang/Nim/issues/13255))
- Fixed "regression: `echo 'discard' | nim c -r -` generates a file '-' ; `-` should be treated specially"
  ([#13374](https://github.com/nim-lang/Nim/issues/13374))
- Fixed "on OSX, debugging (w gdb or lldb) a nim program crashes at the 1st call to `execCmdEx`"
  ([#9634](https://github.com/nim-lang/Nim/issues/9634))
- Fixed "Internal error in getTypeDescAux"
  ([#13378](https://github.com/nim-lang/Nim/issues/13378))
- Fixed "gc:arc mode breaks tuple let"
  ([#13368](https://github.com/nim-lang/Nim/issues/13368))
- Fixed "Nim compiler hangs for certain C/C++ compiler errors"
  ([#8648](https://github.com/nim-lang/Nim/issues/8648))
- Fixed "htmlgen does not support `data-*` attributes"
  ([#13444](https://github.com/nim-lang/Nim/issues/13444))
- Fixed "[gc:arc] setLen will cause string not to be null-terminated."
  ([#13457](https://github.com/nim-lang/Nim/issues/13457))
- Fixed "joinPath("", "") is "/" ; should be """
  ([#13455](https://github.com/nim-lang/Nim/issues/13455))
- Fixed "[CI] flaky test on windows: tests/osproc/texitcode.nim"
  ([#13449](https://github.com/nim-lang/Nim/issues/13449))
- Fixed "Casting to float32 on NimVM is broken"
  ([#13479](https://github.com/nim-lang/Nim/issues/13479))
- Fixed "`--hints:off` doesn't work (doesn't override ~/.config/nim.cfg)"
  ([#8312](https://github.com/nim-lang/Nim/issues/8312))
- Fixed "joinPath("", "") is "/" ; should be """
  ([#13455](https://github.com/nim-lang/Nim/issues/13455))
- Fixed "tables.values is broken"
  ([#13496](https://github.com/nim-lang/Nim/issues/13496))
- Fixed "global user config can override project specific config"
  ([#9405](https://github.com/nim-lang/Nim/issues/9405))
- Fixed "Non deterministic macros and id consistency problem"
  ([#12627](https://github.com/nim-lang/Nim/issues/12627))
- Fixed "try expression doesn't work with return on expect branch"
  ([#13490](https://github.com/nim-lang/Nim/issues/13490))
- Fixed "CI will break every 4 years on feb 28: times doesn't handle leap years properly"
  ([#13543](https://github.com/nim-lang/Nim/issues/13543))
- Fixed "[minor] `nimgrep --word` doesn't work with operators (eg misses  `1 +% 2`)"
  ([#13528](https://github.com/nim-lang/Nim/issues/13528))
- Fixed "`as` is usable as infix operator but its existence and precedence are not documented"
  ([#13409](https://github.com/nim-lang/Nim/issues/13409))
- Fixed "JSON unmarshalling drops seq's items"
  ([#13531](https://github.com/nim-lang/Nim/issues/13531))
- Fixed "os.joinPath returns wrong path when head ends '\' or '/' and tail starts '..'."
  ([#13579](https://github.com/nim-lang/Nim/issues/13579))
- Fixed "Block-local types with the same name lead to bad codegen (sighashes regression)"
  ([#5170](https://github.com/nim-lang/Nim/issues/5170))
- Fixed "tuple codegen error"
  ([#12704](https://github.com/nim-lang/Nim/issues/12704))
- Fixed "newHttpHeaders does not accept repeated headers"
  ([#13573](https://github.com/nim-lang/Nim/issues/13573))
- Fixed "regression: --incremental:on fails on simplest example"
  ([#13319](https://github.com/nim-lang/Nim/issues/13319))
- Fixed "strscan can't get value of last element in format"
  ([#13605](https://github.com/nim-lang/Nim/issues/13605))
- Fixed "hashes_examples crashes with "Bus Error" (unaligned access) on sparc64"
  ([#12508](https://github.com/nim-lang/Nim/issues/12508))
- Fixed "gc:arc bug with re-used `seq[T]`"
  ([#13596](https://github.com/nim-lang/Nim/issues/13596))
- Fixed "`raise CatchableError` is broken with --gc:arc  when throwing inside a proc"
  ([#13599](https://github.com/nim-lang/Nim/issues/13599))
- Fixed "cpp --gc:arc --exceptions:goto fails to raise with discard"
  ([#13436](https://github.com/nim-lang/Nim/issues/13436))
- Fixed "terminal doesn't compile with -d:useWinAnsi"
  ([#13607](https://github.com/nim-lang/Nim/issues/13607))
- Fixed "Parsing "sink ptr T" - region needs to be an object type"
  ([#12757](https://github.com/nim-lang/Nim/issues/12757))
- Fixed "gc:arc + threads:on + closures compilation error"
  ([#13519](https://github.com/nim-lang/Nim/issues/13519))
- Fixed "[ARC] segmentation fault"
  ([#13240](https://github.com/nim-lang/Nim/issues/13240))
- Fixed "times.toDateTime buggy on 29th, 30th and 31th of each month"
  ([#13558](https://github.com/nim-lang/Nim/issues/13558))
- Fixed "Deque misbehaves on VM"
  ([#13310](https://github.com/nim-lang/Nim/issues/13310))
- Fixed "Nimscript listFiles should throw exception when path is not found"
  ([#12676](https://github.com/nim-lang/Nim/issues/12676))
- Fixed "koch boot fails if even an empty config.nims is present in ~/.config/nims/ [devel regression]"
  ([#13633](https://github.com/nim-lang/Nim/issues/13633))
- Fixed "nim doc generates lots of false positive LockLevel warnings"
  ([#13218](https://github.com/nim-lang/Nim/issues/13218))
- Fixed "Arrays are passed by copy to iterators, causing crashes, unnecessary allocations and slowdowns"
  ([#12747](https://github.com/nim-lang/Nim/issues/12747))
- Fixed "Range types always uses signed integer as a base type"
  ([#13646](https://github.com/nim-lang/Nim/issues/13646))
- Fixed "Generate c code cannot compile with recent devel version"
  ([#13645](https://github.com/nim-lang/Nim/issues/13645))
- Fixed "[regression] VM: Error: cannot convert -1 to uint64"
  ([#13661](https://github.com/nim-lang/Nim/issues/13661))
- Fixed "Spurious raiseException(Exception) detected"
  ([#13654](https://github.com/nim-lang/Nim/issues/13654))
- Fixed "gc:arc memory leak"
  ([#13659](https://github.com/nim-lang/Nim/issues/13659))
- Fixed "Error: cannot convert -1 to uint (inside tuples)"
  ([#13671](https://github.com/nim-lang/Nim/issues/13671))
- Fixed "strformat issue with --gc:arc"
  ([#13622](https://github.com/nim-lang/Nim/issues/13622))
- Fixed "astToStr doesn't work inside generics"
  ([#13524](https://github.com/nim-lang/Nim/issues/13524))
- Fixed "oswalkdir.walkDirRec wont return folders"
  ([#11458](https://github.com/nim-lang/Nim/issues/11458))
- Fixed "`echo 'echo 1' | nim c -r -`  silently gives wrong results (nimBetterRun not updated for stdin)"
  ([#13412](https://github.com/nim-lang/Nim/issues/13412))
- Fixed "gc:arc destroys the global variable accidentally."
  ([#13691](https://github.com/nim-lang/Nim/issues/13691))
- Fixed "[minor] sigmatch errors should be sorted, for reproducible errors"
  ([#13538](https://github.com/nim-lang/Nim/issues/13538))
- Fixed "Exception when converting csize to clong"
  ([#13698](https://github.com/nim-lang/Nim/issues/13698))
- Fixed "ARC: variables are no copied on the thread spawn causing crashes"
  ([#13708](https://github.com/nim-lang/Nim/issues/13708))
- Fixed "Illegal distinct seq causes compiler crash"
  ([#13720](https://github.com/nim-lang/Nim/issues/13720))
- Fixed "cyclic seq definition crashes the compiler"
  ([#13715](https://github.com/nim-lang/Nim/issues/13715))
- Fixed "Iterator with openArray parameter make the argument evaluated many times"
  ([#13417](https://github.com/nim-lang/Nim/issues/13417))
- Fixed "net/asyncnet: Unable to access peer's certificate chain"
  ([#13299](https://github.com/nim-lang/Nim/issues/13299))
- Fixed "Accidentally "SIGSEGV: Illegal storage access" error after arc optimizations (#13325)"
  ([#13709](https://github.com/nim-lang/Nim/issues/13709))
- Fixed "Base64 Regression"
  ([#13722](https://github.com/nim-lang/Nim/issues/13722))
- Fixed "A regression (?) with --gc:arc and repr"
  ([#13731](https://github.com/nim-lang/Nim/issues/13731))
- Fixed "Internal compiler error when using the new variable pragmas"
  ([#13737](https://github.com/nim-lang/Nim/issues/13737))
- Fixed "bool conversion produces vcc 2019 warning at cpp compilation stage"
  ([#13744](https://github.com/nim-lang/Nim/issues/13744))
- Fixed "Compiler "does not detect" a type recursion error in the wrong code, remaining frozen"
  ([#13763](https://github.com/nim-lang/Nim/issues/13763))
- Fixed "[minor] regression: `Foo[0.0] is Foo[-0.0]` is now false"
  ([#13730](https://github.com/nim-lang/Nim/issues/13730))
- Fixed "`nim doc` - only whitespace on first line causes segfault"
  ([#13631](https://github.com/nim-lang/Nim/issues/13631))
- Fixed "hashset regression"
  ([#13794](https://github.com/nim-lang/Nim/issues/13794))
- Fixed "`os.getApplFreebsd` could return incorrect paths in the case of a long path"
  ([#13806](https://github.com/nim-lang/Nim/issues/13806))
- Fixed "Destructors are not inherited"
  ([#13810](https://github.com/nim-lang/Nim/issues/13810))
- Fixed "io.readLines AssertionError on devel"
  ([#13829](https://github.com/nim-lang/Nim/issues/13829))
- Fixed "exceptions:goto accidentally reset the variable during exception handling"
  ([#13782](https://github.com/nim-lang/Nim/issues/13782))

Revision 1.10 / (download) - annotate - [select for diffs], Wed Oct 30 12:28:48 2019 UTC (3 years, 10 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2020Q1-base, pkgsrc-2020Q1, pkgsrc-2019Q4-base, pkgsrc-2019Q4
Changes since 1.9: +5 -5 lines
Diff to previous 1.9 (colored)

Update to 1.0.2

Changelog:
v1.0.2 - 2019-10-23
Bugfixes

    fixes the --verbosity:2 regression
    Fixed "Fail to compile a file twice under Windows (v1.0 bug)." #12242
    fix nimpretty removing space before pragma
    JS: gensym is stricter for 'this'
    Fixed "VM Assertion Error with newruntime" #12294
    Fixed "Assertion error when running nim check on compiler/nim.nim" #12281
    Fixed "Compiler crash with empty array and generic instantiation with int as parameter" #12264
    Fixed "Regression in JS backend codegen "Error: request to generate code for .compileTime proc"" #12240
    Fix how relativePath handle case sensitiviy
    Fixed "SIGSEGV in compiler when using generic types and seqs" #12336
    Fixed "[1.0.0] weird interaction between import os and casting integer to char on macosx trigger bad codegen" #12291
    VM: no special casing for big endian machines
    Fixed "internal error: environment misses with a simple template inside one of Jester macros" #12323
    nimsuggest: fix tcp socket leak
    nimsuggest: fix tcp socket leak for epc backend
    Fixed "writeFile and write(f, str) skip null bytes on Windows" #12315
    Fixed "Crash in intsets symmetric_difference" #12366
    Fixed "[regression] VM crash when dealing with var param of a proc result" #12244
    fixes a koch regression that made 'koch boot --listcmd' not work anymore
    Fixed "[regression] inconsistent signed int mod operator between runtime, compiletime, and semfold" #12332
    Fixed "Boehm disables interior pointer checking" #12286
    Fixes semCustomPragma when nkSym
    Fixed yield in nkCheckedFieldExpr
    Fixed "randomize() from random not working on JS" #12418
    Fixed "Compiler crash with invalid object variant" #12379
    fix type's case in random.nim
    Fixed "Update docs with a better way to signal unimplemented methods" #10804
    Fixed "Nim language manual, push pragma is not explained well" #10824
    Fixed "[regression] Importing more than one module with same name from different packages produce bad codegen" #12420
    Namespace unittest enums to avoid name conflicts
    Fixed "VM checks unsigned integers for overflow." #12310
    Fixed "line directive is not generated for first line of function definition" #12426

Documentation improvements

    threadpool: fix link in docs (#12258)
    Fix spellings (#12277)
    fix #12278, don't expose internal PCRE documentation
    Fixed "Documentation of quitprocs is wrong" [#12279(https://github.com/nim-lang/Nim/issues/12279)
    Fix typo in docs
    Fix reference to parseSpec proc in readme
    [doc/tut1] removed discard discussion in comments
    Documentation improvements around the db interface
    Easier build instructions for windows - just run build_all.bat.
    fix a few dead links and a missing sentence in documentation
    Macro docs additions
    Updated the code example in the os module to use better grammar.
    Mention "lambdas" and => in the manual
    Better documentation on Garbage Collector

Revision 1.9 / (download) - annotate - [select for diffs], Fri Oct 4 13:25:23 2019 UTC (3 years, 11 months ago) by ryoon
Branch: MAIN
Changes since 1.8: +5 -5 lines
Diff to previous 1.8 (colored)

Update to 1.0.0

Changelog:
This is a major release containing nearly 60 commits. Most changes are bug fixes, but this release also includes a couple new features:

    Binaries can now be built and run using the new run command.
    The NimblePkgVersion is now defined so you can easily get the package version in your source code (example).

Some other highlights:

    Temporary files are now kept when the --debug flag is used.
    Fixed dependency resolution issues with "#head" packages (#432 and #672).
    The install command can now take Nim compiler flags via the new --passNim flag.
    Command line arguments are now passed properly to tasks (#633).
    The test command now respects the specified backend (#631).
    The dump command will no longer prompt and now has an implicit -y.
    Fixed bugs with the new nimscript executor (#665).
    Fixed multiple downloads and installs of the same package (#678).
    Nimble init no longer overwrites existing files (#581).
    Fixed incorrect submodule version being pulled when in a non-master branch (#675).

Revision 1.8 / (download) - annotate - [select for diffs], Wed Jul 17 21:56:37 2019 UTC (4 years, 2 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2019Q3-base, pkgsrc-2019Q3
Changes since 1.7: +5 -5 lines
Diff to previous 1.7 (colored)

Update to 0.20.2

Changelog:
Changes affecting backwards compatibility

    All strutils.rfind procs now take start and last like strutils.find with the same data slice/index meaning. This is backwards compatible for calls not changing the rfind start parameter from its default. (#11487)

    In the unlikely case that you were using rfind X, start=N, or rfind X, N, then you need to change that to rfind X, last=N or rfind X, 0, N. (This should minimize gotchas porting code from other languages like Python or C++.)

    On Windows stderr/stdout/stdin are not opened as binary files anymore. Use the switch -d:nimBinaryStdFiles for a transition period.

Breaking changes in the standard library

    Mac OS X / BSD: TSa_Family is now the uint8 type, so type conversions like x.sin_family = uint16 toInt(nativesockets.AF_INET) need to be changed into x.sin_family = TSa_Family toInt(nativesockets.AF_INET).

Library additions

    toOpenArray is now available for the JS target.

Library changes

    Fix async IO operations stalling even after socket is closed. (#11232)

    More informative error message for streams.openFileStream. (#11438)

Compiler changes

    Better error message for IndexError for empty containers. (#11476)

    Fix regression in semfold for old right shift. (#11477)

    Fix for passing tuples as static params to macros. (#11423)

Bugfixes

    Fixed "nimpretty goes crazy with this snippet" (#10295)
    Fixed "nimpretty doesn't trim all whitespace on the right side of an export marker" (#10177)
    Fixed "nimpretty gives invalid indentation to array elements" (#9505)
    Fixed "nimpretty doesn't indent correctly if preceding line ends with ;, { etc" (#10159)
    Fixed "Nimpretty wrong indentation for doc comments" (#10156)
    Fixed "HttpClient Documentation needs Proxy example" (#11281)
    Fixed "nimpretty aligns comment annoyingly" (#9399)
    Fixed "ENDB missing from Docs and TheIndex, remove ENDB from -fullhelp" (#11431)
    Fixed "Nimrod on Documentation generator" (#11460)
    Fixed "nimpretty (de)indents code where it shouldn't" (#11468)
    Fixed "nimpretty adds spaces where it shouldn't" (#11470)
    Fixed "nimpretty formats enums differently based on commas" (#11467)
    Fixed "strutils.rfind start parameter is unecessarily unusual" (#11430)
    Fixed "TinyC is not documented" (#11495)
    Fixed "c2nim missing from 0.20.0" (#11434)
    Fixed "nimsuggest doesn't work unless compiled with -d:danger" (#11482)
    Fixed "random.initRand crashes in Nim 0.20.0 JS backend" (#11450)
    Fixed "0.20.0 fails to bootstrap when passing "-verbosity:2" (or 3) to koch" (#11436)
    Fixed "Destructors lifting doesn't work with inheritance" (#11517)
    Fixed "std/sums missing from TheIndex" (#11543)
    Fixed "sequtils module: link is broken" (#11546)
    Fixed "Case Statement Macros do not work in functions above exported functions." (#11556)
    Fixed "newruntime: internal error when initializing a proc variable" (#11533)
    Fixed "newruntime: error when modifying a sequence" (#11524)
    Fixed "fmod and other math module functions are missing in js mode" (#4630)
    Fixed "Object variants and new runtime" (#11563)
    Fixed "newruntime exceptions" (#11577)
    Fixed "nimpretty is not aware that the next line is a part of the same context" (#11469)
    Fixed "Distinct procs fail to compile" (#11600)
    Fixed "[SharedTables] Error: undeclared identifier: 'defaultInitialSize'" (#11588)
    Fixed "newSeqOfCap is not working in newruntime" (#11098)
    Fixed "nimpretty destroys source with a source code filter" (#11532)
    Fixed "Unexpected behaviour when constructing with result" (#11525)
    Fixed "Regression in 0.20.0: Nested proc using outer scope variable fails to compile" (#11523)
    Fixed "os:standalone Error: redefinition of 'nimToCStringConv' " (#11445)
    Fixed "No ambiguity error on field overloaded by field=" (#11514)
    Fixed "object variants and new runtime part 2" (#11611)
    Fixed "seq Error: unhandled exception: value out of range: 32772 " (#11606)
    Fixed "Compiled binary includes full path to internal nim files" (#11572)
    Fixed "Newruntime: top-level string variable is empty after an array assignment" (#11614)
    Fixed "Newruntime: raise ObjContructor() doesn't compile" (#11628)
    Fixed "Owned ref can be copied and causes double-free" (#11617)
    Fixed "When compiling to JS (in -d:release) output contains toolchain path on dev's machine" (#11545)
    Fixed "wrong unicode string output" (#11618)
    Fixed "unittest "generic instantiation too nested" error" (#11515)
    Fixed "Last read of a var parameter generates sink instead of assignment" (#11633)
    Fixed "const table with proc type does not compile anymore" (#11479)
    Fixed "Can't use offsetOf on object that ends with an UncheckedArray" (#11320)
    Fixed "Newruntime/regression: Bad codegen for inline methods" (#11636)
    Fixed "String or sequences inside a loop are not cleared in each iteration" (#11510)
    Fixed "Nim -v doesn't acknowledge new danger flag" (#11484)
    Fixed "SIGSEGV while compiling when trying to instantiate a case type, that uses an enum with nsage of parts of strutils fails when using -d:useNimRtl" (#8405)
    Fixed "regression(0.20): finally block executed twice in VM" (#11610)
    Fixed "exportc symbol not exported, leading to link error" (#11651)
    Fixed "Render bug: opearatorasses refs across threads" (#7057)
    Fixed "BUG: "varargs[string, $]" calls $ n^2 times instead of n times (n=len(varargs))" (#8316)
    Fixed "Problem with the same name for module and exported type" (#3333)
    Fixed "-gc:go does notles/objects fail with "non-trivial" error..." (#11671)
    Fixed "Regression: parameter default value + typedesc parameter causes compiler crash" (#11660)
    Fixed "newruntime: undetected dangling ref" (#11350)
    Fixed "Newruntime: setLen() not working on sequences of owned refs" (#11530)
    Fixed "Incorrect overflow/underflow error in case statements" (#11551)
    Fixed "cgen preprocessor directive placed after struct declaration" (#11691)
    Fixed "continue in an except Exception as e block crashes the compiler." (#11683)
    Fixed "nimsuggest, nim check segfault when using bindSym and doAssert" (#10901)
    Fixed "Nimpretty issue, multiline string of x length only causes output grow every time." (#11700)
    Fixed "Array indexed by distinct int doesnt work with iterators" (#11715)

Revision 1.7 / (download) - annotate - [select for diffs], Sat Jun 15 01:29:49 2019 UTC (4 years, 3 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2019Q2-base, pkgsrc-2019Q2
Changes since 1.6: +5 -5 lines
Diff to previous 1.6 (colored)

Update to 0.20.0

Changelog:
Changes affecting backwards compatibility

    shr is now sign preserving. Use -d:nimOldShiftRight to enable the old behavior globally.

    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 operate 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 directive 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.

    Furthermore, an overload with positive stepping is available.

    The unchecked pragma was removed, instead use system.UncheckedArray.

    The undocumented #? strongSpaces parsing mode has been removed.

    The not operator is now always a unary operator, this means that code like assert not isFalse(3) compiles.

    getImpl on a var or let symbol will now return the full IdentDefs tree from the symbol declaration instead of just the initializer portion.

    Methods are now ordinary „ŗ◊‘ingle„ŗmethods, only the first parameter is used to select the variant at runtime. For backwards compatibility use the new --multimethods:on switch.

    Generic methods are now deprecated; they never worked well.

    Compile time checks for integer and float conversions are now stricter. For example, const x = uint32(-1) now gives a compile time error instead of being equivalent to const x = 0xFFFFFFFF'u32.

    Using typed as the result type in templates/macros now means „ŗ◊∆xpression with a type„ŗ The old meaning of typed is preserved as void or no result type at all.

    A bug allowed macro foo(): int = 123 to compile even though a macro has to return a NimNode. This has been fixed.

    With the exception of uint and uint64, conversion to unsigned types are now range checked during runtime.

    Macro arguments of type typedesc are now passed to the macro as NimNode like every other type except static. Use typed for a behavior that is identical in new and old Nim. See the RFC Pass typedesc as NimNode to macros for more details.

Breaking changes in the standard library

    osproc.execProcess now also takes a workingDir parameter.

    std/sha1.secureHash now accepts openArray[char], not string. (Former successful matches should keep working, though former failures will not.)

    options.UnpackError is no longer a ref type and inherits from system.Defect instead of system.ValueError.

    system.ValueError now inherits from system.CatchableError instead of system.Defect.

    The procs parseutils.parseBiggestInt, parseutils.parseInt, parseutils.parseBiggestUInt and parseutils.parseUInt now raise a ValueError when the parsed integer is outside of the valid range. Previously they sometimes raised an OverflowError and sometimes they returned 0.

    The procs parseutils.parseBin, parseutils.parseOct and parseutils.parseHex were not clearing their var parameter number and used to push its value to the left when storing the parsed string into it. Now they always set the value of the parameter to 0 before storing the result of the parsing, unless the string to parse is not valid (then the value of number is not changed).

    streams.StreamObject now restricts its fields to only raise system.Defect, system.IOError and system.OSError. This change only affects custom stream implementations.

    nre„ŗ—‘ RegexMatch.{captureBounds,captures}[] no longer return Option or nil/"", respectively. Use the newly added n in p.captures method to check if a group is captured, otherwise you„ŗ—Õl receive an exception.

    nre„ŗ—‘ RegexMatch.{captureBounds,captures}.toTable no longer accept a default parameter. Instead uncaptured entries are left empty. Use Table.getOrDefault() if you need defaults.

    nre„ŗ—‘ RegexMatch.captures.{items,toSeq} now returns an Option[string] instead of a string. With the removal of nil strings, this is the only way to indicate a missing match. Inside your loops, instead of capture == "" or capture == nil, use capture.isSome to check if a capture is present, and capture.get to get its value.

    nre„ŗ—‘ replace() no longer throws ValueError when the replacement string has missing captures. It instead throws KeyError for named captures, and IndexError for unnamed captures. This is consistent with RegexMatch.{captureBounds,captures}[].

    splitFile now correctly handles edge cases, see #10047.

    isNil is no longer false for undefined in the JavaScript backend: now it„ŗ—‘ true for both nil and undefined. Use isNull or isUndefined if you need exact equality: isNil is consistent with ===, isNull and isUndefined with ==.

    several deprecated modules were removed: ssl, matchers, httpserver, unsigned, actors, parseurl

    two poorly documented and not used modules (subexes, scgi) were moved to graveyard (they are available as Nimble packages)

    procs string.add(int) and string.add(float) which implicitly convert ints and floats to string have been deprecated. Use string.addInt(int) and string.addFloat(float) instead.

    case object branch transitions via system.reset are deprecated. Compile your code with -d:nimOldCaseObjects for a transition period.

    base64 module: The default parameter newLine for the encode procs was changed from "\13\10" to the empty string "".

Breaking changes in the compiler

    The compiler now implements the „ŗ◊»eneric 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)

    discard x is now illegal when x is a function symbol.

    Implicit imports via --import: module in a config file are now restricted to the main package.

Library additions

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

    There is a new stdlib module std/wordwrap as a replacement for the deprecated strutils.wordwrap.

    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.

    Added macros.isInstantiationOf for checking if the proc symbol is instantiation of generic proc symbol.

    Added the parameter isSorted for the sequtils.deduplicate proc.

    Added os.relativePath.

    Added parseopt.remainingArgs.

    Added os.getCurrentCompilerExe (implemented as getAppFilename at CT), can be used to retrieve the currently executing compiler.

    Added xmltree.toXmlAttributes.

    Added std/sums module for fast summation functions.

    Added Rusage, getrusage, wait4 to the posix interface.

    Added the posix_utils module.

    Added system.default.

    Added sequtils.items for closure iterators, allows closure iterators to be used by the mapIt, filterIt, allIt, anyIt, etc.

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.

    Added macros.signatureHash that returns a stable identifier derived from the signature of a symbol.

    In strutils empty strings now no longer match as substrings.

    The Complex type is now a generic object and not a tuple anymore.

    The ospaths module is now deprecated, use os instead. Note that os is available in a NimScript environment but unsupported operations produce a compile-time error.

    The parseopt module now supports a new flag allowWhitespaceAfterColon (default value: true) that can be set to false for better Posix interoperability. (Bug #9619.)

    os.joinPath and os.normalizePath handle edge cases like "a/b/../../.." differently.

    securehash was moved to lib/deprecated.

    The switch -d:useWinAnsi is not supported anymore.

    In times module, procs format and parse accept a new optional DateTimeLocale argument for formatting/parsing dates in other languages.

Language additions

    Vm support for float32<->int32 and float64<->int64 casts was added.
    There is a new pragma block noSideEffect that works like the gcsafe pragma block.
    added os.getCurrentProcessId.
    User defined pragmas are now allowed in the pragma blocks.
    Pragma blocks are no longer eliminated from the typed AST tree to preserve pragmas for further analysis by macros.
    Custom pragmas are now supported for var and let symbols.
    Tuple unpacking is now supported for constants and for loop variables.
    Case object branches can be initialized with a runtime discriminator if possible discriminator values are constrained within a case statement.

Language changes

    The standard extension for SCF (source code filters) files was changed from .tmpl to .nimf, it„ŗ—‘ more recognizable and allows tools like Github to recognize it as Nim, see #9647. The previous extension will continue to work.

    Pragma syntax is now consistent. Previous syntax where type pragmas did not follow the type name is now deprecated. Also pragma before generic parameter list is deprecated to be consistent with how pragmas are used with a proc. See #8514 and #1872 for further details.

    Hash sets and tables are initialized by default. The explicit initHashSet, initTable, etc. are not needed anymore.

Tool changes

    jsondoc now includes a moduleDescription field with the module description. jsondoc0 shows comments as its own objects as shown in the documentation.
    nimpretty: „ŗŇ√ackup now defaults to off instead of on and the flag was undocumented; use git instead of relying on backup files.
    koch now defaults to build the latest stable Nimble version unless you explicitly ask for the latest master version via --latest.

Compiler changes

    The deprecated fmod proc is now unavailable on the VM.
    A new --outdir option was added.
    The compiled JavaScript file for the project produced by executing nim js will no longer be placed in the nimcache directory.
    The --hotCodeReloading has been implemented for the native targets. The compiler also provides a new more flexible API for handling the hot code reloading events in the code.
    The compiler now supports a --expandMacro:macroNameHere switch for easy introspection into what a macro expands into.
    The -d:release switch now does not disable runtime checks anymore. For a release build that also disables runtime checks use -d:release -d:danger or simply -d:danger.

Bugfixes

    Fixed „ŗ◊Ňistinct generic typeclass not treated as distinct„ŗ(#4435)
    Fixed „ŗ◊őultiple dynlib pragmas with function calls conflict with each other causing link time error„ŗ(#9222)
    Fixed „ŗ◊ľRFC] extractFilename("usr/lib/") should return „ŗ◊Õib„ŗ(not „ŗōš) and be called baseName (since works with dirs)„ŗ(#8341)
    Fixed „ŗ◊Ĺ0 in comment replaced with 0 in docs„ŗ(#8841)
    Fixed „ŗ◊”ound function in Math library sometimes doesn„ŗ—’ work„ŗ(#9082)
    Fixed „ŗ◊Ęsync readAll in httpclient produces garbled output.„ŗ(#8994)
    Fixed „ŗ◊ľregression] project config.nims not being read anymore„ŗ(#9264)
    Fixed „ŗ◊∂sing iterator within another iterator fails„ŗ(#3819)
    Fixed „ŗ◊Ōim js -o:dirname main.nim writes nothing, and no error shown„ŗ(#9154)
    Fixed „ŗ◊łrong number of deallocations when using destructors„ŗ(#9263)
    Fixed „ŗ◊Ňevel docs in nim-lang.github.io Source links point to master instead of devel„ŗ(#9295)
    Fixed „ŗ◊ńompiler/nimeval can„ŗ—’ be used twice: fails 2nd time with: Error: internal error: n is not nil„ŗ(#9180)
    Fixed „ŗ◊§odegen bug with exportc„ŗ(#9297)
    Fixed „ŗ◊≥egular Expressions: replacing empty patterns only works correctly in nre„ŗ(#9306)
    Fixed „ŗ◊įpenarray: internal compiler error when accessing length if not a param„ŗ(#9281)
    Fixed „ŗ◊«inish completely removing web folder„ŗ(#9304)
    Fixed „ŗ◊ńounting the empty substring in a string results in infinite loop„ŗ(#8919)
    Fixed „ŗ◊ľDestructors] Wrong moves and copies„ŗ(#9294)
    Fixed „ŗ◊—roc isNil*(x: Any): bool = should be updated with non nil string, seq„ŗ(#8916)
    Fixed „ŗ◊ŇoAssert AST expansion excessive„ŗ(#8518)
    Fixed „ŗ◊ōhen Foo (of type iterator) is used where an expression is expected, show useful err msg instead of confusing Error: attempting to call undeclared routine Foo„ŗ(#8671)
    Fixed „ŗ◊≠ist comprehensions do not work with generic parameter„ŗ(#5707)
    Fixed „ŗ◊‘trutils/isUpperAscii and unicode/isUpper consider space, punctuations, numbers as „ŗ◊Õowercase„ŗŕš (#7963)
    Fixed „ŗ◊≥egular Expressions: replacing empty patterns only works correctly in nre„ŗ(#9306)
    Fixed „ŗ◊£UG: os.isHidden doesn„ŗ—’ work with directories; should use just paths, not filesystem access„ŗ(#8225)
    Fixed „ŗ◊∂nable to create distinct tuple in a const with a type declaration„ŗ(#2760)
    Fixed „ŗ◊ľnimpretty] raw strings are transformed into normal strings„ŗ(#9236)
    Fixed „ŗ◊ľnimpretty] proc is transfered to incorrect code„ŗ(#8626)
    Fixed „ŗ◊ľnimpretty] Additional new line is added with each format„ŗ(#9144)
    Fixed „ŗōš%NIM%/config/nim.cfg„ŗis not being read„ŗ(#9244)
    Fixed „ŗ◊™llegal capture on async proc (except when the argument is seq)„ŗ(#2361)
    Fixed „ŗ◊ęsondoc0 doesn„ŗ—’ output module comments.„ŗ(#9364)
    Fixed „ŗ◊ĮimPretty has troubles with source code filter„ŗ(#9384)
    Fixed „ŗ◊’fragment_gc test is flaky on OSX„ŗ(#9421)
    Fixed „ŗ◊¬nsi color code templates fail to bind symbols„ŗ(#9394)
    Fixed „ŗ◊Ķerm write rule crash compiler.„ŗ(#7972)
    Fixed „ŗ◊īIGSEGV when converting lines to closure iterator, most likely caused by defer„ŗ(#5321)
    Fixed „ŗ◊īIGSEGV during the compile„ŗ(#5519)
    Fixed „ŗ◊§ompiler crash when creating a variant type„ŗ(#6220)
    Fixed „ŗōšcontinue„ŗinside a block without loops gives „ŗ◊īIGSEGV: Illegal storage access. (Attempt to read from nil?)„ŗŕš (#6367)
    Fixed „ŗ◊–ld changelogs should be kept instead of erased„ŗ(#9376)
    Fixed „ŗ◊ llegal recursion with generic typeclass„ŗ(#4674)
    Fixed „ŗ◊§rash when closing an unopened file on debian 8.„ŗ(#9456)
    Fixed „ŗ◊Ōimpretty joins regular and doc comment„ŗ(#9400)
    Fixed „ŗ◊Ōimpretty changes indentation level of trailing comment„ŗ(#9398)
    Fixed „ŗ◊īome bugs with nimpretty„ŗ(#8078)
    Fixed „ŗ◊§omputed gotos: bad codegen, label collision with if/statement in the while body„ŗ(#9276)
    Fixed „ŗ◊Ōimpretty not idempotent: keeps adding newlines below block comment„ŗ(#9483)
    Fixed „ŗ◊Ōimpretty shouldn„ŗ—’ format differently whether there„ŗ—‘ a top-level newline„ŗ(#9484)
    Fixed „ŗ◊≥egression: 0.18 code with mapIt() fails to compile on 0.19„ŗ(#9093)
    Fixed „ŗ◊Ōimpretty shouldn„ŗ—’ change file modif time if no changes => use os.updateFile„ŗ(#9499)
    Fixed „ŗ◊Įim/compiler/pathutils.nim(226, 12) canon"/foo/../bar" == "/bar" [AssertionError]„ŗ(#9507)
    Fixed „ŗ◊Ōimpretty adds a space before type, ptr, ref, object in wrong places„ŗ(#9504)
    Fixed „ŗ◊Ōimpretty badly indents block comment„ŗ(#9500)
    Fixed „ŗ◊’ypeof: Error: illformed AST: typeof(myIter(), typeOfIter)„ŗ(#9498)
    Fixed „ŗ◊ŌewAsyncSmtp() raises exception with Nim 0.19.0„ŗ(#9358)
    Fixed „ŗ◊Ōimpretty wrongly adds empty newlines inside proc signature„ŗ(#9506)
    Fixed „ŗ◊©ttpClient: requesting URL with no scheme fails„ŗ(#7842)
    Fixed „ŗ◊•uplicate definition in cpp codegen„ŗ(#6986)
    Fixed „ŗ◊īugar - distinctBase: undeclared identifier uncheckedArray„ŗ(#9532)
    Fixed „ŗ◊Īortable fsmonitor„ŗ(#6718)
    Fixed „ŗ◊īmall RFC. Minimal stacktrace for Exceptions when frames are disabled„ŗ(#9434)
    Fixed „ŗ◊Ōim doc strutils.nim fails on 32 bit compiler with AssertionError on a RunnableExample„ŗ(#9525)
    Fixed „ŗ◊¶rror: undeclared identifier: „ŗŌ›„ŗ“š (#9540)
    Fixed „ŗ◊÷sing Selectors, Error: undeclared field: „ŗŌįSErrorCode„ŗ“š (#7667)
    Fixed „ŗ◊Ķhe „ŗōš„ŗtemplate from module nimscript mis-translates „ŗ◊–ut„ŗkey„ŗ(#6011)
    Fixed „ŗ◊Õogging error should go to stderr instead of stdout„ŗ(#9547)
    Fixed „ŗ◊ōhen in generic should fail earlier„ŗ(#8603)
    Fixed „ŗ◊§++ codegen error when iterating in finally block in topmost scope„ŗ(#5549)
    Fixed „ŗ◊Ňocument nim --nep1:on„ŗ(#9564)
    Fixed „ŗ◊§++ codegen error when iterating in finally block in topmost scope„ŗ(#5549)
    Fixed „ŗ◊‘trutils.multiReplace() crashes if search string is „ŗōš„ŗ(#9557)
    Fixed „ŗ◊ģissing docstrings are replaced with other text„ŗ(#9169)
    Fixed „ŗ◊Ķype which followed by a function and generated by a template will not shown in docs generated by nim doc„ŗ(#9235)
    Fixed „ŗ◊’emplates expand doc comments as documentation of other procedures„ŗ(#9432)
    Fixed „ŗ◊—lease implement http put and delete in httpClient„ŗ(#8777)
    Fixed „ŗ◊ģodule docs: 2 suggestions„ŗ¶‚ (#5525)
    Fixed „ŗ◊őath.hypot under/overflows„ŗ(#9585)
    Fixed „ŗsink gets called on result when not used explicitly„ŗ(#9594)
    Fixed „ŗ◊Ķreat compl as a c++ keyword„ŗ(#6836)
    Fixed „ŗ◊Īath in error message has ..\..\..\..\..\ prefix since 0.19.0„ŗ(#9556)
    Fixed „ŗ◊Ōim check gives SIGSEGV: Illegal storage access ; maybe because of sizeof„ŗ(#9610)
    Fixed „ŗ◊§annot use a typedesc variable in a template„ŗ(#9611)
    Fixed „ŗsink gets called on result when not used explicitly„ŗ(#9594)
    Fixed „ŗ◊ľNimScript] Error: arguments can only be given if the „ŗ–šrun„ŗoption is selected„ŗ(#9246)
    Fixed „ŗ◊őacros.getTypeImpl regression, crash when trying to query type information from ref object„ŗ(#9600)
    Fixed „ŗ◊ľRegression] Complex.re and Complex.im are private„ŗ(#9639)
    Fixed „ŗ◊Ōim check: internal error: (filename: "vmgen.nim", line: 1119, column: 19)„ŗ(#9609)
    Fixed „ŗ◊–ptInd missing indent specification in grammar.txt„ŗ(#9608)
    Fixed „ŗ◊Ōot as prefix operator causes problems„ŗ(#9574)
    Fixed „ŗ◊™t is not possible to specify a pragma for the proc that returns lent T„ŗ(#9633)
    Fixed „ŗ◊§ompiler crash when initializing table with module name„ŗ(#9319)
    Fixed „ŗ◊ńompiler crash„ŗ(#8335)
    Fixed „ŗōšSIGSEGV„ŗwithout any „ŗ◊÷ndeclared identifier„ŗerror„ŗ(#8011)
    Fixed „ŗ◊™ncorrect parseopt parsing ?„ŗ(#9619)
    Fixed „ŗ◊įperator or causes a future to be completed more than once„ŗ(#8982)
    Fixed „ŗ◊Įimpretty adds instead of removes incorrect spacing inside backticks„ŗ(#9673)
    Fixed „ŗ◊Ōimpretty should hardcode indentation amount to 2 spaces„ŗ(#9502)
    Fixed „ŗ◊ńallSoon() is not working prior getGlobalDispatcher().„ŗ(#7192)
    Fixed „ŗ◊÷se nimf as standardized extention for nim files with source code filter?„ŗ(#9647)
    Fixed „ŗ◊£anning copy for a type prevents composing„ŗ(#9692)
    Fixed „ŗ◊‘mtp module doesn„ŗ—’ support threads.„ŗ(#9728)
    Fixed „ŗ◊§ompiler segfault (stack overflow) compiling code on 0.19.0 that works on 0.18.0„ŗ(#9694)
    Fixed „ŗ◊Ōre doesn„ŗ—’ document quantifiers re"foo{2,4}"„ŗ(#9470)
    Fixed „ŗ◊–spaths still referenced despite its deprecation„ŗ(#9671)
    Fixed „ŗ◊őove on dereferenced pointer results in bogus value„ŗ(#9743)
    Fixed „ŗ◊”egression in discard statement„ŗ(#9726)
    Fixed „ŗ◊’ry statements and exceptions do not cooperate well„ŗ(#96)
    Fixed „ŗ◊ĻDeclaredButNotUsed doesn„ŗ—’ work with template, let/var/const, type; works with all other routine nodes„ŗ(#9764)
    Fixed „ŗWarning: fun is deprecated doesn„ŗ—’ check whether deprecated overload is actually used„ŗ(#9759)
    Fixed „ŗ◊≥egression: tuple sizeof is incorrect if contains imported object„ŗ(#9794)
    Fixed „ŗ◊™nternal error when calling =destroy without declaration„ŗ(#9675)
    Fixed „ŗ◊™nternal error if =sink is used explictly„ŗ(#7365)
    Fixed „ŗ◊÷nicode.strip behaving oddly„ŗ(#9800)
    Fixed „ŗ◊Ļ_examples.nim generated by runnableExamples should show line number where they came from„ŗ(#8289)
    Fixed „ŗ◊“uit() fails with „ŗ◊÷nreachable statement after „ŗŌ”eturn„ŗ“š„ŗ(#9832)
    Fixed „ŗ◊“uit() fails with „ŗ◊÷nreachable statement after „ŗŌ”eturn„ŗ“š„ŗ(#9832)
    Fixed „ŗ◊¶rror: internal error: genLiteral: ty is nil when a var is accessed in quote do„ŗ(#9864)
    Fixed „ŗ◊≥egression: sizeof Error: cannot instantiate: „ŗŌĶ„ŗ“š (#9868)
    Fixed „ŗ◊∂sing a template as a routine pragma no longer works„ŗ(#9614)
    Fixed „ŗ◊§lang error on Rosencrantz„ŗ(#9441)
    Fixed „ŗ◊¶num fields get hintXDeclaredButNotUsed hint even when marked with used pragma„ŗ(#9896)
    Fixed „ŗ◊ nternal error: environment misses„ŗ(#9476)
    Fixed „ŗ◊īIGSEGV: setLen on a seq doesn„ŗ—’ construct objects at CT„ŗ(#9872)
    Fixed „ŗ◊≠atest HEAD segfaults when compiling Aporia„ŗ(#9889)
    Fixed „ŗ◊∂nnecessary semicolon in error message„ŗ(#9907)
    Fixed „ŗ◊Őoch temp c t.nim tries to look up t.nim in nim install directory (alongside koch)„ŗ(#9913)
    Fixed „ŗ◊≥egression: sizeof Error: cannot instantiate: „ŗŌĶ„ŗ“š (#9868)
    Fixed „ŗ◊īhowstopper regression: Nimscript no longer works „ŗ(#9965)
    Fixed „ŗ◊®lobal imports in cfg file broken„ŗ(#9978)
    Fixed „ŗ◊®lobal imports in cfg file broken„ŗ(#9978)
    Fixed „ŗ◊≥egression - Nim compiler shows all gcc commands used when config.nims present„ŗ(#9982)
    Fixed „ŗ◊ľregression] Nimscript makes a program slower and more bloated„ŗ(#9995)
    Fixed „ŗ◊≥egression in Nimscript projectDir() behavior, returns empty string„ŗ(#9985)
    Fixed „ŗ◊®lobal imports don„ŗ—’ work for non-std modules„ŗ(#9994)
    Fixed „ŗ◊įbject constructor regression in JS backend„ŗ(#10005)
    Fixed „ŗ◊≥egression: nimble install fails on nim devel„ŗ(#9991)
    Fixed „ŗ◊Ęnother config.nims regression„ŗ(#9989)
    Fixed „ŗ◊Ōim js -d:nodejs main.nim gives: system.nim(1443, 7) Error: cannot 'importc' variable at compile time with a config.nims„ŗ(#9153)
    Fixed „ŗ◊…ow to profile? using --profiler:on causes: Error: undeclared identifier: „ŗŌ«ramePtr„ŗ“š (#8991)
    Fixed „ŗ◊Ōim doc fail on lib/system/profiler.nim„ŗ(#9420)
    Fixed „ŗ◊ľregression] ./koch tests: Error: overloaded „ŗŌ”eadFile„ŗleads to ambiguous calls (with ~/.config/nim/config.nims)„ŗ(#9120)
    Fixed „ŗ◊”egression: normalizePath(„ŗ◊«oo/..„ŗ now incorrectly returns "", should be "." like before + in almost all other languages„ŗ(#10017)
    Fixed „ŗ◊™ncorrect „ŗŌŌot all cases are covered„ŗwhen using enums with nonconsecutive items„ŗ(#3060)
    Fixed „ŗ◊ľospaths] BUG: splitFile(„ŗa.txt„ŗ.dir = „ŗōš ; + other bugs with splitFile„ŗ(#8255)
    Fixed „ŗ◊®C bug: seems very slow where it shouldn„ŗ—’; maybe it leaks?„ŗ(#10040)
    Fixed „ŗ◊§losure bug with the JS backend„ŗ(#7048)
    Fixed „ŗ◊¶rror: unhandled exception: sym is not accessible [FieldError]„ŗ(#10058)
    Fixed „ŗ◊ōith --errorMax:100 ; link step should not be attempted if previous step failed„ŗ(#9933)
    Fixed „ŗ◊ mport os or ospaths compilation error in js„ŗ(#10066)
    Fixed „ŗ◊¶xample for system.$[T: tuple | object] is misleading„ŗ(#7898)
    Fixed „ŗ◊§ombining object variants and inheritance leads to SIGSEGV during compilation„ŗ(#10033)
    Fixed „ŗ◊≥egression in distros.nim (foreignDep fails to compile)„ŗ(#10024)
    Fixed „ŗ◊Ķestament megatest fails with Nim not found„ŗ(#10049)
    Fixed „ŗ◊ĻDeclaredButNotUsed shows redundant info: declaration location shown twice„ŗ(#10101)
    Fixed „ŗ◊Įim beginner„ŗ—‘ feedback: „ŗ◊∆cho type(1)„ŗdoes not work„ŗ(#5827)
    Fixed „ŗ◊‘izeof still broken with regard to bitsize/packed bitfields„ŗ(#10082)
    Fixed „ŗ◊§odegen init regression„ŗ(#10148)
    Fixed „ŗ◊’oInt doesn„ŗ—’ raise an exception„ŗ(#2764)
    Fixed „ŗ◊¬llow import inside block: makes N runnableExamples run N x faster, minimizes scope pollution„ŗ(#9300)
    Fixed „ŗ◊¶xtra procs & docs for the unicode module„ŗ(#2353)
    Fixed „ŗ◊”egression: CI failing Error: unhandled exception: cannot open: /Users/travis/.cache/nim/docgen_sample_d/runnableExamples/docgen_sample_examples.nim [IOError]„ŗ(#10188)
    Fixed „ŗ◊»etAddrInfo index out of bounds error„ŗ(#10198)
    Fixed „ŗ◊ńan„ŗ—’ build a tuple with static int element„ŗ(#10073)
    Fixed „ŗ◊Ōimpretty creates foo.nim.backup for foo.nims„ŗ(#10211)
    Fixed „ŗ◊”egression caused by WEXITSTATUS: nim cpp compiler/nim.nim fails on OSX„ŗ(#10231)
    Fixed „ŗ◊’ravis and appveyor should move the bulk of its logic to running a nim file„ŗ(#10041)
    Fixed „ŗ◊¶rror: undeclared field: 'foo' should show type (+ where type is defined) (hard to guess in generic code)„ŗ(#8794)
    Fixed „ŗ◊•iscrepancy in Documentation About „ŗŌ«128 Type-Suffix„ŗ(#10213)
    Fixed „ŗ◊™ncorrect error message„ŗ(#10251)
    Fixed „ŗ◊§I should call ./koch tools ; right now nimfind isn„ŗ—’ even being compiled„ŗ(#10039)
    Fixed „ŗ◊£uilding koch from nim devel fails when config.nims importing os present„ŗ(#10030)
    Fixed „ŗ◊÷nittest module uses programResult to report number of failures which can wrap„ŗ(#10261)
    Fixed „ŗ◊Įimscript doesn„ŗ—’ raise any exceptions„ŗ(#10240)
    Fixed „ŗ◊‹.push raises: [].} breaks when combined with certain symbols„ŗ(#10216)
    Fixed „ŗ◊īupport „ŗ.„ŗfor auto-enumerated lists in RST docs„ŗ(#8158)
    Fixed „ŗ◊įpenSSL error breaking nimble and every package„ŗ(#10281)
    Fixed „ŗ◊∆xecShellCmd returns 0 instead of nonzero when child process exits with signal (eg SIGSEGV)„ŗ(#10273)
    Fixed „ŗ◊Ōim check (and nim c „ŗŇ∆rrorMax:0) SIGSEGV on first index out of bounds error„ŗ(#10104)
    Fixed „ŗ◊ģodule db_sqlite doesn„ŗ—’ finalize statements with db_sqlite.rows after breaking the iterator„ŗ—‘ loop„ŗ(#7241)
    Fixed „ŗ◊Īerformance regression with „ŗŇ»c:markandsweep„ŗ(#10271)
    Fixed „ŗ◊ nternal error when using typedesc is comparison in a macro„ŗ(#10136)
    Fixed „ŗ◊ńannot call template/macros with varargs[typed] to varargs[untyped]„ŗ(#10075)
    Fixed „ŗ◊Ōim v0.13.0 breaks symbol lookup in quote block„ŗ(#3744)
    Fixed „ŗ◊īome nimgrep issues„ŗ(#989)
    Fixed „ŗ◊īafecall problem?„ŗ(#9218)
    Fixed „ŗ◊Įim script is not supporting reading from stdin.„ŗ(#3983)
    Fixed „ŗ◊Īarameter constraints: undeclared identifier „ŗŌ‹}„ŗwithin a template scope„ŗ(#7524)
    Fixed „ŗ◊”epr does not work with „ŗŌ◊ar openarray„ŗparameter in function„ŗ(#7878)
    Fixed „ŗ◊§ountTable raisen error instead of returning a count of 0„ŗ(#10065)
    Fixed „ŗ◊Ōim c -r main.nim foo1 "" foo3 doesn„ŗ—’ handle empty params or params w quotes„ŗ(#9842)
    Fixed „ŗ◊”efs #10249 ; more debug info to diagnose failures„ŗ(#10266)
    Fixed „ŗ◊įbjectAssignmentError for aliased types„ŗ(#10203)
    Fixed „ŗ◊Ōim cpp treats Nan as 0.0 (during compile time)„ŗ(#10305)
    Fixed „ŗ◊’erminal.nim colored output is not GCSAFE.„ŗ(#8294)
    Fixed „ŗ◊£uilding koch from nim devel fails when config.nims importing os present„ŗ(#10030)

    Fixed „ŗ◊∆very binary cmd line option should allow on/off switch„ŗ(#9629)
    Fixed „ŗ◊łrong bounds check using template [] to access array in a const object„ŗ(#3899)
    Fixed „ŗ◊’dont_be_stupid.nim flaky test„ŗ(#10386)
    Fixed „ŗ◊īeparate nim install guide for users and packagers„ŗ(#5182)
    Fixed „ŗōšembedsrc does not work on macos„ŗ(#10263)
    Fixed „ŗ◊•evel regression on static semcheck„ŗ(#10339)
    Fixed „ŗ◊◊ccexe.exe does not work without VS2015 x64 Native Tools command prompt.„ŗ(#10358)
    Fixed „ŗ◊–spaths still referenced despite its deprecation„ŗ(#9671)
    Fixed „ŗ◊≥egression in sequtils„ŗ(#10433)
    Fixed „ŗ◊Īath in error message has ..\..\..\..\..\ prefix since 0.19.0„ŗ(#9556)
    Fixed „ŗōšcontributing„ŗis listed as a module on theindex„ŗ(#10287)
    Fixed „ŗ◊ńonst Foo=int compiles; is that legal? what does it mean?„ŗ(#8610)
    Fixed „ŗ◊—arsecsv can„ŗ—’ handle empty lines at the beginning of the file„ŗ(#8365)
    Fixed „ŗ◊®enerated c code is not compile with the vcc cl.exe before 2012 after v0.19„ŗ(#10352)
    Fixed „ŗ◊ľRegression] converter to string leads fail to compile on 0.19„ŗ(#9149)
    Fixed „ŗ◊”egression: memory leak with default GC„ŗ(#10488)
    Fixed „ŗ◊–ids counter starts at zero; spec says it should be random„ŗ(#2796)
    Fixed „ŗ◊”e quantifier{ under-documented„ŗ(#9471)
    Fixed „ŗ◊ģinor issues in docs regarding keywords„ŗ(#9725)
    Fixed „ŗ◊¶xplained the proc "pretty" in detail, file: json.nim with comments and sample program„ŗ(#10466)
    Fixed „ŗ◊Ōet.recvFrom address is always „ŗ.0.0.0„ŗfor ipv6„ŗ(#7634)
    Fixed „ŗ◊ mport „ŗ◊—ath with space/bar.nim„ŗgives error msg with wrong file name„ŗ(#10042)
    Fixed „ŗ◊•eprecation warnings for enum values print twice„ŗ(#8063)
    Fixed „ŗ◊∂ndefined behaviour in the usage of incrSeqV3„ŗ(#10568)
    Fixed „ŗ◊īetMaxPoolSize not heeded„ŗ(#10584)
    Fixed „ŗ◊§I broken: tests/macros/t8997.nim fails„ŗ(#10591)
    Fixed „ŗ◊—revent common user config to interfere with testament„ŗ(#10573)
    Fixed „ŗ◊‘tatic: writeFile doesn„ŗ—’ work anymore since system refactorings„ŗ(#10585)
    Fixed „ŗ◊∆xport statement doesn„ŗ—’ support directories„ŗ(#6227)
    Fixed „ŗ◊…ttps://nim-lang.github.io/Nim/io.html gives 404„ŗ(#10586)
    Fixed „ŗ◊§hoosenim fails with „ŗ◊¬mbiguous call„ŗin rst.nim„ŗ(#10602)
    Fixed „ŗ◊¶nable experimental feature with command line argument has no effect.„ŗ(#10606)
    Fixed „ŗ◊§omparing function pointer with nil marks the proc as not gcsafe„ŗ(#6955)
    Fixed „ŗ◊…ttpclient.timeout not exported„ŗ(#10357)
    Fixed „ŗ◊Ōim check SIGSEGV (causing nimsuggest to fail too)„ŗ(#10547)
    Fixed „ŗ◊ ndex out of bounds errors should show index and bound„ŗ(#9880)
    Fixed „ŗ◊¶nable experimental feature with command line argument has no effect.„ŗ(#10606)
    Fixed „ŗ◊§omparing function pointer with nil marks the proc as not gcsafe„ŗ(#6955)
    Fixed „ŗ◊…ttpclient.timeout not exported„ŗ(#10357)
    Fixed „ŗ◊Ōim check SIGSEGV (causing nimsuggest to fail too)„ŗ(#10547)
    Fixed „ŗ◊ńertain seq manipulations fail when compiled to JS„ŗ(#10651)
    Fixed „ŗ◊‘ystem.insert does not work with strings in VM„ŗ(#10561)
    Fixed „ŗ◊•oc suggestion: include a link to theindex.html on „ŗ¶‚ (#5515)
    Fixed „ŗ◊Őoch boot fails on windows with choosenim-installed nim: proxyexe.nim error„ŗ(#10659)
    Fixed „ŗ◊»etImpl on type symbol hides implementation„ŗ(#10702)
    Fixed „ŗ◊ģissing stdlib modules„ŗ(#8164)
    Fixed „ŗ◊Įo „ŗ◊ńorrect„ŗway to declare inheritable ref object„ŗ(#10195)
    Fixed „ŗ◊≠ine number missing in stdlib trace„ŗ(#6832)
    Fixed „ŗ◊£etter support for modifying XmlNodes„ŗ(#3797)
    Fixed „ŗ◊Įo documentation of AsyncStreams„ŗ(#6383)
    Fixed „ŗ◊‘et[ in proc definition crashes compiler„ŗ(#10678)
    Fixed „ŗ◊Ōet.bindAddr fails binding to all interfaces if address == "" for ipv6„ŗ(#7633)
    Fixed „ŗ◊Ķuple unpacking of for vars fails inside generic proc„ŗ(#10727)
    Fixed „ŗ◊ nitSet should be called initHashSet„ŗ(#10730)
    Fixed „ŗ◊ nheritable placement not symmetric between object and ref object„ŗ(#3012)
    Fixed „ŗ◊Ęlloc functions have side effects, makes it hard to use side effect tracking with destructors„ŗ(#9746)
    Fixed „ŗ◊…ashes:hash returns different values on Windows/Linux„ŗ(#10771)
    Fixed „ŗ◊‘witch(„ŗ◊ńpu„ŗ „ŗ◊ 386„ŗ with „ŗŇńc:vcc doesn„ŗ—’ work when it is written on *.nims„ŗ(#10387)
    Fixed „ŗ◊¬sync call now treated as non-gc safed call?„ŗ(#10795)
    Fixed „ŗ◊‹.borrow.} hangs compiler on non-distinct type (should produce an error or warning)„ŗ(#10791)
    Fixed „ŗ◊•CE regression: modules can„ŗ—’ be eliminated„ŗ(#10703)
    Fixed „ŗ◊∂nsafeaddr rendered as addr in typed AST „ŗ(#10807)
    Fixed „ŗ◊≥endering of return statements in typed AST„ŗ(#10805)
    Fixed „ŗ◊Ęssigning shallow string to a field makes a copy„ŗ(#10845)
    Fixed „ŗ◊«unc keyword for proc types doesn„ŗ—’ imply noSideEffect„ŗ(#10838)
    Fixed „ŗ◊īPAN.attachedType in toc should have no width„ŗ(#10857)
    Fixed „ŗ◊ľdocgen] Generic type pragmas in wrong place„ŗ(#10792)
    Fixed „ŗ◊–s.joinPaths documentation is inaccurate; should reference uri.combine„ŗ(#10836)
    Fixed „ŗōšinvalid indentation„ŗwhen assigning macro with code block to const„ŗ(#10861)
    Fixed „ŗ◊Įim crashes with SIGABRT after getting into a replaceTypeVars infinite loop.„ŗ(#10884)
    Fixed „ŗ◊£ooleans Work Wrong in Compile-time„ŗ(#10886)
    Fixed „ŗ◊§ / CPP backends differ in argument evaluation order„ŗ(#8202)
    Fixed „ŗ◊§hange in syntax breaks valid code„ŗ(#10896)
    Fixed „ŗ◊¬uto return type in macros causes internal error„ŗ(#10904)
    Fixed „ŗ◊Įim string definition conflicts with other C/C++ instances„ŗ(#10907)
    Fixed „ŗ◊Ōim check crash with invalid code, lowest priority„ŗ(#10930)
    Fixed „ŗ◊Ōim check crash due to typing error, lowest priority„ŗ(#10934)
    Fixed „ŗ◊ītacktrace displayed two times„ŗ(#10922)
    Fixed „ŗ◊§pp codegen regression. Showstopper„ŗ(#10948)
    Fixed „ŗ◊Õent T can return garbage„ŗ(#10942)
    Fixed „ŗ◊≥egression. atomicInc doesn„ŗ—’ compile with vcc and i386„ŗ(#10953)
    Fixed „ŗ◊‹.pure.} has no effect on objects„ŗ(#10721)
    Fixed „ŗ◊Ōimpretty doesn„ŗ—’ put space around operators like a<b => a < b„ŗ(#10200)
    Fixed „ŗ◊Ōimpretty messes alignment, after import statement„ŗ(#9811)
    Fixed „ŗ◊•estructor regression for tuples unpacking„ŗ(#10940)
    Fixed „ŗ◊≠ink error when a module defines a global variable and has no stacktrace„ŗ(#10943)
    Fixed „ŗ◊‘td/json fails to escape most non-printables, breaking generation and parsing„ŗ(#10541)
    Fixed „ŗ◊”st/markdown parser can„ŗ—’ handle extra parentheses after link„ŗ(#10475)
    Fixed „ŗ◊≥andom: proc rand(x: HSlice) requires substraction„ŗ(#7698)
    Fixed „ŗ◊£ug in setTerminate()„ŗ(#10765)
    Fixed „ŗ◊™CE when using „ŗŇŌewruntime with proc returning tuple„ŗ(#11004)
    Fixed „ŗ◊’erminal.nim does not compile using „ŗŇŌewruntime„ŗ(#11005)
    Fixed „ŗ◊§asting a seq to another seq generates invalid code with „ŗŇŌewruntime„ŗ(#11018)
    Fixed „ŗ◊‘trformat/fmt doesn„ŗ—’ work for custom types [regression]„ŗ(#11012)
    Fixed „ŗ◊§asting a seq to another seq generates invalid code with „ŗŇŌewruntime„ŗ(#11018)
    Fixed „ŗ◊Ōewruntime - t.destructor != nil [AssertionError] with toTable()„ŗ(#11014)
    Fixed „ŗ◊’emplates (e.g. sequtils.toSeq) often shadow result„ŗ(#10732)
    Fixed „ŗ◊Ōewruntime: Error: system module needs: NimStringDesc when calling $ inside method on an object variant„ŗ(#11048)
    Fixed „ŗ◊Ōewruntime: internal error when iterating over seq (which is a field of an object) inside methods„ŗ(#11050)
    Fixed „ŗ◊¶rror: internal error: „ŗdestroy„ŗoperator not found for type owned Node„ŗ(#11053)
    Fixed „ŗ◊Ōew output can be assigned to an unowned ref„ŗ(#11073)
    Fixed „ŗ◊™llegal storage access when adding to a ref seq„ŗ(#11065)
    Fixed „ŗ◊‘trformat float printing doesn„ŗ—’ print „ŗ0„ŗportion [regression]„ŗ(#11089)
    Fixed „ŗ◊Ōim doc2 ignores „ŗŇŇocSeeSrcUrl parameter„ŗ(#6071)
    Fixed „ŗ◊”unnableExamples + forLoop = segfault„ŗ(#11078)
    Fixed „ŗ◊Ňestructible context without „ŗŌ”esult„ŗor „ŗŌ”eturn„ŗshould also be supported„ŗ(#1192)
    Fixed „ŗ◊Ōew Obj crashes at the end of the program on newruntime„ŗ(#11082)
    Fixed „ŗ◊•ocumentation of the modules broken out of system.nim are missing „ŗ(#10972)
    Fixed „ŗ◊•FA regression. Branches of AST trees are missed in control flow graph.„ŗ(#11095)
    Fixed „ŗ◊ľRegression] nkIdentDefs can be left in vmgen„ŗ(#11111)
    Fixed „ŗ◊ęS target does not prevent calling compileTime procs„ŗ(#11133)
    Fixed „ŗ◊”and can return invalid values of a range type„ŗ(#11015)
    Fixed „ŗ◊ńompiler crash on discard void„ŗ(#7470)
    Fixed „ŗ◊∂nowned ref can trivially escape without causing any crashes„ŗ(#11114)
    Fixed „ŗ◊•estructor lifting regression„ŗ(#11149)
    Fixed „ŗ◊ńonst alias to compile time function fails.„ŗ(#11045)
    Fixed „ŗ◊∂sing type instead of typedesc in template signature fails compilation„ŗ(#11058)
    Fixed „ŗ◊§ompiler error caused by quote do: else„ŗ(#11175)
    Fixed „ŗ◊ńast to non ptr UncheckedArray does not produce an error or warning„ŗ(#9403)
    Fixed „ŗ◊–penArray generates incorrect C code with „ŗ◊ ncomplete type„ŗŕš (#9578)
    Fixed „ŗ◊–s:standalone Error: system module needs: appendString„ŗ(#10978)
    Fixed „ŗ◊»ensym regression„ŗ(#10192)
    Fixed „ŗ◊Ōew: module names need to be unique per Nimble broken on Windows„ŗ(#11196)
    Fixed „ŗ◊§ompiler crash on cfsml bindings„ŗ(#11200)
    Fixed „ŗ◊Įewruntime: compileTime variables can cause compilation to fail due to destructor injections„ŗ(#11204)
    Fixed „ŗ◊–bject self-assignment order-of-evaluation broken„ŗ(#9844)
    Fixed „ŗ◊‘eq self-assignment order-of-evaluation broken„ŗ(#9684)
    Fixed „ŗ◊§ompiler crash with generic types and static generic parameters„ŗ(#7569)
    Fixed „ŗ◊§ macro identifiers (e.g. errno) are not properly avoided in code generation„ŗ(#11153)
    Fixed „ŗ◊īIGSEGV in asgnRefNoCycle with const sequence„ŗ(#9825)
    Fixed „ŗ◊¬syncdispatch could not be linked to nimrtl„ŗ(#6855)
    Fixed „ŗ◊Įewruntime: Bad C++ codegen for ref types with destructors„ŗ(#11215)
    Fixed „ŗ◊£etter error message for object variant with enum that is below it„ŗ(#4140)
    Fixed „ŗ◊§an„ŗ—’ declare a mixin.„ŗ(#11237)
    Fixed „ŗ◊Įim doc mangles signed octal literals„ŗ(#11131)
    Fixed „ŗ◊īelectors, Error: undeclared field: „ŗŌįSErrorCode„ŗon macOS„ŗ(#11124)
    Fixed „ŗ-cppCompileToNamespace:foo fails compilation with import os„ŗ(#11194)
    Fixed „ŗ◊ľOpenMP] Nim symbol interpolation support„ŗ(#9365)
    Fixed „ŗ◊™nconsistent typing error with gensymed var„ŗ(#7937)
    Fixed „ŗ◊Įew module names break file-specific flags„ŗ(#11202)
    Fixed „ŗ◊ nheritance for generics does not work„ŗ(#88)
    Fixed „ŗ◊Īossible bug related to generics type resolution/matched„ŗ(#6732)
    Fixed „ŗ◊‘tatic range type bounds not checked when conversion from intLit„ŗ(#3766)
    Fixed „ŗ◊’hreadpool: sync() deadlocks in high-CPU-usage scenarios„ŗ(#11250)
    Fixed „ŗ◊◊ar result array - bad codegen (null pointer dereference)„ŗ(#8053)
    Fixed „ŗ◊«uture/sugar => syntax breaks with generics„ŗ(#7816)
    Fixed „ŗ◊–s.joinPath removes the leading backslash from UNC paths (regression)„ŗ(#10952)
    Fixed „ŗ◊”e: memory leak when calling re proc repeatedly„ŗ(#11139)
    Fixed „ŗ◊’hreadpool: tests/parallel/tconvexhull.nim segfaults intermittently on systems with more than 4 cores„ŗ(#11275)
    Fixed „ŗ◊Įot equal when streams.readBool and peekBool compare true„ŗ(#11049)
    Fixed „ŗ◊–s.tailDir fails on some paths„ŗ(#8395)
    Fixed „ŗ◊Īower op ^ is not optimized for a: int; echo a ^ 2 case (minor bug)„ŗ(#10910)
    Fixed „ŗ◊‘tr &= data doesn„ŗ—’ behave as str = str & data.„ŗ(#10963)
    Fixed „ŗ◊∂nable to make a const instance of an inherited, generic object.„ŗ(#11268)
    Fixed „ŗ◊įverload precedence for non-builtin types„ŗ(#11239)
    Fixed „ŗ◊¶rror when trying to iterate a distinct type based array„ŗ(#7167)
    Fixed „ŗ◊įbjects marked with {.exportc.} should be fully defined in generated header„ŗ(#4723)
    Fixed „ŗ◊®eneric function specialization regression„ŗ(#6076)
    Fixed „ŗ◊ńompiler should give ambiguity errors in case of multiple compatible matches„ŗ(#8568)
    Fixed „ŗ◊Ŕmltree.findAll doesn„ŗ—’ work as expected with htmlparser for non-lowercase names„ŗ(#8329)
    Fixed „ŗ◊ōrong stack trace information about the raised exception„ŗ(#11309)
    Fixed „ŗ◊Įewruntime: owned procs don„ŗ—’ implicitly convert to unowned in ==„ŗ(#11257)
    Fixed „ŗ◊–rder of imports can cause errors„ŗ(#11187)
    Fixed „ŗ◊Īassing code via stdin to Nim stopped working [regression Nim 0.19+]„ŗ(#11294)
    Fixed „ŗōš„ŗŇ–ut:„ŗswitch is ineffective with „ŗ◊Ōim doc„ŗ[regression]„ŗ(#11312)
    Fixed „ŗ◊∑C++ broken in devel: module machine type „ŗŌĻ86„ŗconflicts with target machine type „ŗŌŔ64„ŗ“š (#11306)
    Fixed „ŗ◊§ode that used multi aspect of multimethod now crashes at runtime„ŗ(#10912)
    Fixed „ŗ◊‘ymbol resolution issues when ambiguous call happens in generic proc„ŗ(#11188)
    Fixed „ŗ◊ńompile pragma name collision„ŗ(#10299)
    Fixed „ŗ◊∂nexpected behaviour on method dispatch„ŗ(#10038)
    Fixed „ŗ◊Įim object variant issue„ŗ(#1286)
    Fixed „ŗ◊ňson.to macro cannot handle ambiguous types even in a full form (module.Type)„ŗ(#11057)
    Fixed „ŗ◊įut of bounds access in CritBitTree„ŗ(#11344)
    Fixed „ŗ◊Įewruntime: assignment to discriminant field in case objects not supported„ŗ(#11205)
    Fixed „ŗ◊•ynamic dispatch broken if base method returns generic var type„ŗ(#6777)
    Fixed „ŗ◊Ōewruntime and unused generics: compiler crash„ŗ(#6755)
    Fixed „ŗ◊Ķype aliases do not work with Exceptions.„ŗ(#10889)
    Fixed „ŗ◊§ompiler crash when accessing constant in nested template„ŗ(#5235)
    Fixed „ŗ◊÷nicode.nim Error: type mismatch: got <seq[char]> but expected „ŗŌ‘tring„ŗ“š (#9762)
    Fixed „ŗ◊™nternal error with auto return in closure iterator„ŗ(#5859)
    Fixed „ŗ◊ľCompiler Crash] - getAST + hasCustomPragma„ŗ(#7615)
    Fixed „ŗ◊Ňebug mode compiler crash when executing some compile time code„ŗ(#8199)
    Fixed „ŗ◊§ompiler does not set .typ inside macros when creating literal NimNodes„ŗ(#7792)
    Fixed „ŗ◊¶rror: internal error: expr: var not init sevColor_994035„ŗ(#8573)
    Fixed „ŗ◊ nternal error: could not find env param for when one iterator references another„ŗ(#9827)
    Fixed „ŗ◊ nternal error when assigning a type to a constant of typedesc„ŗ(#9961)
    Fixed „ŗ◊įverload resolution regression„ŗ(#11375)
    Fixed „ŗ◊‘trutils: toBin(64) uses „ŗ„ŗfor the 63rd bit if it„ŗ—‘ set„ŗ(#11369)
    Fixed „ŗ◊√ase64.encode should not „ŗ◊—rettify„ŗthe result by default„ŗ(#11364)
    Fixed „ŗ◊Įim ships latest nimble rather than stable„ŗ(#11402)
    Fixed „ŗ◊Ňebugger:native no longer generates pdb file with cc:vcc„ŗ(#11405)

Revision 1.6 / (download) - annotate - [select for diffs], Thu May 16 14:11:52 2019 UTC (4 years, 4 months ago) by ryoon
Branch: MAIN
Changes since 1.5: +5 -5 lines
Diff to previous 1.5 (colored)

Update to 0.19.6

Changelog:
Bugfixes

    Fixed „ŗ2 bit signed xor broken on VM„ŗ(#10482)
    Fixed „ŗ◊īetMaxPoolSize not heeded„ŗ(#10584)
    Fixed „ŗ◊÷int inplace add in if branch is omitted when compiled to JS„ŗ(#10697)
    Fixed „ŗ◊£ooleans Work Wrong in Compile-time„ŗ(#10886)
    Fixed „ŗ◊£ug in setTerminate()„ŗ(#10765)
    Fixed „ŗ◊§annot raise generic exception„ŗ(#7845)
    Fixed „ŗ◊Įim string definition conflicts with other C/C++ instances„ŗ(#10907)
    Fixed „ŗ◊‘td/json fails to escape most non-printables, breaking generation and parsing„ŗ(#10541)
    Fixed „ŗ◊–bject self-assignment order-of-evaluation broken„ŗ(#9844)
    Fixed „ŗ◊§ompiler crash with generic types and static generic parameters„ŗ(#7569)

Revision 1.5 / (download) - annotate - [select for diffs], Sat May 11 07:13:42 2019 UTC (4 years, 4 months ago) by ryoon
Branch: MAIN
Changes since 1.4: +5 -5 lines
Diff to previous 1.4 (colored)

Update to 0.19.4

Changelog:
0.19.4
Bugfixes

    Fixed „ŗ◊≠atest HEAD segfaults when compiling Aporia„ŗ(#9889)
    Fixed „ŗ◊‘mtp module doesn„ŗ—’ support threads.„ŗ(#9728)
    Fixed „ŗ◊’oInt doesn„ŗ—’ raise an exception„ŗ(#2764)
    Fixed „ŗ◊¬llow import inside block: makes N runnableExamples run N x faster, minimizes scope pollution„ŗ(#9300)
    Fixed „ŗ◊”egression: CI failing Error: unhandled exception: cannot open: /Users/travis/.cache/nim/docgen_sample_d/runnableExamples/docgen_sample_examples.nim [IOError]„ŗ(#10188)
    Fixed „ŗ◊•iscrepancy in Documentation About „ŗŌ«128 Type-Suffix„ŗ(#10213)
    Fixed „ŗ◊Īerformance regression with „ŗŇ»c:markandsweep„ŗ(#10271)
    Fixed „ŗ◊ńannot call template/macros with varargs[typed] to varargs[untyped]„ŗ(#10075)
    Fixed „ŗōšembedsrc does not work on macos„ŗ(#10263)
    Fixed „ŗ◊’erminal.nim colored output is not GCSAFE.„ŗ(#8294)
    Fixed „ŗ◊Īath in error message has ..\..\..\..\..\ prefix since 0.19.0„ŗ(#9556)
    Fixed „ŗōšcontributing„ŗis listed as a module on theindex„ŗ(#10287)
    Fixed „ŗ◊ľRegression] converter to string leads fail to compile on 0.19„ŗ(#9149)
    Fixed „ŗ◊–ids counter starts at zero; spec says it should be random„ŗ(#2796)

0.19.2
Compiler changes

    Added support for the RISC-V 64 bit architecture named riscv64 (e.g. HiFive)

Bugfixes

    Fixed „ŗ◊Įim 0.19.0 docs have incorrect Source/Edit links„ŗ(#9083)
    Fixed „ŗ◊ęson: compilation fails with aliased type„ŗ(#9111)
    Fixed „ŗ◊…ttps://nim-lang.org/docs/nre.html gives 404 error„ŗ(#9119)
    Fixed „ŗ◊≠eaving \\ at the end of a path in copyDir removes every file„ŗ—‘ first char„ŗ(#9126)
    Fixed „ŗ◊Ōim doc SIGSEGV: Illegal storage access.„ŗ(#9140)
    Fixed „ŗ◊ľdoc] List of broken links in the doc site„ŗ(#9109)
    Fixed „ŗ◊ßix incorrect examples in nre docs„ŗ(#9053)
    Fixed „ŗ◊§lean up root of repo and release archives„ŗ(#4934)
    Fixed „ŗ◊§oncept/converter/generics-related compiler crash„ŗ(#7351)
    Fixed „ŗ◊ńonverter + concept causes compiler to quit without error„ŗ(#6249)
    Fixed „ŗ◊¶rror: internal error„ŗ(#6533)
    Fixed „ŗ◊ģethods break static[T] (internal error: nesting too deep)„ŗ(#5479)
    Fixed „ŗ◊ģemory error when checking if a variable is a string in concept„ŗ(#7092)
    Fixed „ŗ◊™nternal error when using array of procs„ŗ(#5015)
    Fixed „ŗ◊ľRegression] Compiler crash on proc with static, used to compile in nim 0.16„ŗ(#5868)
    Fixed „ŗ◊«ixes/8099„ŗ(#8451)
    Fixed „ŗ◊Ňistinct generic typeclass not treated as distinct„ŗ(#4435)
    Fixed „ŗ◊őultiple dynlib pragmas with function calls conflict with each other causing link time error„ŗ(#9222)
    Fixed „ŗ◊Ĺ0 in comment replaced with 0 in docs„ŗ(#8841)
    Fixed „ŗ◊Ęsync readAll in httpclient produces garbled output.„ŗ(#8994)
    Fixed „ŗ◊”unnableExamples should be run by nim doc even if symbol is not public„ŗ(#9216)
    Fixed „ŗ◊ľregression] project config.nims not being read anymore„ŗ(#9264)
    Fixed „ŗ◊∂sing iterator within another iterator fails„ŗ(#3819)
    Fixed „ŗ◊Ōim js -o:dirname main.nim writes nothing, and no error shown„ŗ(#9154)
    Fixed „ŗ◊Ňevel docs in nim-lang.github.io Source links point to master instead of devel„ŗ(#9295)
    Fixed „ŗ◊≥egular Expressions: replacing empty patterns only works correctly in nre„ŗ(#9306)
    Fixed „ŗ◊ńounting the empty substring in a string results in infinite loop„ŗ(#8919)
    Fixed „ŗ◊ľnimpretty] raw strings are transformed into normal strings„ŗ(#9236)
    Fixed „ŗ◊ľnimpretty] proc is transfered to incorrect code„ŗ(#8626)
    Fixed „ŗ◊ľnimpretty] Additional new line is added with each format„ŗ(#9144)
    Fixed „ŗōš%NIM%/config/nim.cfg„ŗis not being read„ŗ(#9244)
    Fixed „ŗ◊™llegal capture on async proc (except when the argument is seq)„ŗ(#2361)
    Fixed „ŗ◊ęsondoc0 doesn„ŗ—’ output module comments.„ŗ(#9364)
    Fixed „ŗ◊ĮimPretty has troubles with source code filter„ŗ(#9384)

    Fixed „ŗ◊’fragment_gc test is flaky on OSX„ŗ(#9421)
    Fixed „ŗ◊¬nsi color code templates fail to bind symbols„ŗ(#9394)
    Fixed „ŗ◊īIGSEGV when converting lines to closure iterator, most likely caused by defer„ŗ(#5321)
    Fixed „ŗ◊§ompiler crash when creating a variant type„ŗ(#6220)

    Fixed „ŗ◊–ld changelogs should be kept instead of erased„ŗ(#9376)
    Fixed „ŗ◊§rash when closing an unopened file on debian 8.„ŗ(#9456)
    Fixed „ŗ◊Ōimpretty joins regular and doc comment„ŗ(#9400)
    Fixed „ŗ◊Ōimpretty changes indentation level of trailing comment„ŗ(#9398)
    Fixed „ŗ◊īome bugs with nimpretty„ŗ(#8078)
    Fixed „ŗ◊Ōimpretty not idempotent: keeps adding newlines below block comment„ŗ(#9483)
    Fixed „ŗ◊Ōimpretty shouldn„ŗ—’ format differently whether there„ŗ—‘ a top-level newline„ŗ(#9484)
    Fixed „ŗ◊Ōimpretty shouldn„ŗ—’ change file modif time if no changes => use os.updateFile„ŗ(#9499)
    Fixed „ŗ◊Ōimpretty adds a space before type, ptr, ref, object in wrong places„ŗ(#9504)
    Fixed „ŗ◊Ōimpretty badly indents block comment„ŗ(#9500)
    Fixed „ŗ◊Ōimpretty wrongly adds empty newlines inside proc signature„ŗ(#9506)
    Fixed „ŗ◊•uplicate definition in cpp codegen„ŗ(#6986)
    Fixed „ŗ◊Ōim doc strutils.nim fails on 32 bit compiler with AssertionError on a RunnableExample„ŗ(#9525)

    Fixed „ŗ◊÷sing Selectors, Error: undeclared field: „ŗŌįSErrorCode„ŗ“š (#7667)
    Fixed „ŗ◊‘trutils.multiReplace() crashes if search string is „ŗōš„ŗ(#9557)
    Fixed „ŗ◊Ķype which followed by a function and generated by a template will not shown in docs generated by nim doc„ŗ(#9235)
    Fixed „ŗ◊ģodule docs: 2 suggestions„ŗ¶‚ (#5525)
    Fixed „ŗ◊ģissing docstrings are replaced with other text„ŗ(#9169)
    Fixed „ŗ◊’emplates expand doc comments as documentation of other procedures„ŗ(#9432)
    Fixed „ŗ◊Īath in error message has ..\..\..\..\..\ prefix since 0.19.0„ŗ(#9556)

    Fixed „ŗ◊Įim/compiler/pathutils.nim(226, 12) canon"/foo/../bar" == "/bar" [AssertionError]„ŗ(#9507)
    Fixed „ŗ◊ľRegression] Borrow stringify operator no longer works as expected„ŗ(#9322)
    Fixed „ŗ◊ľNimScript] Error: arguments can only be given if the „ŗ–šrun„ŗoption is selected„ŗ(#9246)
    Fixed „ŗ◊Ōim check: internal error: (filename: "vmgen.nim", line: 1119, column: 19)„ŗ(#9609)
    Fixed „ŗ◊–ptInd missing indent specification in grammar.txt„ŗ(#9608)
    Fixed „ŗ◊Ōimpretty should hardcode indentation amount to 2 spaces„ŗ(#9502)
    Fixed „ŗ◊Įimpretty adds instead of removes incorrect spacing inside backticks„ŗ(#9673)
    Fixed „ŗ◊§ompiler segfault (stack overflow) compiling code on 0.19.0 that works on 0.18.0„ŗ(#9694)

Revision 1.4 / (download) - annotate - [select for diffs], Mon Oct 1 12:50:42 2018 UTC (4 years, 11 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2019Q1-base, pkgsrc-2019Q1, pkgsrc-2018Q4-base, pkgsrc-2018Q4
Changes since 1.3: +5 -5 lines
Diff to previous 1.3 (colored)

Update to 0.19

Changelog:
What„ŗ—‘ new in 0.19.0

The nil state for strings/seqs is gone. Instead the default value for these is "" / @[]. Use --nilseqs:on for a transition period. This eliminates a large class of bugs that used to plague the average Nim code out there, including Nim„ŗ—‘ standard library.

Accessing the binary zero terminator in Nim„ŗ—‘ native strings is now invalid. Internally a Nim string still has the trailing zero for zero-copy interoperability with cstring. Compile your code with the new switch --laxStrings:on if you need a transition period.

These changes to strings and seqs give us more flexibility in how they are implemented and indeed alternative implementations are in development.

experimental is now a pragma and a command line switch that can enable specific language extensions, it is not an all-or-nothing switch anymore. We think this leads to a more robust development process where it„ŗ—‘ clearly documented which parts of Nim are bleeding edge and which parts can be relied upon.

Other notable language additions:

    Dot calls combined with explicit generic instantiations can now be written as x.y[:z] which is transformed into y[z](x) by the parser.
    func is now an alias for proc {.noSideEffect.}.

    Anonymous tuples with a single element can now be written as (1,) with a trailing comma.

    In order to make for loops and iterators more flexible to use Nim now supports so called „ŗ◊«or-loop macros„ŗ See the manual for more details. This feature enables a Python-like generic enumerate implementation.

    Case statements can now be rewritten via macros. See the manual for more information. This feature enables custom pattern matching.

    The command syntax now supports keyword arguments after the first comma.

    Thread-local variables can now be declared inside procs. This implies all the effects of the global pragma.

    Nim now supports the except clause in the export statement.
    Range float types, example range[0.0 .. Inf]. More details in language manual.

Breaking changes to be mindful of

    The default location of nimcache for the native code targets was changed. Read the compiler user guide for more information.
    Lots of deprecated symbols in the standard library that have been deprecated for quite some time now like system.expr or the old type aliases starting with a T or P prefix have been removed.
    The exception hierarchy was slightly reworked, SystemError was renamed to CatchableError and is the new base class for any exception that is guaranteed to be catchable. This change should have minimal impact on most existing Nim code.

Async improvements

The „ŗ◊ńlosure iterators„ŗthat Nim„ŗ—‘ async macro is based on has been rewritten from the ground up and so async works completely with exception handling. Finally it is possible to use await in a try statement!
Nimble 0.9.0

This release includes a brand new version of Nimble. The new version contains a breaking change which you should read up on if you own hybrid packages. There are also the usual bug fixes and this release contains a lot of them.

Revision 1.3 / (download) - annotate - [select for diffs], Tue Apr 3 03:24:56 2018 UTC (5 years, 5 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2018Q3-base, pkgsrc-2018Q3, pkgsrc-2018Q2-base, pkgsrc-2018Q2
Changes since 1.2: +5 -5 lines
Diff to previous 1.2 (colored)

Update to 0.18.0

Changelog:
0.18.0:
Changes affecting backwards compatibility
Breaking changes in the standard library

    The [] proc for strings now raises an IndexError exception when the specified slice is out of bounds. See issue #6223 for more details. You can use substr(str, start, finish) to get the old behaviour back, see this commit for an example.

    strutils.split and strutils.rsplit with an empty string and a separator now returns that empty string. See issue #4377.

    Arrays of char cannot be converted to cstring anymore, pointers to arrays of char can! This means $ for arrays can finally exist in system.nim and do the right thing. This means $myArrayOfChar changed its behaviour! Compile with -d:nimNoArrayToString to see where to fix your code.

    reExtended is no longer default for the re constructor in the re module.

    The behavior of $ has been changed for all standard library collections. The collection-to-string implementations now perform proper quoting and escaping of strings and chars.

    newAsyncSocket taking an AsyncFD now runs setBlocking(false) on the fd.

    mod and bitwise and do not produce range subtypes anymore. This turned out to be more harmful than helpful and the language is simpler without this special typing rule.

    formatFloat/formatBiggestFloat now support formatting floats with zero precision digits. The previous precision = 0 behavior (default formatting) is now available via precision = -1.
    Moved from stdlib into Nimble packages:
        basic2d deprecated: use glm, arraymancer, neo, or another package instead
        basic3d deprecated: use glm, arraymancer, neo, or another package instead
        gentabs
        libuv
        polynumeric
        pdcurses
        romans
        libsvm
        joyent_http_parser

    Proc toCountTable now produces a CountTable with values correspoding to the number of occurrences of the key in the input. It used to produce a table with all values set to 1.

    Counting occurrences in a sequence used to be:

    let mySeq = @[1, 2, 1, 3, 1, 4]
    var myCounter = initCountTable[int]()

    for item in mySeq:
      myCounter.inc item

    Now, you can simply do:

    let
      mySeq = @[1, 2, 1, 3, 1, 4]
      myCounter = mySeq.toCountTable()

    If you use --dynlibOverride:ssl with OpenSSL 1.0.x, you now have to define openssl10 symbol (-d:openssl10). By default OpenSSL 1.1.x is assumed.

    newNativeSocket is now named createNativeSocket.

    newAsyncNativeSocket is now named createAsyncNativeSocket and it no longer raises an OS error but returns an osInvalidSocket when creation fails.

    The securehash module is now deprecated. Instead import std / sha1.
    The readPasswordFromStdin proc has been moved from the rdstdin to the terminal module, thus it does not depend on linenoise anymore.

Breaking changes in the compiler

    \n is now only the single line feed character like in most other programming languages. The new platform specific newline escape sequence is written as \p. This change only affects the Windows platform.

    The overloading rules changed slightly so that constrained generics are preferred over unconstrained generics. (Bug #6526)

    We changed how array accesses „ŗ◊«rom backwards„ŗlike a[^1] or a[0..^1] are implemented. These are now implemented purely in system.nim without compiler support. There is a new „ŗ◊…eterogenous„ŗslice type system.HSlice that takes 2 generic parameters which can be BackwardsIndex indices. BackwardsIndex is produced by system.^. This means if you overload [] or []= you need to ensure they also work with system.BackwardsIndex (if applicable for the accessors).

    The parsing rules of if expressions were changed so that multiple statements are allowed in the branches. We found few code examples that now fail because of this change, but here is one:

    t[ti] = if exp_negative: '-' else: '+'; inc(ti)

    This now needs to be written as:

    t[ti] = (if exp_negative: '-' else: '+'); inc(ti)

    The experimental overloading of the dot . operators now take an untyped parameter as the field name, it used to be a static[string]. You can use when defined(nimNewDot) to make your code work with both old and new Nim versions. See special-operators for more information.

    yield (or await which is mapped to yield) never worked reliably in an array, seq or object constructor and is now prevented at compile-time.

Library additions

    Added sequtils.mapLiterals for easier construction of array and tuple literals.

    Added system.runnableExamples to make examples in Nim„ŗ—‘ documentation easier to write and test. The examples are tested as the last step of nim doc.

    Implemented getIoHandler proc in the asyncdispatch module that allows you to retrieve the underlying IO Completion Port or Selector[AsyncData] object in the specified dispatcher.

    For string formatting / interpolation a new module called strformat has been added to the stdlib.

    The ReadyKey type in the selectors module now contains an errorCode field to help distinguish between Event.Error events.

    Implemented an accept proc that works on a SocketHandle in nativesockets.

    Added algorithm.rotateLeft.

    Added typetraits.$ as an alias for typetraits.name.

    Added system.getStackTraceEntries that allows you to access the stack trace in a structured manner without string parsing.

    Added parseutils.parseSaturatedNatural.

    Added macros.unpackVarargs.

    Added support for asynchronous programming for the JavaScript backend using the asyncjs module.

    Added true color support for some terminals. Example:

    import colors, terminal

    const Nim = "Efficient and expressive programming."

    var
      fg = colYellow
      bg = colBlue
      int = 1.0

    enableTrueColors()

    for i in 1..15:
      styledEcho bgColor, bg, fgColor, fg, Nim, resetStyle
      int -= 0.01
      fg = intensity(fg, int)

    setForegroundColor colRed
    setBackgroundColor colGreen
    styledEcho "Red on Green.", resetStyle

Library changes

    echo now works with strings that contain \0 (the binary zero is not shown) and nil strings are equal to empty strings.

    JSON: Deprecated getBVal, getFNum, and getNum in favour of getBool, getFloat, getBiggestInt. A new getInt procedure was also added.

    rationals.toRational now uses an algorithm based on continued fractions. This means its results are more precise and it can„ŗ—’ run into an infinite loop anymore.

    os.getEnv now takes an optional default parameter that tells getEnv what to return if the environment variable does not exist.

    The random procs in random.nim have all been deprecated. Instead use the new rand procs. The module now exports the state of the random number generator as type Rand so multiple threads can easily use their own random number generators that do not require locking. For more information about this rename see issue #6934

    writeStackTrace is now proclaimed to have no IO effect (even though it does) so that it is more useful for debugging purposes.

    db_mysql module: DbConn is now a distinct type that doesn„ŗ—’ expose the details of the underlying PMySQL type.

    parseopt2 is now deprecated, use parseopt instead.

Language additions

    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.

    Added support for casting between integers of same bitsize in VM (compile time and nimscript). This allows to, among other things, reinterpret signed integers as unsigned.

    Custom pragmas are now supported using pragma pragma, please see language manual for details.

    Standard library modules can now also be imported via the std pseudo-directory. This is useful in order to distinguish between standard library and nimble package imports:

    import std / [strutils, os, osproc]
    import someNimblePackage / [strutils, os]

Language changes

    The unary < is now deprecated, for .. < use ..< for other usages use the pred proc.

    Bodies of for loops now get their own scope:

    # now compiles:
    for i in 0..4:
      let i = i + 1
      echo i

    To make Nim even more robust the system iterators .. and countup now only accept a single generic type T. This means the following code doesn„ŗ—’ die with an „ŗ◊–ut of range„ŗerror anymore:

    var b = 5.Natural
    var a = -5
    for i in a..b:
      echo i

    atomic and generic are no longer keywords in Nim. generic used to be an alias for concept, atomic was not used for anything.

    The memory manager now uses a variant of the TLSF algorithm that has much better memory fragmentation behaviour. According to http://www.gii.upv.es/tlsf/ the maximum fragmentation measured is lower than 25%. As a nice bonus alloc and dealloc became O(1) operations.

    The compiler is now more consistent in its treatment of ambiguous symbols: Types that shadow procs and vice versa are marked as ambiguous (bug #6693).

    codegenDecl pragma now works for the JavaScript backend. It returns an empty string for function return type placeholders.

    Extra semantic checks for procs with noreturn pragma: return type is not allowed, statements after call to noreturn procs are no longer allowed.
    Noreturn proc calls and raising exceptions branches are now skipped during common type deduction in if and case expressions. The following code snippets now compile:

    import strutils
    let str = "Y"
    let a = case str:
      of "Y": true
      of "N": false
      else: raise newException(ValueError, "Invalid boolean")
    let b = case str:
      of nil, "": raise newException(ValueError, "Invalid boolean")
      elif str.startsWith("Y"): true
      elif str.startsWith("N"): false
      else: false
    let c = if str == "Y": true
      elif str == "N": false
      else:
        echo "invalid bool"
        quit("this is the end")

    Pragmas now support call syntax, for example: {.exportc"myname".} and {.exportc("myname").}

    The deprecated pragma now supports a user-definable warning message for procs.

    proc bar {.deprecated: "use foo instead".} =
      return

    bar()

Tool changes

    The nim doc command is now an alias for nim doc2, the second version of the documentation generator. The old version 1 can still be accessed via the new nim doc0 command.

    Nim„ŗ—‘ rst2html command now supports the testing of code snippets via an RST extension that we called :test:::

    .. code-block:: nim
        :test:
      # shows how the 'if' statement works
      if true: echo "yes"


0.17.0:
Changes affecting backwards compatibility

    There are now two different HTTP response types, Response and AsyncResponse. AsyncResponse„ŗ—‘ body accessor returns a Future[string]!

    Due to this change you may need to add another await in your code.
    httpclient.request now respects the maxRedirects option. Previously redirects were handled only by get and post procs.
    The IO routines now raise EOFError for the „ŗ◊∆nd of file„ŗcondition. EOFError is a subtype of IOError and so it„ŗ—‘ easier to distinguish between „ŗ◊∆rror during read„ŗand „ŗ◊∆rror due to EOF„ŗ
    A hash procedure has been added for cstring type in hashes module. Previously, hash of a cstring would be calculated as a hash of the pointer. Now the hash is calculated from the contents of the string, assuming cstring is a null-terminated string. Equal string and cstring values produce an equal hash value.
    Macros accepting varargs arguments will now receive a node having the nkArgList node kind. Previous code expecting the node kind to be nkBracket may have to be updated.
    memfiles.open now closes file handles/fds by default. Passing allowRemap=true to memfiles.open recovers the old behavior. The old behavior is only needed to call mapMem on the resulting MemFile.
    posix.nim: For better C++ interop the field sa_sigaction*: proc (x: cint, y: var SigInfo, z: pointer) {.noconv.} was changed to sa_sigaction*: proc (x: cint, y: ptr SigInfo, z: pointer) {.noconv.}.
    The compiler doesn„ŗ—’ infer effects for .base methods anymore. This means you need to annotate them with .gcsafe or similar to clearly declare upfront every implementation needs to fullfill these contracts.
    system.getAst templateCall(x, y) now typechecks the templateCall properly. You need to patch your code accordingly.
    macros.getType and macros.getTypeImpl for an enum will now return an AST that is the same as what is used to define an enum. Previously the AST returned had a repeated EnumTy node and was missing the initial pragma node (which is currently empty for an enum).
    macros.getTypeImpl now correctly returns the implementation for a symbol of type tyGenericBody.
    If the dispatcher parameter„ŗ—‘ value used in multi method is nil, a NilError exception is raised. The old behavior was that the method would be a nop then.
    posix.nim: the family of ntohs procs now takes unsigned integers instead of signed integers.
    In Nim identifiers en-dash (Unicode point U+2013) is not an alias for the underscore anymore. Use underscores instead.
    When the requiresInit pragma is applied to a record type, future versions of Nim will also require you to initialize all the fields of the type during object construction. For now, only a warning will be produced.
    The Object construction syntax now performs a number of additional safety checks. When fields within case objects are initialiazed, the compiler will now demand that the respective discriminator field has a matching known compile-time value.
    On posix, the results of waitForExit, peekExitCode, execCmd will return 128 + signal number if the application terminates via signal.
    ospaths.getConfigDir now conforms to the XDG Base Directory specification on non-Windows OSs. It returns the value of the XDG_CONFIG_DIR environment variable if it is set, and returns the default configuration directory, „ŗ◊Ŗ/.config/„ŗ otherwise.
    Renamed the line info node parameter for newNimNode procedure.

    The parsing rules of do changed.

      foo bar do:
        baz

    Used to be parsed as:

      foo(bar(do:
        baz))

    Now it is parsed as:

      foo(bar, do:
        baz)

Library Additions

    Added system.onThreadDestruction.

    Added dial procedure to networking modules: net, asyncdispatch, asyncnet. It merges socket creation, address resolution, and connection into single step. When using dial, you don„ŗ—’ have to worry about the IPv4 vs IPv6 problem. httpclient now supports IPv6.

    Added to macro which allows JSON to be unmarshalled into a type.

      import json

      type
        Person = object
          name: string
          age: int

      let data = """
        {
          "name": "Amy",
          "age": 4
        }
      """

      let node = parseJson(data)
      let obj = node.to(Person)
      echo(obj)

Tool Additions

    The finish tool can now download MingW for you should it not find a working MingW installation.

Compiler Additions

    The name mangling rules used by the C code generator changed. Most of the time local variables and parameters are not mangled at all anymore. This improves the debugging experience.
    The compiler produces explicit name mangling files when --debugger:native is enabled. Debuggers can read these .ndi files in order to improve debugging Nim code.

Language Additions

    The try statement„ŗ—‘ except branches now support the binding of a caught exception to a variable:

        try:
          raise newException(Exception, "Hello World")
        except Exception as exc:
          echo(exc.msg)

    This replaces the getCurrentException and getCurrentExceptionMsg() procedures, although these procedures will remain in the stdlib for the foreseeable future. This new language feature is actually implemented using these procedures.

    In the near future we will be converting all exception types to refs to remove the need for the newException template.
    A new pragma .used can be used for symbols to prevent the „ŗ◊Ňeclared but not used„ŗwarning. More details can be found here.

    The popular „ŗ◊ńolon block of statements„ŗsyntax is now also supported for let and var statements and assignments:

      template ve(value, effect): untyped =
        effect
        value

      let x = ve(4):
        echo "welcome to Nim!"

    This is particularly useful for DSLs that help in tree construction.

Language changes

    The .procvar annotation is not required anymore. That doesn„ŗ—’ mean you can pass system.$ to map just yet though.

Revision 1.2 / (download) - annotate - [select for diffs], Sun Feb 5 01:27:30 2017 UTC (6 years, 7 months ago) by kamil
Branch: MAIN
CVS Tags: pkgsrc-2018Q1-base, pkgsrc-2018Q1, pkgsrc-2017Q4-base, pkgsrc-2017Q4, pkgsrc-2017Q3-base, pkgsrc-2017Q3, pkgsrc-2017Q2-base, pkgsrc-2017Q2, pkgsrc-2017Q1-base, pkgsrc-2017Q1
Changes since 1.1: +5 -5 lines
Diff to previous 1.1 (colored)

Update nim from 0.14.2 to 0.16.0

Upstream changelog
==================

Changelog 0.16.0
Changes affecting backwards compatibility

    staticExec now uses the directory of the nim file that contains the staticExec call as the current working directory.
    TimeInfo.tzname has been removed from times module because it was broken. Because of this, the option "ZZZ" will no longer work in format strings for formatting and parsing.

Library Additions

    Added new parameter to error proc of macro module to provide better error message
    Added new deques module intended to replace queues. deques provides a superset of queues API with clear naming. queues module is now deprecated and will be removed in the future.
    Added hideCursor, showCursor, terminalWidth, terminalWidthIoctl and terminalSize to the terminal (doc) module.
    Added new module distros (doc) that can be used in Nimble packages to aid in supporting the OS's native package managers.

Tool Additions
Compiler Additions

    The C/C++ code generator has been rewritten to use stable name mangling rules. This means that compile times for edit-compile-run cycles are much reduced.

Language Additions

    The emit pragma now takes a list of Nim expressions instead of a single string literal. This list can easily contain non-strings like template parameters. This means emit works out of the box with templates and no new quoting rules needed to be introduced. The old way with backtick quoting is still supported but will be deprecated.

type Vector* {.importcpp: "std::vector", header: "<vector>".}[T] = object

template `[]=`*[T](v: var Vector[T], key: int, val: T) =
  {.emit: [v, "[", key, "] = ", val, ";"].}

proc setLen*[T](v: var Vector[T]; size: int) {.importcpp: "resize", nodecl.}
proc `[]`*[T](v: var Vector[T], key: int): T {.importcpp: "(#[#])", nodecl.}

proc main =
  var v: Vector[float]
  v.setLen 1
  v[0] = 6.0
  echo v[0]

    The import statement now supports importing multiple modules from the same directory:

import compiler / [ast, parser, lexer]

Is a shortcut for:

import compiler / ast, compiler / parser, compiler / lexer

Bugfixes

The list below has been generated based on the commits in Nim's git repository. As such it lists only the issues which have been closed via a commit, for a full list see this link on Github.

    Fixed "staticRead and staticExec have different working directories" (#4871)
    Fixed "CountTable doesn't support the '==' operator" (#4901)
    Fixed "documentation for module sequtls apply proc" (#4386)
    Fixed "Operator == for CountTable does not work." (#4946)
    Fixed "sysFatal (IndexError) with parseUri and the / operator" (#4959)
    Fixed "initialSize parameter does not work in OrderedTableRef" (#4940)
    Fixed "error proc from macro library could have a node parameter" (#4915)
    Fixed "Segfault when comparing OrderedTableRef with nil" (#4974)
    Fixed "Bad codegen when comparing isNil results" (#4975)
    Fixed "OrderedTable cannot delete entry with empty string or 0 key" (#5035)
    Fixed "Deleting specific keys from ordered table leaves it in invalid state." (#5057)
    Fixed "Paths are converted to lowercase on Windows" (#5076)
    Fixed "toTime(getGMTime(...)) doesn't work correctly when local timezone is not UTC" (#5065)
    Fixed "out of memory error from test= type proc call when parameter is a call to a table's [] proc" (#5079)
    Fixed "Incorrect field order in object construction" (#5055)
    Fixed "Incorrect codegen when importing nre with C++ backend (commit 8494338)" (#5081)
    Fixed "Templates, {.emit.}, and backtick interpolation do not work together" (#4730)
    Fixed "Regression: getType fails in certain cases" (#5129)
    Fixed "CreateThread doesn't accept functions with generics" (#43)
    Fixed "No instantiation information when template has error" (#4308)
    Fixed "realloc leaks" (#4818)
    Fixed "Regression: getType" (#5131)
    Fixed "Code generation for generics broken by sighashes" (#5135)
    Fixed "Regression: importc functions are not declared in generated C code" (#5136)
    Fixed "Calling split("") on string hangs program" (#5119)
    Fixed "Building dynamic library: undefined references (Linux)" (#4775)
    Fixed "Bad codegen for distinct + importc - sighashes regression" (#5137)
    Fixed "C++ codegen regression: memset called on a result variable of importcpp type" (#5140)
    Fixed "C++ codegen regression: using channels leads to broken C++ code" (#5142)
    Fixed "Ambiguous call when overloading var and non-var with generic type" (#4519)
    Fixed "[Debian]: build.sh error: unknown processor: aarch64" (#2147)
    Fixed "RFC: asyncdispatch.poll behaviour" (#5155)
    Fixed "Can't access enum members through alias (possible sighashes regression)" (#5148)
    Fixed "Type, declared in generic proc body, leads to incorrect codegen (sighashes regression)" (#5147)
    Fixed "Compiler SIGSEGV when mixing method and proc" (#5161)
    Fixed "Compile-time SIGSEGV when declaring .importcpp method with return value " (#3848)
    Fixed "Variable declaration incorrectly parsed" (#2050)
    Fixed "Invalid C code when naming a object member "linux"" (#5171)
    Fixed "[Windows] MinGW within Nim install is missing libraries" (#2723)
    Fixed "async: annoying warning for future.finished" (#4948)
    Fixed "new import syntax doesn't work?" (#5185)
    Fixed "Fixes #1994" (#4874)
    Fixed "Can't tell return value of programs with staticExec" (#1994)
    Fixed "startProcess() on Windows with poInteractive: Second call fails ("Alle Pipeinstanzen sind ausgelastet")" (#5179)


Version 0.15.2 released

We're happy to announce that the latest release of Nim, version 0.15.2, is now available!

As always, you can grab the latest version from the downloads page.

This release is a pure bugfix release fixing the most pressing issues and regressions of 0.15.0. For Windows we now provide zipfiles in addition to the NSIS based installer which proves to be hard to maintain and after all these months still has serious issues. So we encourage you download the .zip file instead of the .exe file! Unzip it somewhere, run finish.exe to detect your MingW installation, done. finish.exe can also set your PATH environment variable.
Bugfixes

The list below has been generated based on the commits in Nim's git repository. As such it lists only the issues which have been closed via a commit, for a full list see this link on Github.

    Fixed "NimMain not exported in DLL, but NimMainInner is" (#4840)
    Fixed "Tables clear seems to be broken" (#4844)
    Fixed "compiler: internal error" (#4845)
    Fixed "trivial macro breaks type checking in the compiler" (#4608)
    Fixed "derived generic types with static[T] breaks type checking in v0.15.0 (worked in v0.14.2)" (#4863)
    Fixed "xmlparser.parseXml is not recognised as GC-safe" (#4899)
    Fixed "async makes generics instantiate only once" (#4856)
    Fixed "db_common docs aren't generated" (#4895)
    Fixed "rdstdin disappeared from documentation index" (#3755)
    Fixed "ICE on template call resolution" (#4875)
    Fixed "Invisible code-block" (#3078)
    Fixed "nim doc does not generate doc comments correctly" (#4913)
    Fixed "nim doc2 fails on ARM when running against lib/pure/coro.nim" (#4879)
    Fixed "xmlparser does not unescape correctly" (#1518)
    Fixed "[docs] mysterious "raise hook"" (#3485)
    Fixed "assertion failure in non-release Nim when compiling NimYAML" (#4869)
    Fixed "A closure causes nimscript to fail with unhandled exception" (#4906)
    Fixed "startProcess changes working directory" (#4867)
    Fixed "bindsym to void template produces ICE" (#4808)
    Fixed "readline(TFile, var string) segfaults if second argument is nil" (#564)
    Fixed "times.parse gives the wrong day of the week for the first hour of the day." (#4922)
    Fixed "Internal error when passing parameter proc inside .gcsafe closure" (#4927)
    Fixed "Upcoming asyncdispatch doesn't compile with C++ backend on OS X" (#4928)



Changelog 0.15.0
Changes affecting backwards compatibility

    The json module now uses an OrderedTable rather than a Table for JSON objects.
    The split (doc) procedure in the strutils module (with a delimiter of type set[char]) no longer strips and splits characters out of the target string by the entire set of characters. Instead, it now behaves in a similar fashion to split with string and char delimiters. Use splitWhitespace to get the old behaviour.

    The command invocation syntax will soon apply to open brackets and curlies too. This means that code like a [i] will be interpreted as a([i]) and not as a[i] anymore. Likewise f (a, b) means that the tuple (a, b) is passed to f. The compiler produces a warning for a [i]:

    Warning: a [b] will be parsed as command syntax; spacing is deprecated

    See Issue #3898 for the relevant discussion.
    Overloading the special operators ., .(), .=, () now needs to be enabled via the {.experimental.} pragma.
    immediate templates and macros are now deprecated. Use untyped (doc) parameters instead.
    The metatype expr is deprecated. Use untyped (doc) instead.
    The metatype stmt is deprecated. Use typed (doc) instead.
    The compiler is now more picky when it comes to tuple types. The following code used to compile, now it's rejected:

import tables
var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]()
rocketaims["hi"] = {(-1.int8, 0.int8): 0.int64}.toTable()

Instead be consistent in your tuple usage and use tuple names for named tuples:

import tables
var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]()
rocketaims["hi"] = {(k: -1.int8, v: 0.int8): 0.int64}.toTable()

    Now when you compile console applications for Windows, console output encoding is automatically set to UTF-8.
    Unhandled exceptions in JavaScript are now thrown regardless of whether noUnhandledHandler is defined. But the stack traces should be much more readable now.
    In JavaScript, the system.alert procedure has been deprecated. Use dom.alert instead.
    De-deprecated re.nim because there is too much code using it and it got the basic API right.
    The type of headers field in the AsyncHttpClient type (doc) has been changed from a string table to the specialised HttpHeaders type.
    The httpclient.request (doc) procedure which takes the httpMethod as a string value no longer requires it to be prefixed with "http" (or similar).
    Converting a HttpMethod (doc) value to a string using the $ operator will give string values without the "Http" prefix now.
    The Request (doc) object defined in the asynchttpserver module now uses the HttpMethod type for the request method.

Library Additions

    Added readHeaderRow and rowEntry to the parsecsv (doc) module to provide a lightweight alternative to python's csv.DictReader.
    Added setStdIoUnbuffered proc to the system module to enable unbuffered I/O.
    Added center and rsplit to the strutils (doc) module to provide similar Python functionality for Nim's strings.
    Added isTitle, title, swapCase, isUpper, toUpper, isLower, toLower, isAlpha, isSpace, and capitalize to the unicode.nim (doc) module to provide unicode aware case manipulation and case testing.
    Added a new module strmisc (doc) to hold uncommon string operations. Currently contains partition, rpartition and expandTabs.
    Split out walkFiles in the os (doc) module to three separate procs in order to make a clear distinction of functionality. walkPattern iterates over both files and directories, while walkFiles now only iterates over files and walkDirs only iterates over directories.
    Added a synchronous HttpClient in the httpclient (doc) module. The old get, post and similar procedures are now deprecated in favour of it.
    Added a new macro called multisync allowing you to write procedures for synchronous and asynchronous sockets with no duplication.
    The async macro will now complete FutureVar[T] parameters automatically unless they have been completed already.

Tool Additions

    The documentation is now searchable and sortable by type.
    Pragmas are now hidden by default in the documentation to reduce noise.
    Edit links are now present in the documentation.

Compiler Additions

    The -d/--define flag can now optionally take a value to be used by code at compile time. (doc)

Nimscript Additions

    It's possible to enable and disable specific hints and warnings in Nimscript via the warning and hint procedures.
    Nimscript exports a proc named patchFile which can be used to patch modules or include files for different Nimble packages, including the stdlib package.

Language Additions

    Added {.intdefine.} and {.strdefine.} macros to make use of (optional) compile time defines. (doc)
    If the first statement is an import system statement then system is not imported implicitly anymore. This allows for code like import system except echo or from system import nil.

Bugfixes

The list below has been generated based on the commits in Nim's git repository. As such it lists only the issues which have been closed via a commit, for a full list see this link on Github.

    Fixed "RFC: should startsWith and endsWith work with characters?" (#4252)
    Fixed "Feature request: unbuffered I/O" (#2146)
    Fixed "clear() not implemented for CountTableRef" (#4325)
    Fixed "Cannot close file opened async" (#4334)
    Fixed "Feature Request: IDNA support" (#3045)
    Fixed "Async: wrong behavior of boolean operations on futures" (#4333)
    Fixed "os.walkFiles yields directories" (#4280)
    Fixed "Fix #4392 and progress on #4170" (#4393)
    Fixed "Await unable to wait futures from objects fields" (#4390)
    Fixed "TMP variable name generation should be more stable" (#4364)
    Fixed "nativesockets doesn't compile for Android 4.x (API v19 or older) because of gethostbyaddr" (#4376)
    Fixed "no generic parameters allowed for ref" (#4395)
    Fixed "split proc in strutils inconsistent for set[char]" (#4305)
    Fixed "Problem with sets in devel" (#4412)
    Fixed "Compiler crash when using seq[PNimrodNode] in macros" (#537)
    Fixed "ospaths should be marked for nimscript use only" (#4249)
    Fixed "Repeated deepCopy() on a recursive data structure eventually crashes" (#4340)
    Fixed "Analyzing destructor" (#4371)
    Fixed "getType does not work anymore on a typedesc" (#4462)
    Fixed "Error in rendering empty JSON array" (#4399)
    Fixed "Segmentation fault when using async pragma on generic procs" (#2377)
    Fixed "Forwarding does not work for generics, | produces an implicit generic" (#3055)
    Fixed "Inside a macro, the length of the seq data inside a queue does not increase and crashes" (#4422)
    Fixed "compiler sigsegv while processing varargs" (#4475)
    Fixed "JS codegen - strings are assigned by reference" (#4471)
    Fixed "when statement doesn't verify syntax" (#4301)
    Fixed ".this pragma doesn't work with .async procs" (#4358)
    Fixed "type foo = range(...) crashes compiler" (#4429)
    Fixed "Compiler crash" (#2730)
    Fixed "Crash in compiler with static[int]" (#3706)
    Fixed "Bad error message "could not resolve"" (#3548)
    Fixed "Roof operator on string in template crashes compiler (Error: unhandled exception: sons is not accessible [FieldError])" (#3545)
    Fixed "SIGSEGV during compilation with parallel block" (#2758)
    Fixed "Codegen error with template and implicit dereference" (#4478)
    Fixed "@ in importcpp should work with no-argument functions" (#4496)
    Fixed "Regression: findExe raises" (#4497)
    Fixed "Linking error - repeated symbols when splitting into modules" (#4485)
    Fixed "Error: method is not a base" (#4428)
    Fixed "Casting from function returning a tuple fails" (#4345)
    Fixed "clang error with default nil parameter" (#4328)
    Fixed "internal compiler error: openArrayLoc" (#888)
    Fixed "Can't forward declare async procs" (#1970)
    Fixed "unittest.check and sequtils.allIt do not work together" (#4494)
    Fixed "httpclient package can't make SSL requests over an HTTP proxy" (#4520)
    Fixed "False positive warning "declared but not used" for enums." (#4510)
    Fixed "Explicit conversions not using converters" (#4432)
    Fixed "Unclear error message when importing" (#4541)
    Fixed "Change console encoding to UTF-8 by default" (#4417)
    Fixed "Typedesc ~= Generic notation does not work anymore!" (#4534)
    Fixed "unittest broken?" (#4555)
    Fixed "Operator "or" in converter types seems to crash the compiler." (#4537)
    Fixed "nimscript failed to compile/run -- Error: cannot 'importc' variable at compile time" (#4561)
    Fixed "Regression: identifier expected, but found ..." (#4564)
    Fixed "varargs with transformation that takes var argument creates invalid c code" (#4545)
    Fixed "Type mismatch when using empty tuple as generic parameter" (#4550)
    Fixed "strscans" (#4562)
    Fixed "getTypeImpl crashes (SIGSEGV) on variant types" (#4526)
    Fixed "Wrong result of sort in VM" (#4065)
    Fixed "I can't call the random[T](x: Slice[T]): T" (#4353)
    Fixed "invalid C code generated (function + block + empty tuple)" (#4505)
    Fixed "performance issue: const Table make a copy at runtime lookup." (#4354)
    Fixed "Compiler issue: libraries without absolute paths cannot be found correctly" (#4568)
    Fixed "Cannot use math.`^` with non-int types." (#4574)
    Fixed "C codegen fails when constructing an array using an object constructor." (#4582)
    Fixed "Visual Studio 10 unresolved external symbol _trunc(should we support VS2010?)" (#4532)
    Fixed "Cannot pass generic subtypes to proc for generic supertype" (#4528)
    Fixed "Lamda-lifting bug leading to crash." (#4551)
    Fixed "First-class iterators declared as inline are compiled at Nim side (no error message) and fail at C" (#2094)
    Fixed "VS2010-warning C4090 : 'function' : different 'const' qualifiers" (#4590)
    Fixed "Regression: type mismatch with generics" (#4589)
    Fixed "„ŗŘńan raise an unlisted exception„ŗwhen assigning nil as default value" (#4593)
    Fixed "upcoming asyncdispatch.closeSocket is not GC-safe" (#4606)
    Fixed "Visual Studio 10.0 compiler errors, 12.0 warning" (#4459)
    Fixed "Exception of net.newContext: result.extraInternalIndex == 0 [AssertionError]" (#4406)
    Fixed "error: redeclaration of 'result_115076' with no linkage" (#3221)
    Fixed "Compiler crashes on conversion from int to float at compile time" (#4619)
    Fixed "wrong number of arguments regression in devel" (#4600)
    Fixed "importc $ has broken error message (and is not documented)" (#4579)
    Fixed "Compiler segfaults on simple importcpp in js mode [regression]" (#4632)
    Fixed "Critical reference counting codegen problem" (#4653)
    Fixed "tables.nim needs lots of {.noSideEffect.}" (#4254)
    Fixed "Capture variable error when using => macro" (#4658)
    Fixed "Enum from char: internal error getInt" (#3606)
    Fixed "Compiler crashes in debug mode (no error in release mode) with Natural discriminant in object variants" (#2865)
    Fixed "SIGSEGV when access field in const object variants" (#4253)
    Fixed "varargs cannot be used with template converter." (#4292)
    Fixed "Compiler crashes when borrowing $" (#3928)
    Fixed "internal error: genMagicExpr: mArrPut" (#4491)
    Fixed "Unhelpful error message on importc namespace collision" (#4580)
    Fixed "Problem with openarrays and slices" (#4179)
    Fixed "Removing lines from end of file then rebuilding does not rebuild [js only?]" (#4656)
    Fixed "getCurrentException and getCurrentExceptionMsg do not work with JS" (#4635)
    Fixed "generic proc parameter is not inferred if type parameter has specifier" (#4672)
    Fixed "Cannot instantiate generic parameter when it is parent type parameter" (#4673)
    Fixed "deepCopy doesn't work with inheritance after last commit" (#4693)
    Fixed "Multi-methods don't work when passing ref to a different thread" (#4689)
    Fixed "Infinite loop in effect analysis on generics" (#4677)
    Fixed "SIGSEGV when compiling NimYAML tests" (#4699)
    Fixed "Closing AsyncEvent now also unregisters it on non-Windows platforms" (#4694)
    Fixed "Don't update handle in upcoming/asyncdispatch poll() if it was closed" (#4697)
    Fixed "generated local variables declared outside block" (#4721)
    Fixed "Footer Documentation links, & Community link point to the wrong place under news entries" (#4529)
    Fixed "Jester's macro magic leads to incorrect C generation" (#4088)
    Fixed "cas bug in atomics.nim" (#3279)
    Fixed "nimgrep PEG not capturing the pattern 'A'" (#4751)
    Fixed "GC assert triggers when assigning TableRef threadvar" (#4640)
    Fixed ".this pragma conflicts with experimental ptr dereferencing when names conflict" (#4671)
    Fixed "Generic procs accepting var .importcpp type do not work [regression]" (#4625)
    Fixed "C Error on tuple assignment with array" (#4626)
    Fixed "module securehash not gcsafe" (#4760)
    Fixed "Nimble installation failed on Windows x86." (#4764)
    Fixed "Recent changes to marshal module break old marshalled data" (#4779)
    Fixed "tnewasyncudp.nim test loops forever" (#4777)
    Fixed "Wrong poll timeout behavior in asyncdispatch" (#4262)
    Fixed "Standalone await shouldn't read future" (#4170)
    Fixed "Regression: httpclient fails to compile without -d:ssl" (#4797)
    Fixed "C Error on declaring array of heritable objects with bitfields" (#3567)
    Fixed "Corruption when using Channels and Threads" (#4776)
    Fixed "Sometimes Channel tryRecv() erroneously reports no messages available on the first call on Windows" (#4746)
    Fixed "Improve error message of functions called without parenthesis" (#4813)
    Fixed "Docgen doesn't find doc comments in macro generated procs" (#4803)
    Fixed "asynchttpserver may consume unbounded memory reading headers" (#3847)
    Fixed "TLS connection to api.clashofclans.com hangs forever." (#4587)

Revision 1.1 / (download) - annotate - [select for diffs], Sun Sep 18 01:02:43 2016 UTC (7 years ago) by kamil
Branch: MAIN
CVS Tags: pkgsrc-2016Q4-base, pkgsrc-2016Q4, pkgsrc-2016Q3-base, pkgsrc-2016Q3

Import nim-0.14.2 as lang/nim

Nim (formerly known as "Nimrod") is a statically typed, imperative
programming language that tries to give the programmer ultimate power
without compromises on runtime efficiency. This means it focuses on
compile-time mechanisms in all their various forms.

Beneath a nice infix/indentation based syntax with a powerful (AST based,
hygienic) macro system lies a semantic model that supports a soft realtime
GC on thread local heaps. Asynchronous message passing is used between
threads, so no "stop the world" mechanism is necessary. An unsafe shared
memory heap is also provided for the increased efficiency that results from
that model.

Originally packaged in pkgsrc-wip by:
 - Christian Koch
 - Roland Illig
and
 - myself.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>