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