Giter VIP home page Giter VIP logo

nim-chronos's Introduction

Chronos - An efficient library for asynchronous programming

Github action License: Apache License: MIT Stability: experimental

Introduction

Chronos is an efficient async/await framework for Nim. Features include:

  • Asynchronous socket and process I/O
  • HTTP server with SSL/TLS support out of the box (no OpenSSL needed)
  • Synchronization primitivies like queues, events and locks
  • Cancellation
  • Efficient dispatch pipeline with excellent multi-platform support
  • Exceptional error handling features, including raises tracking

Getting started

Install chronos using nimble:

nimble install chronos

or add a dependency to your .nimble file:

requires "chronos"

and start using it:

import chronos/apps/http/httpclient

proc retrievePage(uri: string): Future[string] {.async.} =
  # Create a new HTTP session
  let httpSession = HttpSessionRef.new()
  try:
    # Fetch page contents
    let resp = await httpSession.fetch(parseUri(uri))
    # Convert response to a string, assuming its encoding matches the terminal!
    bytesToString(resp.data)
  finally: # Close the session
    await noCancel(httpSession.closeWait())

echo waitFor retrievePage(
  "https://raw.githubusercontent.com/status-im/nim-chronos/master/README.md")

Documentation

See the user guide.

Projects using chronos

  • libp2p - Peer-to-Peer networking stack implemented in many languages
  • presto - REST API framework
  • Scorper - Web framework
  • 2DeFi - Decentralised file system
  • websock - WebSocket library with lots of features

chronos is available in the Nim Playground

Submit a PR to add yours!

TODO

  • Multithreading Stream/Datagram servers

Contributing

When submitting pull requests, please add test cases for any new features or fixes and make sure nimble test is still able to execute the entire test suite successfully.

chronos follows the Status Nim Style Guide.

License

Licensed and distributed under either of

or

at your option. These files may not be copied, modified, or distributed except according to those terms.

nim-chronos's People

Contributors

alexm-status avatar araq avatar arnetheduck avatar bauerj avatar bung87 avatar cheatfate avatar derekdai avatar diegomrsantos avatar dryajov avatar emilivanichkovv avatar etan-status avatar gpicron avatar iffy avatar jangko avatar kdeme avatar markspanbroek avatar menduist avatar michaelsbradleyjr avatar mratsim avatar narimiran avatar pietroppeter avatar rockcavera avatar schnouki avatar sinkingsugar avatar stefantalpalaru avatar swader avatar tersec avatar yglukhov avatar yyoncho avatar zah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nim-chronos's Issues

Implement APIs for async process I/O

Chronos needs an API for launching sub-processes and interacting with their standard input and output through AsyncPipe. Additional APIs may be added for controlling process groups and for automatically terminating sub-processes when their parent dies.

nim CI fails with chronos

https://github.com/nim-lang/Nim/pull/17442/checks?check_run_id=2186758767

PASS: [3/42] chroma c                                                     ( 3.80 sec)
  FAIL: chronicles c
  Test "chronicles" in category "nimble-packages"
  Failure: reBuildFailed
  nim c -o:chr -r chronicles.nim
  Hint: used config file '/home/runner/work/Nim/Nim/config/nim.cfg' [Conf]
  Hint: used config file '/home/runner/work/Nim/Nim/config/config.nims' [Conf]
  Hint: used config file '/home/runner/work/Nim/Nim/pkgstemp/chronicles/nim.cfg' [Conf]
  ......................................................
  /home/runner/.nimble/pkgs/chronos-3.0.0/chronos/asyncmacro2.nim(185, 1) template/generic instantiation from here
  /home/runner/.nimble/pkgs/chronos-3.0.0/chronos/asyncmacro2.nim(187, 55) Error: can raise an unlisted exception: ref ValueError
  
  PASS: [5/42] cligen c                                                     ( 3.43 sec)

Implement some basic benchmarks

Your goal will be to create a benchmark testing asyncdispatch2 against the Nim's existing asyncdispatch module and the best competing frameworks available in other programming languages. A suitable choice would be implementing one of the TechEmperor famous benchmarks:

https://www.techempower.com/benchmarks/#section=data-r15&hw=ph&test=plaintext

In particular, the plaintext case was selected because it makes use of HTTP pipelining which pushes all the frameworks to their limit.

The expected delivery is working code for the test case with the new and the old asyncdispatch modules as well a set of helper scripts allowing us to re-run the tests later and compare the results against some of the best performing frameworks available for other languages.

Sending big packets & fragmentation

I'm having some issues with AsyncStream, I'm sending a big payload (1MB) to stress test some limits but it seems that to begin with asyncstream (well the transport behind it) write won't deal nicely with big payloads:
vacp2p/nim-libp2p#74 (comment)
How is fragmentation and such dealt? Are jumbo payloads supported at all?

I've made sure of my data integrity of 1MB until this proc btw:

proc write*(wstream: AsyncStreamWriter, sbytes: seq[byte],

If we don't support oversized packets than every write should at least throw some exception I guess.
Btw it's not critical for my PR as we can put a hard limit in our wrapper stream probably.

Edit:
Btw I'm aware that this is likely related to the transport behind the stream, I just wonder what's our stance with fragmentation mostly, not really a critical issue probably.

RFC: Timer callbacks don't need the "user data" pointer

Since Jacek is reviewing the AD2 APIs and suggesting changes, here is one small change I want to suggest.

The timer APIs are currently accepting a closure taking an opaque pointer type.

  addTimer(node.beaconState.slotStart(slot)) do (p: pointer):
    doAssert validator != nil
    asyncCheck proposeBlock(node, validator, slot.uint64)

This is a common pattern used in C to simulate "closure-like" callbacks. With a native support for closures in the language, such an API is quite unnatural and less convenient. The opaque pointer can be removed without any loss of functionality.

For very low-level interop with C, Nim can provide additional helpers for wrapping a C function and pointer into a closure type and also for deconstructing the closure type to its respective pair of pointers.

Async procedures and Defects.

Currently {.async.} transformation catches all possible exceptions inside transformed procedures and stores it inside procedure's result Future[T] object.

As you can see here it catches all the exceptions:
https://github.com/status-im/nim-chronos/blob/master/chronos/asyncmacro2.nim#L55

Question is do we need to continue catching all possible exceptions or we should catch only CatchableError level?

This is one word fix.

CC: @arnetheduck @zah @mratsim @sinkingsugar @dryajov @kdeme

Chronos fails with `IndexError` in NBC

When running NBC against Medalla I'm getting the following on or shortly after startup:

.../nim-beacon-chain/vendor/nim-testutils/testutils/moduletests.nim(21) beacon_node
.../nim-beacon-chain/beacon_chain/beacon_node.nim(1198) main
.../beacon_chain/beacon_node.nim(892) start
.../beacon_chain/beacon_node.nim(842) run
.../vendor/nim-chronos/chronos/asyncloop.nim(278) poll
.../vendor/nim-chronos/chronos/transports/stream.nim(1329) readStreamLoop
.../vendor/nimbus-build-system/vendor/Nim/lib/system/fatal.nim(49) sysFatal
Error: unhandled exception: index 4096 not in 0 .. 4095 [IndexError]

OS: Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64

export PDispatcher.handles

Hi, I'm working on porting httpbeast to windows and also porting httpbeast to chronos, so I need to register handles in PDispatcher.

As shown below, I think PDispatcher.handles should be exported.
nim-lang/Nim#15140

I have benchmarked httpbeast based on asyncdispatch and chronos in windows(based on IOCP) with
600 threads, 1s ramp-up period, 1000 loop count using jmeter. Of course I have not modified httpbeast to accommodate chronos.

asyncdispatch results:
asyncdispatch

chronos results:
chronos

Test program:

https://gist.github.com/xflywind/9782cb906be3f83d3a3a3cc9c85debae

`nim c -r -d:useSysAssert -d:useGcAssert tests/testall` fails on OSX

I've disabled chronos on OSX from important_packages in nim-lang/Nim#13954 because CI for chronos fails on OSX:

https://dev.azure.com/nim-lang/255dfe86-e590-40bb-a8a2-3c0295ebdeb1/_apis/build/builds/4234/logs/76


2020-04-11T13:10:46.5530120Z �[1m�[31mFAIL: �[36mhttps://github.com/status-im/nim-chronos C�[0m
2020-04-11T13:10:46.5530940Z �[1m�[36mTest "https://github.com/status-im/nim-chronos" in category "nimble-packages"�[0m
2020-04-11T13:10:46.5531670Z �[1m�[31mFailure: reBuildFailed�[0m
2020-04-11T13:10:46.5531940Z package test failed
2020-04-11T13:10:46.5532150Z $ nimble test
2020-04-11T13:10:46.5532510Z   Executing task test in /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos.nimble
2020-04-11T13:10:46.5532960Z 
2020-04-11T13:10:46.5533560Z nim c -r -d:useSysAssert -d:useGcAssert tests/testall

...

2020-04-11T13:10:46.5643960Z CC: testserver.nim
2020-04-11T13:10:46.5644170Z CC: testbugs.nim
2020-04-11T13:10:46.5644370Z CC: testnet.nim
2020-04-11T13:10:46.5652800Z CC: ../../../../../../../../.nimble/pkgs/bearssl-0.1.5/bearssl/decls.nim
2020-04-11T13:10:46.5654090Z CC: ../../../../../../../../.nimble/pkgs/bearssl-0.1.5/bearssl/errors.nim
2020-04-11T13:10:46.5654510Z CC: ../chronos/streams/tlsstream.nim
2020-04-11T13:10:46.5654770Z CC: testasyncstream.nim
2020-04-11T13:10:46.5655000Z CC: testall.nim
2020-04-11T13:10:46.5655190Z Hint:  [Link]
2020-04-11T13:10:46.5655750Z Hint: 165288 LOC; 12.580 sec; 337.258MiB peakmem; Debug build; proj: tests/testall; out: /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/tests/testall [SuccessX]
2020-04-11T13:10:46.5657140Z Hint: /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/tests/testall  [Exec]
2020-04-11T13:10:46.5657490Z 
2020-04-11T13:10:46.5657700Z [Suite] Macro transformations test suite
2020-04-11T13:10:46.5657900Z 
2020-04-11T13:10:46.5658140Z [Suite] Asynchronous sync primitives test suite
2020-04-11T13:10:46.5658350Z 
2020-04-11T13:10:46.5658550Z [Suite] callSoon() tests suite
2020-04-11T13:10:46.5658730Z 
2020-04-11T13:10:46.5658940Z [Suite] Asynchronous timers test suite
2020-04-11T13:10:46.5659130Z 
2020-04-11T13:10:46.5659340Z [Suite] Future[T] behavior test suite
2020-04-11T13:10:46.5659530Z 
2020-04-11T13:10:46.5659740Z [Suite] Signal handling test suite
2020-04-11T13:10:46.5659920Z 
2020-04-11T13:10:46.5660130Z [Suite] TransportAddress test suite
2020-04-11T13:10:46.5660310Z 
2020-04-11T13:10:46.5660520Z [Suite] Datagram Transport test suite
2020-04-11T13:10:46.5660910Z /Users/runner/runners/2.165.2/work/1/s/lib/pure/unittest.nim(647) testdatagram
2020-04-11T13:10:46.5661400Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncloop.nim(946) waitFor
2020-04-11T13:10:46.5661930Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncloop.nim(278) poll
2020-04-11T13:10:46.5662450Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncmacro2.nim(273) testBroadcast
2020-04-11T13:10:46.5663040Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncfutures2.nim(407) internalCheckComplete
2020-04-11T13:10:46.5663440Z [[reraised from:
2020-04-11T13:10:46.5663770Z /Users/runner/runners/2.165.2/work/1/s/lib/pure/unittest.nim(647) testdatagram
2020-04-11T13:10:46.5664270Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncloop.nim(948) waitFor
2020-04-11T13:10:46.5665140Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncfutures2.nim(423) read
2020-04-11T13:10:46.5665740Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncfutures2.nim(407) internalCheckComplete
2020-04-11T13:10:46.5666110Z ]]
2020-04-11T13:10:46.5666230Z 
2020-04-11T13:10:46.5666470Z     Unhandled exception: Timeout exceeded!
2020-04-11T13:10:46.5666740Z Async traceback:
2020-04-11T13:10:46.5667130Z   /Users/runner/runners/2.165.2/work/1/s/lib/pure/unittest.nim(647)                      testdatagram
2020-04-11T13:10:46.5667680Z   /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncloop.nim(946)     waitFor
2020-04-11T13:10:46.5668230Z   /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncloop.nim(278)     poll
2020-04-11T13:10:46.5668780Z   /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncmacro2.nim(273)   testBroadcast
2020-04-11T13:10:46.5669370Z   /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos/asyncfutures2.nim(407) internalCheckComplete
2020-04-11T13:10:46.5669830Z Exception message: Timeout exceeded!
2020-04-11T13:10:46.5670130Z Exception type: [AsyncTimeoutError]
2020-04-11T13:10:46.5670400Z   [FAILED] Broadcast test
2020-04-11T13:10:46.5670940Z     /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/tests/testdatagram.nim(560, 54): Check failed: getTracker("datagram.transport").isLeaked() == false
2020-04-11T13:10:46.5671780Z     getTracker("datagram.transport").isLeaked() was true
2020-04-11T13:10:46.5672080Z     false was false
2020-04-11T13:10:46.5672330Z   [FAILED] Transports leak test
2020-04-11T13:10:46.5672510Z 
2020-04-11T13:10:46.5672710Z [Suite] Stream Transport test suite
2020-04-11T13:10:46.5672900Z 
2020-04-11T13:10:46.5673490Z [Suite] Server's test suite
2020-04-11T13:10:46.5673680Z 
2020-04-11T13:10:46.5673910Z [Suite] Asynchronous issues test suite
2020-04-11T13:10:46.5674100Z 
2020-04-11T13:10:46.5674310Z [Suite] Network utilities test suite
2020-04-11T13:10:46.5674630Z 1.  lo0: flags = 32841 mtu 16384 state StatusUp
2020-04-11T13:10:46.5674920Z     IfSoftwareLoopback 
2020-04-11T13:10:46.5675400Z     inet 127.0.0.1/8 netmask 255.0.0.0 brd 127.255.255.255
2020-04-11T13:10:46.5675860Z     inet6 ::1/128 netmask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff brd ::1
2020-04-11T13:10:46.5676390Z     inet6 fe80::1/64 netmask ffff:ffff:ffff:ffff:: brd fe80::ffff:ffff:ffff:ffff
2020-04-11T13:10:46.5676850Z 2.  gif0: flags = 32784 mtu 1280 state StatusDown
2020-04-11T13:10:46.5677130Z     IfIeee80212 
2020-04-11T13:10:46.5677400Z 3.  stf0: flags = 0 mtu 1280 state StatusDown
2020-04-11T13:10:46.5677680Z     IfHippiInterface 
2020-04-11T13:10:46.5677960Z 4.  en0: flags = 34915 mtu 1500 state StatusUp
2020-04-11T13:10:46.5678290Z     IfEthernetCsmacd 00:50:56:88:2C:AC
2020-04-11T13:10:46.5678650Z     inet 10.79.9.3/20 netmask 255.255.240.0 brd 10.79.15.255
2020-04-11T13:10:46.5679020Z 5.  utun0: flags = 32849 mtu 1380 state StatusUp
2020-04-11T13:10:46.5679300Z     IfOther 
2020-04-11T13:10:46.5679700Z     inet6 fe80::818d:25b8:fc83:cb94/64 netmask ffff:ffff:ffff:ffff:: brd fe80::ffff:ffff:ffff:ffff
2020-04-11T13:10:46.5680200Z 6.  utun1: flags = 32849 mtu 2000 state StatusUp
2020-04-11T13:10:46.5680470Z     IfOther 
2020-04-11T13:10:46.5680880Z     inet6 fe80::d23f:d69b:8452:8c2d/64 netmask ffff:ffff:ffff:ffff:: brd fe80::ffff:ffff:ffff:ffff
2020-04-11T13:10:46.5681350Z 8.8.8.8 via gateway 10.79.0.1 src 10.79.9.3
2020-04-11T13:10:46.5681560Z 
2020-04-11T13:10:46.5681760Z [Suite] AsyncStream test suite
2020-04-11T13:10:46.5681940Z 
2020-04-11T13:10:46.5682140Z [Suite] ChunkedStream test suite
2020-04-11T13:10:46.5682320Z 
2020-04-11T13:10:46.5682510Z [Suite] TLSStream test suite
2020-04-11T13:10:46.5683430Z Error: execution of an external program failed: '/Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/tests/testall '
2020-04-11T13:10:46.5683930Z stack trace: (most recent call last)
2020-04-11T13:10:46.5684370Z /private/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/nimblecache/nimscriptapi.nim(165, 16)
2020-04-11T13:10:46.5684900Z /Users/runner/runners/2.165.2/work/1/s/pkgstemp/chronos/chronos_7298.nims(25, 8) testTask
2020-04-11T13:10:46.5685400Z /Users/runner/runners/2.165.2/work/1/s/lib/system/nimscript.nim(260, 7) exec
2020-04-11T13:10:46.5686520Z /Users/runner/runners/2.165.2/work/1/s/lib/system/nimscript.nim(260, 7) Error: unhandled exception: FAILED: nim c -r -d:useSysAssert -d:useGcAssert tests/testall [OSError]
2020-04-11T13:10:46.5687580Z        Tip: 1 messages have been suppressed, use --verbose to show them.
2020-04-11T13:10:46.5688020Z      Error: Exception raised during nimble script execution
2020-04-11T13:10:46.5688280Z 
2020-04-11T13:15:18.6274920Z �[32mPASS: �[36mhttps://github.com/c-blake/cligen.git C                     �[34m ( 2.04 sec)�[0m
2020-04-11T13:15:18.6276190Z �[32mPASS: �[36mhttps://github.com/samuelroy/coco C                         �[34m (24.98 sec)�[0m
2020-04-11T13:15:18.6277160Z �[32mPASS: �[36mhttps://github.com/PMunch/combparser C                      �[34m ( 3.00 sec)�[0m
2020-04-11T13:15:18.6278090Z �[32mPASS: �[36mhttps://github.com/LemonBoy/compactdict C                   �[34m ( 3.55 sec)�[0m
2020-04-11T13:15:18.6279050Z �[32mPASS: �[36mhttps://github.com/alehander42/comprehension C              �[34m ( 2.99 sec)�[0m
2020-04-11T13:15:18.6280490Z �[32mPASS: �[36mhttps://github.com/LemonBoy/criterion.nim C                 �[34m (35.07 sec)�[0m
2020-04-11T13:15:18.6281420Z �[32mPASS: �[36mhttps://github.com/FedericoCeratto/nim-dashing C            �[34m ( 1.86 sec)�[0m
2020-04-11T13:15:18.6282350Z �[32mPASS: �[36mhttps://github.com/docopt/docopt.nim C                      �[34m (19.11 sec)�[0m
2020-04-11T13:15:18.6283330Z �[32mPASS: �[36mhttps://github.com/jackmott/easygl C                        �[34m (16.20 sec)�[0m
2020-04-11T13:15:18.6284310Z �[32mPASS: �[36mhttps://github.com/mattaylor/elvis C                        �[34m ( 3.79 sec)�[0m
2020-04-11T13:15:18.6285220Z �[32mPASS: �[36mhttps://github.com/fragcolor-xyz/fragments C                �[34m ( 1.95 sec)�[0m
2020-04-11T13:15:18.6286270Z �[32mPASS: �[36mhttps://github.com/alehander42/gara C                       �[34m ( 3.46 sec)�[0m
2020-04-11T13:15:18.6287540Z �[32mPASS: �[36mhttps://github.com/Vindaar/ggplotnim C                      �[34m (52.02 sec)�[0m
2020-04-11T13:15:18.6288480Z �[32mPASS: �[36mhttps://github.com/citycide/glob C                          �[34m ( 7.31 sec)�[0m
2020-04-11T13:15:18.6289370Z �[32mPASS: �[36mhttps://github.com/dvolk/gnuplot.nim C                      �[34m ( 1.42 sec)�[0m
2020-04-11T13:15:18.6290280Z �[32mPASS: �[36mhttps://github.com/brentp/hts-nim C                         �[34m ( 1.59 sec)�[0m
2020-04-11T13:15:18.6291170Z �[32mPASS: �[36mhttps://github.com/johnnovak/illwill C                      �[34m (17.38 sec)�[0m
2020-04-11T13:15:18.6292080Z �[32mPASS: �[36mhttps://github.com/inim-repl/INim C                         �[34m ( 3.19 sec)�[0m
2020-04-11T13:15:18.6292980Z �[32mPASS: �[36mhttps://github.com/narimiran/itertools C                    �[34m ( 2.03 sec)�[0m
2020-04-11T13:15:18.6293870Z �[32mPASS: �[36mhttps://github.com/def-/iterutils C                         �[34m ( 3.01 sec)�[0m
2020-04-11T13:15:18.6294780Z �[32mPASS: �[36mhttps://github.com/LemonBoy/jstin C                         �[34m ( 3.51 sec)�[0m
2020-04-11T13:15:18.6295680Z �[32mPASS: �[36mhttps://github.com/pragmagic/karax C                        �[34m (11.89 sec)�[0m
2020-04-11T13:15:18.6296590Z �[32mPASS: �[36mhttps://github.com/numforge/loopfusion C                    �[34m ( 2.15 sec)�[0m
2020-04-11T13:15:18.6297480Z �[32mPASS: �[36mhttps://github.com/jangko/msgpack4nim C                     �[34m (32.63 sec)�[0m
2020-04-11T13:15:18.6298390Z �[32mPASS: �[36mhttps://github.com/fowlmouth/nake/ C                        �[34m ( 1.93 sec)�[0m
2020-04-11T13:15:18.6299270Z �[32mPASS: �[36mhttps://github.com/unicredit/neo C                          �[34m ( 9.38 sec)�[0m
2020-04-11T13:15:18.6300170Z �[32mPASS: �[36mhttps://github.com/icyphox/nicy C                           �[34m ( 1.70 sec)�[0m
2020-04-11T13:15:18.6300980Z �[1m�[31mFAIL: �[36mhttps://github.com/trustable-code/NiGui C�[0m
2020-04-11T13:15:18.6301920Z �[1m�[36mTest "https://github.com/trustable-code/NiGui" in category "nimble-packages"�[0m
2020-04-11T13:15:18.6302650Z �[1m�[31mFailure: reBuildFailed�[0m
2020-04-11T13:15:18.6302940Z package test failed
2020-04-11T13:15:18.6303630Z $ nim c -o:niguii -r src/nigui.nim

macro code size explosion

the chronos async loop should be a fairly simple matter: it's a loop that runs callbacks - yet when compiling a simple app like nim-beacon-chain there is 1.4MB of code generated for it - something is wrong.

1,4M	@m..@svendor@snim-chronos@[email protected]

RFC: Transports leak tracking.

Implement scheme which will track create/release transports. In such way developer can find leaks in memory and OS resources (sockets or file descriptors).

Simple way (release mode).

Maintain 2 counters, number of created transports and number of closed transports and provide procedure which can return subtraction of this two counters. In such way developer can obtain information about present leaks our double close in transports.

If there no leaking transports number of created transports must be equal to number of closed transports.

Implemented in #33.

Detailed way (debug mode).

Maintain table which will hold all the created transports and information about it

  1. Remote address and port.
  2. Local address and port.
  3. Moment of creation (or epoch time).
  4. Number of bytes sent.
  5. Number of bytes received.
  6. Send speed (???)
  7. Receive speed (???)
  8. File & line number of creation.
  9. File & line number of release.

Table elements will be added when the transport is created and deleted when the transport is closed.

Provide procedure which will dump all the information from table in convenient way.

Not all accept() errors are properly handled.

Some of the errors should be marked as non-fatal, for example:

Linux, BSD, MacOS systems:

  • ECONNABORTED should be handled in chronos.
  • EMFILE, ENFILE, ENOBUFS, ENOMEM could be treated as TransportTooManyError (which is not fatal).
  • EBADF, EINVAL, ENOTSOCK, EOPNOTSUPP, EPROTO, EFAULT (BSD MACOS) could be treated as fatal.

Windows

  • WSAECONNABORTED should be handled in chronos. (treat it as ECONNABORTED on *nix).
  • WSAEMFILE, WSAENOBUFS, WSAETOOMANYREFS - TransportTooManyError.

sendTo: Exception message: index out of bounds

import asyncdispatch2

const HELLO_PORT = 1900
const TEST_MSG = "testmsg"
const MSG_LEN = TEST_MSG.len()

var udp4DataAvailable: DatagramCallback = proc(transp: DatagramTransport, remote: TransportAddress): Future[void] {.async, gcsafe.} =
  echo "Data from:", remote

proc main(): Future[void] {.async.} =
  var myself = initTAddress("127.0.0.1:" & $HELLO_PORT)
  var data: ref byte
  data = new byte  
  var dsock4 = newDatagramTransport[byte](udp4DataAvailable, udata = data, local = myself)
  await dsock4.sendTo(myself, TEST_MSG, MSG_LEN)

asyncCheck main()
while true:
  poll()

# Fails with
# asyncdispatch2Bug.nim(19) asyncdispatch2Bug
# asyncmacro2.nim(306)     main
# asyncmacro2.nim(36)      main_continue
# asyncdispatch2Bug.nim(17) mainIter
# datagram.nim(622)        sendTo
# system.nim(2807)         sysFatal
# [[reraised from:
# asyncdispatch2Bug.nim(21) asyncdispatch2Bug
# asyncloop.nim(226)       poll
# asyncfutures2.nim(370)   cb
# ]]
# Error: unhandled exception: index out of bounds
# Async traceback:
#   asyncdispatch2Bug.nim(19) asyncdispatch2Bug
#   asyncmacro2.nim(306)      main
#   asyncmacro2.nim(36)       main_continue
#   asyncdispatch2Bug.nim(17) mainIter
#   datagram.nim(622)         sendTo
#   system.nim(2807)          sysFatal
# Exception message: index out of bounds
# Exception type: [IndexError]

If i sendTo from the callback it works fine.
Do i maybe use it wrong?

Error: You should not reference the `result` variable inside a void async proc

Let's keep track of libraries being broken by the corresponding change.

nim-json-rpc:

/mnt/sda3/storage/CODE/status/nim-beacon-chain-clean/vendor/nim-json-rpc/json_rpc/servers/socketserver.nim(17, 72) template/generic instantiation of `async` from here
/mnt/sda3/storage/CODE/status/nim-beacon-chain-clean/vendor/nim-json-rpc/json_rpc/servers/socketserver.nim(31, 5) template/generic instantiation of `result` from here
/mnt/sda3/storage/CODE/status/nim-beacon-chain-clean/vendor/nim-chronos/chronos/asyncmacro2.nim(209, 18) Error: You should not reference the `result` variable inside a void async proc

News:

/mnt/sda3/storage/CODE/status/nim-beacon-chain-clean/vendor/news/src/news.nim(391, 59) template/generic instantiation of `async` from here
/mnt/sda3/storage/CODE/status/nim-beacon-chain-clean/vendor/news/src/news.nim(393, 5) template/generic instantiation of `result` from here
/mnt/sda3/storage/CODE/status/nim-beacon-chain-clean/vendor/nim-chronos/chronos/asyncmacro2.nim(209, 18) Error: You should not reference the `result` variable inside a void async proc

getBestRoute on Windows may raise general `Exception`

When using getBestRoute in a proc with {.raises: [Defect] .} annotation, this fails on Windows but not on Linux and macOS, due to possible Exception raised.

Ideally, it should be the same for all platforms and nothing should be raised.

[RFC] Async I/O with structural control flow (a.k.a. Enforced Awaits)

EDIT: 2020-02-12 Expanded the introduction section with more details explaining the existing problems in non-structural async.

Abstract

This is a proposal to change the semantics of the async procs in a way that enforces a more structural control flow. The goal of the new APIs is to force you to await your async operations, while still allowing you to easily execute multiple operations in parallel. The proposal eliminates a large category of usage errors with the old APIs and enables some additional optimisations such as storing your Future[T] results on the stack and creating async procs consuming stack-based openarray[T] inputs and var parameters.

For a more comprehensive set of rationales for enforcing the structural control flow proposed here, please read the following article:

https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/

Acknowledgements: some of the key ideas in this proposal were first suggested by @yglukhov in private conversations.

Current problems:

P1) All non-ref input parameters to async procs must be copied

Consider the following async proc:

proc checkBrokenLinks(uris: seq[Uri]): Future[seq[bool]] {.async.} =
  ## Tests all supplied URLs in parallel and returns
  ## whether they are still reachable or not.
  ...

If this wasn't an async proc, Nim would pass the supplied input sequence as a read-only reference (please note that I'm using C++ terminology here). This relies on the fact that the lifetime of the sequence at the call-site will surely extend until the moment the function delivers its result.

Unfortunately, in the async world this is no longer the case. The caller of checkBrokenLinks is free to use it like this:

proc brokenCode: Future[seq[bool] =
  var uris = @[
    Uri.init("git://github.com/status-im/nim-chronos"),
    Uri.init("https://status.team")
  ]
  let brokenLinksFut = checkBrokenLinks(uris)
  ...  
  return brokenLinksFut

If the uris sequence was passed by reference, the async proc may be resumed after brokenCode returns which may result in accessing the now dangling reference. To avoid this problem, the Nim compiler makes sure to copy all input parameters of the async proc to corresponding fields in the "environment" struct associated with the async proc's closure iterator. This copying may be quite expensive for value types such as string and seqs and the users are advised to avoid using such type in async procs and to prefer using ref parameters where only a pointer must be copied.

P2) var and openarray parameters are not supported

As a corollary from the previous problem, it becomes impossible to use var and openarray parameters with async procs, because these require the input data to be passed by reference.

P3) The async/await syntax has easily-accessible degrees of freedom that may be dangerous for novice users

Consider the following simple async proc:

proc terminateConnection(s: AsyncSocket) {.async.} =
  var myDisconnectMsg: array[X, byte]
  prepareDisconnect(myDisconnectMsg)
  var res = s.send(addr MyDisconnectMsg[0], X) # oops, forgot to call await here 
  s.close()

It showcases two critical problems triggered by a simple omission of await in the code:

  1. The socket will be closed prematurely.
  2. The send operation will be working with bogus data.

This proposal argues that the default behavior should be completely safe and impossible to misuse, while the more advanced concerns such as enabling parallel execution could be handled with a more specialized syntax.

The Proposed Solution:

We create a new set of APIs that hide the explicit use of Future values in the user code and enforce awaiting of all async operations. If all operations are awaited, it becomes possible to store the inputs of the said operations in the "pseudo stack" associated with the async proc, which in turn enables the use of the reference types such as lent, var and openarray providing much better safety than the current pointer/len inputs.

So, here is the full set of new APIs:

1. Allow await to be given multiple arguments or a tuple

proc httpRequest(url: string): Future[HttpResult]
proc jsonRpcCall(url: string): Future[JsonNode]

proc foo {.async.} =
  var keyword = "Status"
  var (googlePage, jsonData) = await(httpRequest(&"http://google.com/?q={keyword}"),
                                     jsonRpcCall("localhost/myApi"))
  
  echo "HTTP RESPONSE ", googlePage.status, "\n", googlePage.body
  echo "JSON RESPONSE\n", jsonData{"result"}

This form of await just performs the I/O operations in parallel returning a tuple of the final results. It is similar to using var r1 = request(); var r2 = request(); await all(r1, r2) in the current design.

For convenience await (foo, bar) is considered the same as await(foo,bar).

2. Introduce a new select API (EDIT: this point is made partially obsolete by point 4)

select is a new API that is given a number of I/O operations that should be started in parallel. The key difference from await is that the handlers installed for each operation will be executed as soon as any of the results are ready. Control flow keywords such as return and break can be used to cancel some of the outstanding operations:

proc foo {.async.} =
  var keyword = "Status"
  var timedOut = false

  select:
    httpRequest(&"http://google.com/?q={keyword}") as response:
      # executes this as soon as it's ready
      echo "HTTP RESPONSE ", googlePage.status, "\n", googlePage.body
 
    jsonRpcCall("localhost/myApi") as jsonData:
      echo jsonData{"result"}
      return # returns from the current proc; skips the other handlers

    *timeout(100):
      # `timeout` is the same as `sleepAsync`
      timedOut = true
      break # continues after the select; skips the other handlers

  echo "async ops ", if timedOut: "timed out" else: "finished"

The execution after the select block continues when all of the handlers have been executed, although there must be a way to mark some of them as optional (here, I've used * for this).

The named results are considered in scope after the select statement. You can choose to only name a particular result without providing a handling block.

3. Introduce a new safeasync pragma (EDIT: this may well be the default mode)

The safeasync pragma is responsible for inserting the await keyword in automatic way. It also has the role of the current multisync pragma in the sense that it allows you to compile the same code for both sync and async usage:

proc foo: bool {.safeasync.} =
  var keyword = "Status"
  # Notice how I don't need to use await anymore
  var (googlePage, jsonData) = (httpRequest(&"http://google.com/?q={keyword}"),
                                jsonRpcCall("localhost/myApi"))

  return googlePage.status == 200 and not jsonData.hasKey("error")

How does this work? It inserts a call to a template called implicitAwait on each expression within the proc's body. implicitAwait is defined as an identity for all non-future types and as a regular await statement for all futures:

template implicitAwait(x: auto): auto = x
template implicitAwait(x: Future): auto = await x

Please note that the body of a safeasync will work in synchronous mode by executing each operation in turn. It's also possible to compile the code for implicit off-loading to a background thread pool in programs that don't feature an asynchronous event loop.

Appending 3.A

Please note that using the await statement may still be supported inside safeasync procs. One may use it to improve the code clarity. It's also possible to implement safeasync in an alternative way that requires the use of await and signals any omission as an error, but the arguments for this are not very strong - in all code there might be significant differences between operations that are algorithmically cheaper or heavier. It's usually the names of the operations that reveal where the I/O waits will happen.

4. Support async operations in parallel blocks

I'm extending the proposal to also enhance Nim's parallel construct with additional support for async operations. This proposal can replace the need for a separate select API, although it could still exist as a simple high-level helper. The new features are the following:

Within parallel blocks:

4.1) Allow spawn to be followed by a do block that will be executed with the result of the operation, once complete.

4.2) Allow spawn to be used with procs returning Future[T] results. spawn immediately starts the async operation and it adds the Future to a list of tasks to be awaited just before the exit of the parallel block. This enforces the structural handling of the async operations, but one can still work with the returned futures in the familiar fashion - passing them to helper procs, setting up callbacks and so on. It is guaranteed that the callbacks will be executed in the same thread that has entered the parallel block.

4.3) Add a new call called spawnOptional that launches non-critical parallel operations. If the parallel block is able to complete before all such operations have completed, they are simply cancelled.

4.4) Support break and return in parallel blocks by cancelling all outstanding operations.

With such an API, the select example above becomes:

proc foo {.async.} =
  var keyword = "Status"
  var timedOut = false
  
  parallel:
    spawn httpRequest(&"http://google.com/?q={keyword}") do (response):
      # executes this as soon as it's ready
      echo "HTTP RESPONSE ", googlePage.status, "\n", googlePage.body
 
    spawn jsonRpcCall("localhost/myApi") do (jsonData):
      echo jsonData{"result"}
      return # returns from the current proc; skips the other handlers

    spawnOptional timeout(100) do:
      # `timeout` is the same as `sleepAsync`
      timedOut = true
      break # continues after the select; skips the other handlers
  
  echo "async ops ", if timedOut: "timed out" else: "finished"

Please note that such a parallel block will be more powerful than the select construct, because it enables you to add multiple tasks to be awaited from a loop.

The use of parallel blocks and spawn comes at a cost. All parameters passed in the spawn expression must be copied inside the spawned task. Please note that this matches precisely the behavior of spawn when it comes to sending computational tasks to a thread pool as well.

4.5) Introduce an underlying object representing the "parallel block" and create an accessor for it (e.g. a thisParallelBlock magic valid only inside the block). This object will feature operations such as addThreadJob, addAsyncIO, addOptionalAsyncIO. It's the equivalent to the nursery object described in the article linked in the abstract. Its goal is to enable the creation of helper libraries that perform something with the parallel block context.

parallel:
  addJobs(thisParallelBlock)

4.6) Define the exception-handling semantics inside parallel blocks - if an exception is thrown by a spawned task inside a parallel block, this exception will be re-raised in the thread that has entered the block. All other spawned tasks are cancelled.

5. Support async tasks in spawn outside of parallel blocks.

This is an escape hatch that will replace the current usages of asyncCheck and traceAsyncErrors. Semantically, it spawns a new "async thread" of execution. Just like when spawning a regular thread, all parameters passed to the spawn expression must be copied or moved in the new thread. The spawned function must annotated with raises: [Defect]. If it terminates with a Defect, the whole process is also terminated.

6. Migration path for the current async

A semi backwards-compatible async pragma can be added to serve as a drop-in replacement for the existing async pragma. It will differ in only one way. All started async operations will be added to a list that is awaited at the end of their scope. This is not strictly backwards-compatible, but most of the existing async code should not be affected by the change in semantics.

tests not exception-safe

the unit test suite is not written in an exception safe way - this is problematic because:

  • tests are often a good source of example code - if they provide a bad example, the unsafe code spreads
  • failures in a single test cause transport not to be closed and subsequent tests to fail ("address in use") / give false negatives

example:

transp.close()

Implement a secure production-ready HTTP server

For the purposes of implementing a RESTful APIs for interacting with our beacon node, we need a production-ready HTTP/1.1 server that integrates with nim-chronos. It should focus on strong adherence to standards with great care towards security. Additional features such as HTTPS and WebSockets will be added after the initial release.

RFC: remove global dispatcher requirement

A first step towards better threading support would be to remove the global dispatcher - that will allow a more library-like use with fewer mutable globals and better control over which dispatcher is used when, less reliance on undefined init order and a bunch of other subtle improvements.

Practical downside is that a few other "constructor" api get an extra dispatcher argument.

The change can be introduced gradually by first removing internal usages of the dispatcher, then slowly deprecating the affected functions.

Support funcs

Currently, it throws an error:

nim-beacon-chain/vendor/nim-chronos/chronos/asyncmacro2.nim(161, 12) Error: Cannot transform this node kind into an async proc. proc/method definition or lambda node expected.

break/continue + finally broken

import chronos

var j = 0

proc f() {.async.} =
  while true:
    try:
      await sleepAsync(4.millis)
      break
    finally:
      inc j

proc f2() {.async.} =
  for i in 0..<1:
    try:
      await sleepAsync(4.millis)
      continue
    finally:
      inc j
waitFor(f())
waitFor(f2())

doAssert j == 2
Error: unhandled exception: /home/arnetheduck/status/nim-beacon-chain/beacon_chain/testit.nim(23, 10) `j == 2`  [AssertionError]

FutureSeq / gcholder referentially unsafe due to shallow copy

shallowCopy(retFuture.gcholder, msg)

the above technique creates an unexpected reference to a variable that's passed in by value - this goes against the value semantics normally expected in nim - to make this safe, a copy should be used instead:

var data = @[u8 0]

var fut = stream.write(data)
data[0] = 42'u8 # either 0 or 42 will be written here, depending on stream state
await fut

there exist optimizations to avoid the copy in most cases - for example, if the data can be written to the socket directly without going through the event loop. it's possible that macros can be further optimized to detect when the seq is uniquely referenced and make better code as well - likewise, temporaries can be eliminated with move support etc etc

the pointer versions of the write API could be fixed (and optimized) in a similar way, or simply removed. since the seq version would make a copy anyway, it could be replaced with an openArray variant instead.

flaky test affecting nim CI: `An attempt was made to access a socket in a way forbidden by its access permissions.`

https://dev.azure.com/nim-lang/Nim/_build/results?buildId=1501&view=logs&j=78f5e02b-a1d2-5845-e7cb-2dfe2f07bbe5&t=3bbcee50-6afe-5a88-7353-cdd32e58ced3

Unhandled exception: (10013) An attempt was made to access a socket in a way forbidden by its access permissions.

2020-01-05T05:18:22.3688614Z ##[section]Starting: Run CI
2020-01-05T05:18:22.3810536Z ==============================================================================
2020-01-05T05:18:22.3810656Z Task         : Bash
2020-01-05T05:18:22.3810722Z Description  : Run a Bash script on macOS, Linux, or Windows
2020-01-05T05:18:22.3810812Z Version      : 3.159.3
2020-01-05T05:18:22.3810870Z Author       : Microsoft Corporation
2020-01-05T05:18:22.3810962Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/bash
2020-01-05T05:18:22.3811040Z ==============================================================================
2020-01-05T05:18:22.6289909Z Generating script.
2020-01-05T05:18:22.6467554Z [command]"C:\Program Files\Git\bin\bash.exe" --noprofile --norc -c pwd
2020-01-05T05:18:22.6847557Z /d/a/_temp
2020-01-05T05:18:22.6903689Z 
2020-01-05T05:18:22.6936416Z ========================== Starting Command Output ===========================
2020-01-05T05:18:22.6944226Z [command]"C:\Program Files\Git\bin\bash.exe" --noprofile --norc /d/a/_temp/e1e42a12-752b-44b5-a35e-b760a96619f5.sh
2020-01-05T05:18:22.7502383Z runCI:
2020-01-05T05:18:22.7503123Z D:\a\1\s\koch.exe boot -d:release -d:danger
2020-01-05T05:18:22.7631223Z iteration: 1
2020-01-05T05:18:22.7700262Z bin\nim.exe c  --skipUserCfg --skipParentCfg -d:release -d:danger --nimcache:nimcache/r_windows_amd64 --compileOnly compiler\nim.nim
2020-01-05T05:18:22.7835006Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:18:22.7835362Z Hint: used config file 'd:\a\1\s\compiler\nim.cfg' [Conf]
2020-01-05T05:18:22.7835549Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:18:22.8584632Z Hint: system [Processing]
2020-01-05T05:18:23.0740968Z Hint: widestrs [Processing]
2020-01-05T05:18:23.0844947Z Hint: io [Processing]
2020-01-05T05:18:23.0990171Z Hint: nim [Processing]
2020-01-05T05:18:23.0999072Z Hint: commands [Processing]
2020-01-05T05:18:23.1009243Z Hint: os [Processing]
2020-01-05T05:18:23.1020844Z Hint: strutils [Processing]
2020-01-05T05:18:23.1027169Z Hint: parseutils [Processing]
2020-01-05T05:18:23.1181401Z Hint: math [Processing]
2020-01-05T05:18:23.1194419Z Hint: bitops [Processing]
2020-01-05T05:18:23.1207461Z Hint: macros [Processing]
2020-01-05T05:18:23.1767079Z Hint: algorithm [Processing]
2020-01-05T05:18:23.1824060Z Hint: unicode [Processing]
2020-01-05T05:18:23.6845173Z Hint: pathnorm [Processing]
2020-01-05T05:18:23.6852822Z Hint: osseps [Processing]
2020-01-05T05:18:23.6905128Z Hint: winlean [Processing]
2020-01-05T05:18:23.6912675Z Hint: dynlib [Processing]
2020-01-05T05:18:23.6958335Z d:\a\1\s\lib\windows\winlean.nim(407, 12) Warning: ze64 is deprecated [Deprecated]
2020-01-05T05:18:23.6961768Z d:\a\1\s\lib\windows\winlean.nim(407, 38) Warning: ze64 is deprecated [Deprecated]
2020-01-05T05:18:23.6962213Z d:\a\1\s\lib\windows\winlean.nim(410, 12) Warning: ze64 is deprecated [Deprecated]
2020-01-05T05:18:23.6962434Z d:\a\1\s\lib\windows\winlean.nim(410, 37) Warning: ze64 is deprecated [Deprecated]
2020-01-05T05:18:23.7034209Z Hint: times [Processing]
2020-01-05T05:18:23.7056562Z Hint: options [Processing]
2020-01-05T05:18:23.7056975Z Hint: typetraits [Processing]
2020-01-05T05:18:23.7103875Z Hint: time_t [Processing]
2020-01-05T05:18:23.7876857Z d:\a\1\s\lib\pure\times.nim(2467, 26) Warning: countLeapYears is deprecated [Deprecated]
2020-01-05T05:18:24.6635852Z d:\a\1\s\lib\pure\times.nim(2474, 15) Warning: countLeapYears is deprecated [Deprecated]
2020-01-05T05:18:24.6636064Z d:\a\1\s\lib\pure\times.nim(2482, 24) Warning: countLeapYears is deprecated [Deprecated]
2020-01-05T05:18:24.6636175Z d:\a\1\s\lib\pure\os.nim(2120, 6) Warning: declared lock level is 0, but real lock level is <unknown> [LockLevel]
2020-01-05T05:18:24.6636264Z d:\a\1\s\lib\pure\os.nim(2237, 6) Warning: declared lock level is 0, but real lock level is <unknown> [LockLevel]
2020-01-05T05:18:24.6636366Z d:\a\1\s\lib\pure\os.nim(2370, 6) Warning: declared lock level is 0, but real lock level is <unknown> [LockLevel]
2020-01-05T05:18:24.6647440Z Hint: msgs [Processing]
2020-01-05T05:18:24.6647521Z Hint: options [Processing]
2020-01-05T05:18:24.6647577Z Hint: strtabs [Processing]
2020-01-05T05:18:24.6647648Z Hint: hashes [Processing]
2020-01-05T05:18:24.6647702Z Hint: sets [Processing]
2020-01-05T05:18:24.6647773Z Hint: lineinfos [Processing]
2020-01-05T05:18:24.6647995Z Hint: ropes [Processing]
2020-01-05T05:18:24.6648063Z Hint: pathutils [Processing]
2020-01-05T05:18:24.6648116Z Hint: tables [Processing]
2020-01-05T05:18:24.6648168Z Hint: platform [Processing]
2020-01-05T05:18:24.6648238Z Hint: prefixmatches [Processing]
2020-01-05T05:18:24.6648292Z Hint: terminal [Processing]
2020-01-05T05:18:24.6648361Z Hint: strformat [Processing]
2020-01-05T05:18:24.6648412Z Hint: colors [Processing]
2020-01-05T05:18:24.6648492Z d:\a\1\s\lib\pure\terminal.nim(582, 42) Warning: toU16 is deprecated [Deprecated]
2020-01-05T05:18:24.6648569Z d:\a\1\s\lib\pure\terminal.nim(584, 42) Warning: toU16 is deprecated [Deprecated]
2020-01-05T05:18:24.6648672Z d:\a\1\s\lib\pure\terminal.nim(611, 42) Warning: toU16 is deprecated [Deprecated]
2020-01-05T05:18:24.6648743Z d:\a\1\s\lib\pure\terminal.nim(613, 42) Warning: toU16 is deprecated [Deprecated]
2020-01-05T05:18:24.6649022Z Hint: nversion [Processing]
2020-01-05T05:18:24.6649279Z Hint: condsyms [Processing]
2020-01-05T05:18:24.6649364Z Hint: extccomp [Processing]
2020-01-05T05:18:24.6649428Z Hint: osproc [Processing]
2020-01-05T05:18:24.6649508Z Hint: streams [Processing]
2020-01-05T05:18:24.6649569Z Hint: cpuinfo [Processing]
2020-01-05T05:18:24.6649646Z Hint: sha1 [Processing]
2020-01-05T05:18:24.6649707Z Hint: endians [Processing]
2020-01-05T05:18:24.6649783Z Hint: sequtils [Processing]
2020-01-05T05:18:24.6649844Z Hint: json [Processing]
2020-01-05T05:18:24.6649921Z Hint: lexbase [Processing]
2020-01-05T05:18:24.6649982Z Hint: parsejson [Processing]
2020-01-05T05:18:24.6650059Z Hint: wordrecg [Processing]
2020-01-05T05:18:24.6650120Z Hint: nimblecmd [Processing]
2020-01-05T05:18:24.6650352Z Hint: parseopt [Processing]
2020-01-05T05:18:24.6650432Z Hint: incremental [Processing]
2020-01-05T05:18:24.6650495Z Hint: main [Processing]
2020-01-05T05:18:24.6650577Z Hint: llstream [Processing]
2020-01-05T05:18:24.6650640Z Hint: ast [Processing]
2020-01-05T05:18:24.6650720Z Hint: idents [Processing]
2020-01-05T05:18:24.6650780Z Hint: idgen [Processing]
2020-01-05T05:18:24.6650863Z Hint: int128 [Processing]
2020-01-05T05:18:24.6650925Z Hint: lexer [Processing]
2020-01-05T05:18:24.6651007Z Hint: nimlexbase [Processing]
2020-01-05T05:18:24.6651070Z Hint: syntaxes [Processing]
2020-01-05T05:18:24.6651153Z Hint: parser [Processing]
2020-01-05T05:18:24.6651214Z Hint: filters [Processing]
2020-01-05T05:18:24.6651293Z Hint: renderer [Processing]
2020-01-05T05:18:24.7020535Z Hint: filter_tmpl [Processing]
2020-01-05T05:18:24.7191438Z Hint: sem [Processing]
2020-01-05T05:18:24.7234274Z Hint: astalgo [Processing]
2020-01-05T05:18:24.7255707Z Hint: intsets [Processing]
2020-01-05T05:18:24.7386453Z Hint: rodutils [Processing]
2020-01-05T05:18:24.8464111Z Hint: trees [Processing]
2020-01-05T05:18:24.8586812Z Hint: types [Processing]
2020-01-05T05:18:24.8641118Z d:\a\1\s\compiler\types.nim(113, 23) Warning: use getOrdvalue; getOrdValue64 is deprecated [Deprecated]
2020-01-05T05:18:24.9775968Z Hint: magicsys [Processing]
2020-01-05T05:18:24.9794372Z Hint: modulegraphs [Processing]
2020-01-05T05:18:24.9828123Z Hint: btrees [Processing]
2020-01-05T05:18:24.9853950Z Hint: md5 [Processing]
2020-01-05T05:18:25.0231620Z Hint: nimsets [Processing]
2020-01-05T05:18:25.0248751Z Hint: bitsets [Processing]
2020-01-05T05:18:25.0390789Z Hint: semfold [Processing]
2020-01-05T05:18:25.0897613Z Hint: modulepaths [Processing]
2020-01-05T05:18:25.0941407Z Hint: importer [Processing]
2020-01-05T05:18:25.0968638Z Hint: lookups [Processing]
2020-01-05T05:18:25.0993035Z Hint: semdata [Processing]
2020-01-05T05:18:25.1020335Z Hint: vmdef [Processing]
2020-01-05T05:18:25.1276813Z Hint: prettybase [Processing]
2020-01-05T05:18:25.1294541Z Hint: linter [Processing]
2020-01-05T05:18:25.1616369Z Hint: sigmatch [Processing]
2020-01-05T05:18:25.1649480Z Hint: semtypinst [Processing]
2020-01-05T05:18:25.2018182Z Hint: parampatterns [Processing]
2020-01-05T05:18:25.2223008Z Hint: lowerings [Processing]
2020-01-05T05:18:25.4500349Z Hint: procfind [Processing]
2020-01-05T05:18:25.4564791Z Hint: pragmas [Processing]
2020-01-05T05:18:25.5314448Z Hint: passes [Processing]
2020-01-05T05:18:25.5338276Z Hint: reorder [Processing]
2020-01-05T05:18:25.5614304Z Hint: rod [Processing]
2020-01-05T05:18:25.5762000Z Hint: transf [Processing]
2020-01-05T05:18:25.5787523Z Hint: cgmeth [Processing]
2020-01-05T05:18:25.5814060Z Hint: sempass2 [Processing]
2020-01-05T05:18:25.5852680Z Hint: guards [Processing]
2020-01-05T05:18:25.5876407Z Hint: saturate [Processing]
2020-01-05T05:18:25.6807929Z Hint: liftdestructors [Processing]
2020-01-05T05:18:25.6831981Z Hint: sighashes [Processing]
2020-01-05T05:18:25.8876645Z Hint: liftlocals [Processing]
2020-01-05T05:18:25.8934760Z Hint: closureiters [Processing]
2020-01-05T05:18:25.8952377Z Hint: lambdalifting [Processing]
2020-01-05T05:18:26.1071365Z Hint: vm [Processing]
2020-01-05T05:18:26.1088155Z Hint: vmgen [Processing]
2020-01-05T05:18:26.2411106Z Hint: vmdeps [Processing]
2020-01-05T05:18:26.2586548Z Hint: vmmarshal [Processing]
2020-01-05T05:18:26.2898016Z Hint: gorgeimpl [Processing]
2020-01-05T05:18:26.2947409Z Hint: macrocacheimpl [Processing]
2020-01-05T05:18:26.2977301Z Hint: evaltempl [Processing]
2020-01-05T05:18:26.6126763Z Hint: aliases [Processing]
2020-01-05T05:18:26.6246471Z Hint: patterns [Processing]
2020-01-05T05:18:26.6480207Z Hint: semmacrosanity [Processing]
2020-01-05T05:18:26.6575042Z Hint: active [Processing]
2020-01-05T05:18:26.6590374Z Hint: pluginsupport [Processing]
2020-01-05T05:18:26.6630951Z Hint: locals [Processing]
2020-01-05T05:18:26.6707523Z Hint: itersgen [Processing]
2020-01-05T05:18:26.6768520Z Hint: spawn [Processing]
2020-01-05T05:18:26.7007094Z Hint: semparallel [Processing]
2020-01-05T05:18:28.5879598Z Hint: cgen [Processing]
2020-01-05T05:18:28.5934252Z Hint: ccgutils [Processing]
2020-01-05T05:18:28.6013127Z Hint: treetab [Processing]
2020-01-05T05:18:28.6089769Z Hint: cgendata [Processing]
2020-01-05T05:18:28.6114843Z Hint: ndi [Processing]
2020-01-05T05:18:28.6190272Z Hint: ccgmerge [Processing]
2020-01-05T05:18:28.6438076Z Hint: enumtostr [Processing]
2020-01-05T05:18:28.6511904Z Hint: injectdestructors [Processing]
2020-01-05T05:18:28.6547560Z Hint: dfa [Processing]
2020-01-05T05:18:30.0463693Z Hint: nimconf [Processing]
2020-01-05T05:18:30.0612093Z Hint: passaux [Processing]
2020-01-05T05:18:30.0643155Z Hint: depends [Processing]
2020-01-05T05:18:30.0683876Z Hint: modules [Processing]
2020-01-05T05:18:30.0887353Z Hint: jsgen [Processing]
2020-01-05T05:18:30.3403283Z Hint: docgen [Processing]
2020-01-05T05:18:30.3453270Z Hint: rstast [Processing]
2020-01-05T05:18:30.3541746Z Hint: rst [Processing]
2020-01-05T05:18:30.4118607Z Hint: rstgen [Processing]
2020-01-05T05:18:30.4147459Z Hint: highlite [Processing]
2020-01-05T05:18:30.5525812Z Hint: xmltree [Processing]
2020-01-05T05:18:30.5674318Z Hint: cgi [Processing]
2020-01-05T05:18:30.5685754Z Hint: cookies [Processing]
2020-01-05T05:18:30.5715393Z Hint: uri [Processing]
2020-01-05T05:18:30.5907007Z Hint: typesrenderer [Processing]
2020-01-05T05:18:30.6700279Z Hint: docgen2 [Processing]
2020-01-05T05:18:30.7764604Z Hint: cmdlinehelper [Processing]
2020-01-05T05:18:30.7783065Z Hint: scriptconfig [Processing]
2020-01-05T05:18:34.2369061Z Hint: operation successful (142040 lines compiled; 11.381 sec total; 409.363MiB peakmem; Dangerous Release Build) [SuccessX]
2020-01-05T05:18:34.3128588Z bin\nim.exe jsonscript -d:release -d:danger --nimcache:nimcache/r_windows_amd64 compiler\nim.nim
2020-01-05T05:18:34.3277812Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:18:34.3278266Z Hint: used config file 'd:\a\1\s\compiler\nim.cfg' [Conf]
2020-01-05T05:18:34.3278691Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:18:34.4020082Z CC: stdlib_assertions.nim
2020-01-05T05:18:34.4047832Z CC: stdlib_dollars.nim
2020-01-05T05:18:34.4672011Z CC: stdlib_formatfloat.nim
2020-01-05T05:18:34.4724957Z CC: stdlib_widestrs.nim
2020-01-05T05:18:34.5432662Z CC: stdlib_io.nim
2020-01-05T05:18:34.5810839Z CC: stdlib_system.nim
2020-01-05T05:18:34.8820596Z CC: stdlib_parseutils.nim
2020-01-05T05:18:35.0254358Z CC: stdlib_math.nim
2020-01-05T05:18:35.0958412Z CC: stdlib_algorithm.nim
2020-01-05T05:18:35.4094052Z CC: stdlib_unicode.nim
2020-01-05T05:18:35.4726549Z CC: stdlib_strutils.nim
2020-01-05T05:18:36.5636463Z CC: stdlib_pathnorm.nim
2020-01-05T05:18:36.7164223Z CC: stdlib_dynlib.nim
2020-01-05T05:18:37.1613357Z CC: stdlib_winlean.nim
2020-01-05T05:18:37.2544369Z CC: stdlib_times.nim
2020-01-05T05:18:37.4969461Z CC: stdlib_os.nim
2020-01-05T05:18:37.8891592Z CC: stdlib_hashes.nim
2020-01-05T05:18:38.0057685Z CC: stdlib_strtabs.nim
2020-01-05T05:18:38.2659041Z CC: stdlib_sets.nim
2020-01-05T05:18:38.4113715Z CC: pathutils.nim
2020-01-05T05:18:38.4915526Z CC: ropes.nim
2020-01-05T05:18:38.5155631Z CC: stdlib_tables.nim
2020-01-05T05:18:40.8305028Z CC: lineinfos.nim
2020-01-05T05:18:41.0118944Z CC: platform.nim
2020-01-05T05:18:41.0421216Z CC: prefixmatches.nim
2020-01-05T05:18:41.1314562Z CC: stdlib_terminal.nim
2020-01-05T05:18:41.1485682Z CC: options.nim
2020-01-05T05:18:41.2665151Z CC: msgs.nim
2020-01-05T05:18:41.9699704Z CC: condsyms.nim
2020-01-05T05:18:42.0734282Z CC: stdlib_streams.nim
2020-01-05T05:18:42.3014872Z CC: stdlib_cpuinfo.nim
2020-01-05T05:18:42.3629857Z CC: stdlib_osproc.nim
2020-01-05T05:18:42.6401848Z CC: stdlib_sha1.nim
2020-01-05T05:18:42.7836414Z CC: stdlib_lexbase.nim
2020-01-05T05:18:42.9007992Z CC: stdlib_parsejson.nim
2020-01-05T05:18:43.0092011Z CC: stdlib_json.nim
2020-01-05T05:18:43.3024205Z CC: extccomp.nim
2020-01-05T05:18:43.4365232Z CC: wordrecg.nim
2020-01-05T05:18:43.5233679Z CC: nimblecmd.nim
2020-01-05T05:18:43.7608966Z CC: stdlib_parseopt.nim
2020-01-05T05:18:48.1823066Z CC: incremental.nim
2020-01-05T05:18:48.1823209Z CC: commands.nim
2020-01-05T05:18:48.1823295Z CC: llstream.nim
2020-01-05T05:18:48.1823355Z CC: idents.nim
2020-01-05T05:18:48.1823434Z CC: idgen.nim
2020-01-05T05:18:48.1823493Z CC: int1288.nim
2020-01-05T05:18:48.1823570Z CC: ast.nim
2020-01-05T05:18:48.1823628Z CC: nimlexbase.nim
2020-01-05T05:18:48.1823688Z CC: lexer.nim
2020-01-05T05:18:48.1823767Z CC: parser.nim
2020-01-05T05:18:48.1823825Z CC: renderer.nim
2020-01-05T05:18:48.1823903Z CC: filters.nim
2020-01-05T05:18:48.2998188Z CC: filter__tmpl.nim
2020-01-05T05:18:48.5065245Z CC: syntaxes.nim
2020-01-05T05:18:48.6432321Z CC: stdlib_intsets.nim
2020-01-05T05:18:48.7174868Z CC: rodutils.nim
2020-01-05T05:18:48.8455789Z CC: astalgo.nim
2020-01-05T05:18:49.1237610Z CC: trees.nim
2020-01-05T05:18:49.4509288Z CC: types.nim
2020-01-05T05:18:49.7339599Z CC: btrees.nim
2020-01-05T05:18:49.9426127Z CC: stdlib_md5.nim
2020-01-05T05:18:50.2698182Z CC: modulegraphs.nim
2020-01-05T05:18:50.6719894Z CC: magicsys.nim
2020-01-05T05:18:51.0269348Z CC: bitsets.nim
2020-01-05T05:18:51.1265606Z CC: nimsets.nim
2020-01-05T05:18:51.2619972Z CC: semfold.nim
2020-01-05T05:18:51.5082143Z CC: modulepaths.nim
2020-01-05T05:18:51.6082982Z CC: vmdef.nim
2020-01-05T05:18:51.9157842Z CC: semdata.nim
2020-01-05T05:18:52.2424942Z CC: linter.nim
2020-01-05T05:18:52.4682965Z CC: nimfix7prettybase.nim
2020-01-05T05:18:52.5931201Z CC: lookups.nim
2020-01-05T05:18:52.9404349Z CC: semtypinst.nim
2020-01-05T05:18:53.0306173Z CC: parampatterns.nim
2020-01-05T05:18:53.3716619Z CC: lowerings.nim
2020-01-05T05:18:53.6912325Z CC: sigmatch.nim
2020-01-05T05:18:53.9800632Z CC: importer.nim
2020-01-05T05:18:54.2858640Z CC: procfind.nim
2020-01-05T05:18:54.3847820Z CC: pragmas.nim
2020-01-05T05:18:55.5769731Z CC: reorder.nim
2020-01-05T05:18:56.2336806Z CC: passes.nim
2020-01-05T05:18:56.4616996Z CC: saturate.nim
2020-01-05T05:18:56.4852177Z CC: guards.nim
2020-01-05T05:18:56.5285606Z CC: sighashes.nim
2020-01-05T05:18:56.9260323Z CC: liftdestructors.nim
2020-01-05T05:18:57.8543967Z CC: sempass2.nim
2020-01-05T05:18:57.8950750Z CC: cgmeth.nim
2020-01-05T05:18:58.2299080Z CC: liftlocals.nim
2020-01-05T05:18:58.3967102Z CC: lambdalifting.nim
2020-01-05T05:18:59.0937982Z CC: closureiters.nim
2020-01-05T05:18:59.1267035Z CC: transf.nim
2020-01-05T05:19:00.4558557Z CC: vmgen.nim
2020-01-05T05:19:00.9371840Z CC: vmdeps.nim
2020-01-05T05:19:01.2646688Z CC: vmmarshal.nim
2020-01-05T05:19:01.6703114Z CC: gorgeimpl.nim
2020-01-05T05:19:01.7955953Z CC: macrocacheimpl.nim
2020-01-05T05:19:01.8616240Z CC: evaltempl.nim
2020-01-05T05:19:02.0868060Z CC: vm.nim
2020-01-05T05:19:02.6197968Z CC: aliases.nim
2020-01-05T05:19:02.8326568Z CC: patterns.nim
2020-01-05T05:19:03.2342504Z CC: semmacrosanity.nim
2020-01-05T05:19:03.5623942Z CC: pluginsupport.nim
2020-01-05T05:19:03.6246207Z CC: plugins7locals.nim
2020-01-05T05:19:03.7169094Z CC: plugins7itersgen.nim
2020-01-05T05:19:03.7946785Z CC: plugins7active.nim
2020-01-05T05:19:03.8710390Z CC: spawn.nim
2020-01-05T05:19:04.2568779Z CC: semparallel.nim
2020-01-05T05:19:04.8352806Z CC: sem.nim
2020-01-05T05:19:08.4172043Z CC: ccgutils.nim
2020-01-05T05:19:08.4172148Z CC: treetab.nim
2020-01-05T05:19:08.4172627Z CC: ndi.nim
2020-01-05T05:19:08.4172685Z CC: cgendata.nim
2020-01-05T05:19:08.4172764Z CC: ccgmerge.nim
2020-01-05T05:19:08.4172828Z CC: enumtostr.nim
2020-01-05T05:19:08.4172906Z CC: dfa.nim
2020-01-05T05:19:08.4172962Z CC: injectdestructors.nim
2020-01-05T05:19:08.4185188Z CC: cgen.nim
2020-01-05T05:19:14.0717501Z CC: nimconf.nim
2020-01-05T05:19:14.5627861Z CC: passaux.nim
2020-01-05T05:19:14.6360332Z CC: depends.nim
2020-01-05T05:19:14.7487581Z CC: modules.nim
2020-01-05T05:19:14.9327133Z CC: jsgen.nim
2020-01-05T05:19:17.6637194Z CC: _7lib7packages7docutils7rstast.nim
2020-01-05T05:19:17.7888298Z CC: _7lib7packages7docutils7rst.nim
2020-01-05T05:19:19.8976838Z CC: _7lib7packages7docutils7highlite.nim
2020-01-05T05:19:23.7839763Z CC: _7lib7packages7docutils7rstgen.nim
2020-01-05T05:19:23.7840031Z CC: stdlib_xmltree.nim
2020-01-05T05:19:23.7840083Z CC: stdlib_uri.nim
2020-01-05T05:19:23.7840147Z CC: stdlib_cgi.nim
2020-01-05T05:19:23.7840196Z CC: typesrenderer.nim
2020-01-05T05:19:23.7840266Z CC: docgen.nim
2020-01-05T05:19:23.7840315Z CC: docgen2.nim
2020-01-05T05:19:23.7840361Z CC: main.nim
2020-01-05T05:19:23.7840427Z CC: scriptconfig.nim
2020-01-05T05:19:23.7840475Z CC: cmdlinehelper.nim
2020-01-05T05:19:23.7840539Z CC: nim.nim
2020-01-05T05:19:23.7840584Z iteration: 2
2020-01-05T05:19:23.7840665Z compiler\nim1.exe c  -d:release -d:danger --nimcache:nimcache/r_windows_amd64 --compileOnly compiler\nim.nim
2020-01-05T05:19:23.7840739Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:19:23.7840820Z Hint: used config file 'd:\a\1\s\compiler\nim.cfg' [Conf]
2020-01-05T05:19:23.7840905Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:19:23.8017980Z Hint: system [Processing]
2020-01-05T05:19:24.0012712Z Hint: widestrs [Processing]
2020-01-05T05:19:24.0122597Z Hint: io [Processing]
2020-01-05T05:19:24.0343446Z Hint: nim [Processing]
2020-01-05T05:19:24.0352820Z Hint: commands [Processing]
2020-01-05T05:19:24.0365362Z Hint: os [Processing]
2020-01-05T05:19:24.0377112Z Hint: strutils [Processing]
2020-01-05T05:19:24.0383094Z Hint: parseutils [Processing]
2020-01-05T05:19:24.0526301Z Hint: math [Processing]
2020-01-05T05:19:24.0543860Z Hint: bitops [Processing]
2020-01-05T05:19:24.0559814Z Hint: macros [Processing]
2020-01-05T05:19:24.1085381Z Hint: algorithm [Processing]
2020-01-05T05:19:24.1158769Z Hint: unicode [Processing]
2020-01-05T05:19:24.4937560Z Hint: pathnorm [Processing]
2020-01-05T05:19:24.4943613Z Hint: osseps [Processing]
2020-01-05T05:19:24.5008831Z Hint: winlean [Processing]
2020-01-05T05:19:24.5014123Z Hint: dynlib [Processing]
2020-01-05T05:19:24.5130297Z Hint: times [Processing]
2020-01-05T05:19:24.5147659Z Hint: options [Processing]
2020-01-05T05:19:24.5154676Z Hint: typetraits [Processing]
2020-01-05T05:19:24.5217203Z Hint: time_t [Processing]
2020-01-05T05:19:24.6432389Z Hint: msgs [Processing]
2020-01-05T05:19:24.6489290Z Hint: options [Processing]
2020-01-05T05:19:24.6490187Z Hint: strtabs [Processing]
2020-01-05T05:19:24.6490631Z Hint: hashes [Processing]
2020-01-05T05:19:24.6673715Z Hint: sets [Processing]
2020-01-05T05:19:24.6755862Z Hint: lineinfos [Processing]
2020-01-05T05:19:24.6766267Z Hint: ropes [Processing]
2020-01-05T05:19:24.6774223Z Hint: pathutils [Processing]
2020-01-05T05:19:24.6912778Z Hint: tables [Processing]
2020-01-05T05:19:24.7192104Z Hint: platform [Processing]
2020-01-05T05:19:24.7245952Z Hint: prefixmatches [Processing]
2020-01-05T05:19:24.7278221Z Hint: terminal [Processing]
2020-01-05T05:19:24.7288276Z Hint: strformat [Processing]
2020-01-05T05:19:24.7404778Z Hint: colors [Processing]
2020-01-05T05:19:24.8330058Z Hint: nversion [Processing]
2020-01-05T05:19:24.8337625Z Hint: condsyms [Processing]
2020-01-05T05:19:24.8373677Z Hint: extccomp [Processing]
2020-01-05T05:19:24.8396694Z Hint: osproc [Processing]
2020-01-05T05:19:24.8410716Z Hint: streams [Processing]
2020-01-05T05:19:24.8588197Z Hint: cpuinfo [Processing]
2020-01-05T05:19:24.8778457Z Hint: sha1 [Processing]
2020-01-05T05:19:24.8788124Z Hint: endians [Processing]
2020-01-05T05:19:24.9190754Z Hint: sequtils [Processing]
2020-01-05T05:19:24.9606669Z Hint: json [Processing]
2020-01-05T05:19:24.9623014Z Hint: lexbase [Processing]
2020-01-05T05:19:24.9681304Z Hint: parsejson [Processing]
2020-01-05T05:19:25.0579332Z Hint: wordrecg [Processing]
2020-01-05T05:19:25.0605901Z Hint: nimblecmd [Processing]
2020-01-05T05:19:25.0706379Z Hint: parseopt [Processing]
2020-01-05T05:19:25.0790242Z Hint: incremental [Processing]
2020-01-05T05:19:25.1291079Z Hint: main [Processing]
2020-01-05T05:19:25.1296712Z Hint: llstream [Processing]
2020-01-05T05:19:25.1349186Z Hint: ast [Processing]
2020-01-05T05:19:25.1362423Z Hint: idents [Processing]
2020-01-05T05:19:25.1412861Z Hint: idgen [Processing]
2020-01-05T05:19:25.1433915Z Hint: int128 [Processing]
2020-01-05T05:19:25.2044327Z Hint: lexer [Processing]
2020-01-05T05:19:25.2066293Z Hint: nimlexbase [Processing]
2020-01-05T05:19:25.2512908Z Hint: syntaxes [Processing]
2020-01-05T05:19:25.2537067Z Hint: parser [Processing]
2020-01-05T05:19:25.3228328Z Hint: filters [Processing]
2020-01-05T05:19:25.3247801Z Hint: renderer [Processing]
2020-01-05T05:19:25.4108380Z Hint: filter_tmpl [Processing]
2020-01-05T05:19:25.4280044Z Hint: sem [Processing]
2020-01-05T05:19:25.4325005Z Hint: astalgo [Processing]
2020-01-05T05:19:25.4352653Z Hint: intsets [Processing]
2020-01-05T05:19:25.4474330Z Hint: rodutils [Processing]
2020-01-05T05:19:25.5348406Z Hint: trees [Processing]
2020-01-05T05:19:25.5454126Z Hint: types [Processing]
2020-01-05T05:19:25.5528447Z d:\a\1\s\compiler\types.nim(113, 23) Warning: use getOrdvalue; getOrdValue64 is deprecated [Deprecated]
2020-01-05T05:19:25.6490383Z Hint: magicsys [Processing]
2020-01-05T05:19:25.6512701Z Hint: modulegraphs [Processing]
2020-01-05T05:19:25.6544252Z Hint: btrees [Processing]
2020-01-05T05:19:25.6569744Z Hint: md5 [Processing]
2020-01-05T05:19:25.6919395Z Hint: nimsets [Processing]
2020-01-05T05:19:25.6934462Z Hint: bitsets [Processing]
2020-01-05T05:19:25.7069650Z Hint: semfold [Processing]
2020-01-05T05:19:25.7534281Z Hint: modulepaths [Processing]
2020-01-05T05:19:25.7586106Z Hint: importer [Processing]
2020-01-05T05:19:25.7608734Z Hint: lookups [Processing]
2020-01-05T05:19:25.7628757Z Hint: semdata [Processing]
2020-01-05T05:19:25.7695694Z Hint: vmdef [Processing]
2020-01-05T05:19:25.7914558Z Hint: prettybase [Processing]
2020-01-05T05:19:25.7925851Z Hint: linter [Processing]
2020-01-05T05:19:25.8224941Z Hint: sigmatch [Processing]
2020-01-05T05:19:25.8256181Z Hint: semtypinst [Processing]
2020-01-05T05:19:25.8589240Z Hint: parampatterns [Processing]
2020-01-05T05:19:25.8775065Z Hint: lowerings [Processing]
2020-01-05T05:19:26.0984112Z Hint: procfind [Processing]
2020-01-05T05:19:26.1043995Z Hint: pragmas [Processing]
2020-01-05T05:19:26.1767144Z Hint: passes [Processing]
2020-01-05T05:19:26.1788936Z Hint: reorder [Processing]
2020-01-05T05:19:26.2030462Z Hint: rod [Processing]
2020-01-05T05:19:26.2163297Z Hint: transf [Processing]
2020-01-05T05:19:26.2190673Z Hint: cgmeth [Processing]
2020-01-05T05:19:26.2219328Z Hint: sempass2 [Processing]
2020-01-05T05:19:26.2253352Z Hint: guards [Processing]
2020-01-05T05:19:26.2275816Z Hint: saturate [Processing]
2020-01-05T05:19:26.3015329Z Hint: liftdestructors [Processing]
2020-01-05T05:19:26.3040003Z Hint: sighashes [Processing]
2020-01-05T05:19:26.4841052Z Hint: liftlocals [Processing]
2020-01-05T05:19:26.4896946Z Hint: closureiters [Processing]
2020-01-05T05:19:26.4914786Z Hint: lambdalifting [Processing]
2020-01-05T05:19:26.6788267Z Hint: vm [Processing]
2020-01-05T05:19:26.6808885Z Hint: vmgen [Processing]
2020-01-05T05:19:26.8065292Z Hint: vmdeps [Processing]
2020-01-05T05:19:26.8245110Z Hint: vmmarshal [Processing]
2020-01-05T05:19:26.8512733Z Hint: gorgeimpl [Processing]
2020-01-05T05:19:26.8560014Z Hint: macrocacheimpl [Processing]
2020-01-05T05:19:26.8590204Z Hint: evaltempl [Processing]
2020-01-05T05:19:27.1410046Z Hint: aliases [Processing]
2020-01-05T05:19:27.1515823Z Hint: patterns [Processing]
2020-01-05T05:19:27.1729146Z Hint: semmacrosanity [Processing]
2020-01-05T05:19:27.1787289Z Hint: active [Processing]
2020-01-05T05:19:27.1795696Z Hint: pluginsupport [Processing]
2020-01-05T05:19:27.1825733Z Hint: locals [Processing]
2020-01-05T05:19:27.1851694Z Hint: itersgen [Processing]
2020-01-05T05:19:27.1911012Z Hint: spawn [Processing]
2020-01-05T05:19:27.2110657Z Hint: semparallel [Processing]
2020-01-05T05:19:28.8782176Z d:\a\1\s\compiler\sem.nim(27, 17) Warning: imported and not used: 'semparallel' [UnusedImport]
2020-01-05T05:19:28.8790474Z Hint: cgen [Processing]
2020-01-05T05:19:28.8846972Z Hint: ccgutils [Processing]
2020-01-05T05:19:28.8917987Z Hint: treetab [Processing]
2020-01-05T05:19:28.8995791Z Hint: cgendata [Processing]
2020-01-05T05:19:28.9020464Z Hint: ndi [Processing]
2020-01-05T05:19:28.9086853Z Hint: ccgmerge [Processing]
2020-01-05T05:19:28.9302697Z Hint: enumtostr [Processing]
2020-01-05T05:19:28.9374537Z Hint: injectdestructors [Processing]
2020-01-05T05:19:28.9411787Z Hint: dfa [Processing]
2020-01-05T05:19:30.1621032Z Hint: nimconf [Processing]
2020-01-05T05:19:30.1753039Z Hint: passaux [Processing]
2020-01-05T05:19:30.1784368Z Hint: depends [Processing]
2020-01-05T05:19:30.1824319Z Hint: modules [Processing]
2020-01-05T05:19:30.1999264Z Hint: jsgen [Processing]
2020-01-05T05:19:30.4171774Z Hint: docgen [Processing]
2020-01-05T05:19:30.4220985Z Hint: rstast [Processing]
2020-01-05T05:19:30.4303522Z Hint: rst [Processing]
2020-01-05T05:19:30.4875557Z Hint: rstgen [Processing]
2020-01-05T05:19:30.4905407Z Hint: highlite [Processing]
2020-01-05T05:19:30.6062869Z Hint: xmltree [Processing]
2020-01-05T05:19:30.6212114Z Hint: cgi [Processing]
2020-01-05T05:19:30.6223611Z Hint: cookies [Processing]
2020-01-05T05:19:30.6252310Z Hint: uri [Processing]
2020-01-05T05:19:30.6455130Z Hint: typesrenderer [Processing]
2020-01-05T05:19:30.7361282Z Hint: docgen2 [Processing]
2020-01-05T05:19:30.8244542Z Hint: cmdlinehelper [Processing]
2020-01-05T05:19:30.8260903Z Hint: scriptconfig [Processing]
2020-01-05T05:19:34.5554463Z Hint: operation successful (142040 lines compiled; 10.743 sec total; 411.934MiB peakmem; Dangerous Release Build) [SuccessX]
2020-01-05T05:19:34.6173856Z compiler\nim1.exe jsonscript -d:release -d:danger --nimcache:nimcache/r_windows_amd64 compiler\nim.nim
2020-01-05T05:19:34.6315145Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:19:34.6317078Z Hint: used config file 'd:\a\1\s\compiler\nim.cfg' [Conf]
2020-01-05T05:19:34.6317412Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:19:34.7022949Z CC: stdlib_assertions.nim
2020-01-05T05:19:34.7051072Z CC: stdlib_dollars.nim
2020-01-05T05:19:34.7680884Z CC: stdlib_formatfloat.nim
2020-01-05T05:19:34.7747828Z CC: stdlib_widestrs.nim
2020-01-05T05:19:34.8486599Z CC: stdlib_io.nim
2020-01-05T05:19:34.8864876Z CC: stdlib_system.nim
2020-01-05T05:19:35.1773330Z CC: stdlib_parseutils.nim
2020-01-05T05:19:35.3245206Z CC: stdlib_math.nim
2020-01-05T05:19:35.3953687Z CC: stdlib_algorithm.nim
2020-01-05T05:19:35.7199923Z CC: stdlib_unicode.nim
2020-01-05T05:19:35.7827940Z CC: stdlib_strutils.nim
2020-01-05T05:19:36.8747047Z CC: stdlib_pathnorm.nim
2020-01-05T05:19:37.0272410Z CC: stdlib_dynlib.nim
2020-01-05T05:19:37.4553374Z CC: stdlib_winlean.nim
2020-01-05T05:19:37.5265495Z CC: stdlib_times.nim
2020-01-05T05:19:37.8315602Z CC: stdlib_os.nim
2020-01-05T05:19:38.1671449Z CC: stdlib_hashes.nim
2020-01-05T05:19:38.2962970Z CC: stdlib_strtabs.nim
2020-01-05T05:19:38.5444813Z CC: stdlib_sets.nim
2020-01-05T05:19:38.7504967Z CC: pathutils.nim
2020-01-05T05:19:38.8238980Z CC: ropes.nim
2020-01-05T05:19:38.8338238Z CC: stdlib_tables.nim
2020-01-05T05:19:41.0649820Z CC: lineinfos.nim
2020-01-05T05:19:41.2660623Z CC: platform.nim
2020-01-05T05:19:41.3389936Z CC: prefixmatches.nim
2020-01-05T05:19:41.3924161Z CC: stdlib_terminal.nim
2020-01-05T05:19:41.4303856Z CC: options.nim
2020-01-05T05:19:41.5297110Z CC: msgs.nim
2020-01-05T05:19:42.2014958Z CC: condsyms.nim
2020-01-05T05:19:42.3132886Z CC: stdlib_streams.nim
2020-01-05T05:19:42.5415518Z CC: stdlib_cpuinfo.nim
2020-01-05T05:19:42.6027236Z CC: stdlib_osproc.nim
2020-01-05T05:19:42.8960706Z CC: stdlib_sha1.nim
2020-01-05T05:19:43.0197962Z CC: stdlib_lexbase.nim
2020-01-05T05:19:43.1334972Z CC: stdlib_parsejson.nim
2020-01-05T05:19:43.2311759Z CC: stdlib_json.nim
2020-01-05T05:19:43.5369908Z CC: extccomp.nim
2020-01-05T05:19:43.6772027Z CC: wordrecg.nim
2020-01-05T05:19:43.7616448Z CC: nimblecmd.nim
2020-01-05T05:19:44.0025631Z CC: stdlib_parseopt.nim
2020-01-05T05:19:44.2124746Z CC: incremental.nim
2020-01-05T05:19:44.2677494Z CC: commands.nim
2020-01-05T05:19:44.8099900Z CC: llstream.nim
2020-01-05T05:19:45.0360515Z CC: idents.nim
2020-01-05T05:19:45.2144521Z CC: idgen.nim
2020-01-05T05:19:45.2661119Z CC: int128.nim
2020-01-05T05:19:45.3146426Z CC: ast.nim
2020-01-05T05:19:45.6608635Z CC: nimlexbase.nim
2020-01-05T05:19:45.7922041Z CC: lexer.nim
2020-01-05T05:19:46.7266702Z CC: parser.nim
2020-01-05T05:19:47.0994349Z CC: renderer.nim
2020-01-05T05:19:48.4993313Z CC: filters.nim
2020-01-05T05:19:48.6228247Z CC: filter_tmpl.nim
2020-01-05T05:19:48.8336222Z CC: syntaxes.nim
2020-01-05T05:19:48.8434967Z CC: stdlib_intsets.nim
2020-01-05T05:19:49.0426420Z CC: rodutils.nim
2020-01-05T05:19:49.1120583Z CC: astalgo.nim
2020-01-05T05:19:49.1913017Z CC: trees.nim
2020-01-05T05:19:49.5556865Z CC: types.nim
2020-01-05T05:19:49.9863405Z CC: btrees.nim
2020-01-05T05:19:50.2011269Z CC: stdlib_md5.nim
2020-01-05T05:19:50.5307097Z CC: modulegraphs.nim
2020-01-05T05:19:50.9610865Z CC: magicsys.nim
2020-01-05T05:19:51.3106633Z CC: bitsets.nim
2020-01-05T05:19:51.4145264Z CC: nimsets.nim
2020-01-05T05:19:51.5515155Z CC: semfold.nim
2020-01-05T05:19:51.6629091Z CC: modulepaths.nim
2020-01-05T05:19:51.8851010Z CC: vmdef.nim
2020-01-05T05:19:52.2534984Z CC: semdata.nim
2020-01-05T05:19:52.5683155Z CC: linter.nim
2020-01-05T05:19:52.7941615Z CC: nimfix/prettybase.nim
2020-01-05T05:19:52.9578892Z CC: lookups.nim
2020-01-05T05:19:53.2810603Z CC: semtypinst.nim
2020-01-05T05:19:53.4104065Z CC: parampatterns.nim
2020-01-05T05:19:53.7546919Z CC: lowerings.nim
2020-01-05T05:19:54.0101940Z CC: sigmatch.nim
2020-01-05T05:19:54.3876739Z CC: importer.nim
2020-01-05T05:19:54.7487397Z CC: procfind.nim
2020-01-05T05:19:54.8332082Z CC: pragmas.nim
2020-01-05T05:19:56.0233116Z CC: reorder.nim
2020-01-05T05:19:56.5602274Z CC: passes.nim
2020-01-05T05:19:56.7942688Z CC: saturate.nim
2020-01-05T05:19:56.8703750Z CC: guards.nim
2020-01-05T05:19:56.9243131Z CC: sighashes.nim
2020-01-05T05:19:58.2267155Z CC: liftdestructors.nim
2020-01-05T05:19:58.2895081Z CC: sempass2.nim
2020-01-05T05:19:58.2910575Z CC: cgmeth.nim
2020-01-05T05:19:58.6304338Z CC: liftlocals.nim
2020-01-05T05:19:58.8010032Z CC: lambdalifting.nim
2020-01-05T05:19:59.5036826Z CC: closureiters.nim
2020-01-05T05:19:59.5092888Z CC: transf.nim
2020-01-05T05:20:00.9049948Z CC: vmgen.nim
2020-01-05T05:20:01.3348907Z CC: vmdeps.nim
2020-01-05T05:20:01.6601190Z CC: vmmarshal.nim
2020-01-05T05:20:02.0500129Z CC: gorgeimpl.nim
2020-01-05T05:20:02.1793286Z CC: macrocacheimpl.nim
2020-01-05T05:20:02.2480161Z CC: evaltempl.nim
2020-01-05T05:20:02.4722495Z CC: vm.nim
2020-01-05T05:20:03.0797679Z CC: aliases.nim
2020-01-05T05:20:03.2699039Z CC: patterns.nim
2020-01-05T05:20:03.6798104Z CC: semmacrosanity.nim
2020-01-05T05:20:04.0069690Z CC: pluginsupport.nim
2020-01-05T05:20:04.0922536Z CC: plugins/locals.nim
2020-01-05T05:20:04.1751076Z CC: plugins/itersgen.nim
2020-01-05T05:20:04.2523291Z CC: plugins/active.nim
2020-01-05T05:20:04.3122928Z CC: spawn.nim
2020-01-05T05:20:04.6876446Z CC: semparallel.nim
2020-01-05T05:20:05.2963400Z CC: sem.nim
2020-01-05T05:20:05.7241335Z CC: ccgutils.nim
2020-01-05T05:20:05.9320558Z CC: treetab.nim
2020-01-05T05:20:06.1700220Z CC: ndi.nim
2020-01-05T05:20:06.2555051Z CC: cgendata.nim
2020-01-05T05:20:06.7579429Z CC: ccgmerge.nim
2020-01-05T05:20:06.9765535Z CC: enumtostr.nim
2020-01-05T05:20:07.2149055Z CC: dfa.nim
2020-01-05T05:20:07.9963005Z CC: injectdestructors.nim
2020-01-05T05:20:08.9043676Z CC: cgen.nim
2020-01-05T05:20:15.0229307Z CC: nimconf.nim
2020-01-05T05:20:15.0369609Z CC: passaux.nim
2020-01-05T05:20:15.1127260Z CC: depends.nim
2020-01-05T05:20:15.2228673Z CC: modules.nim
2020-01-05T05:20:15.4034284Z CC: jsgen.nim
2020-01-05T05:20:18.1264758Z CC: ../lib/packages/docutils/rstast.nim
2020-01-05T05:20:18.2517033Z CC: ../lib/packages/docutils/rst.nim
2020-01-05T05:20:20.3599665Z CC: ../lib/packages/docutils/highlite.nim
2020-01-05T05:20:20.6390343Z CC: ../lib/packages/docutils/rstgen.nim
2020-01-05T05:20:21.3055475Z CC: stdlib_xmltree.nim
2020-01-05T05:20:21.3839836Z CC: stdlib_uri.nim
2020-01-05T05:20:21.4547491Z CC: stdlib_cgi.nim
2020-01-05T05:20:21.5082864Z CC: typesrenderer.nim
2020-01-05T05:20:21.6776193Z CC: docgen.nim
2020-01-05T05:20:22.3504753Z CC: docgen2.nim
2020-01-05T05:20:22.4796867Z CC: main.nim
2020-01-05T05:20:22.8529800Z CC: scriptconfig.nim
2020-01-05T05:20:23.3593922Z CC: cmdlinehelper.nim
2020-01-05T05:20:23.5095514Z CC: nim.nim
2020-01-05T05:20:23.6984968Z Hint:  [Link]
2020-01-05T05:20:24.9224284Z Hint: operation successful (7758 lines compiled; 50.224 sec total; 8.387MiB peakmem; Dangerous Release Build) [SuccessX]
2020-01-05T05:20:24.9296671Z iteration: 3
2020-01-05T05:20:24.9297264Z compiler\nim2.exe c  -d:release -d:danger --nimcache:nimcache/r_windows_amd64 --compileOnly compiler\nim.nim
2020-01-05T05:20:25.0755926Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:20:25.0756678Z Hint: used config file 'd:\a\1\s\compiler\nim.cfg' [Conf]
2020-01-05T05:20:25.0756927Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:20:25.1480990Z Hint: system [Processing]
2020-01-05T05:20:25.3408049Z Hint: widestrs [Processing]
2020-01-05T05:20:25.3496066Z Hint: io [Processing]
2020-01-05T05:20:25.3631771Z Hint: nim [Processing]
2020-01-05T05:20:25.3640879Z Hint: commands [Processing]
2020-01-05T05:20:25.3653928Z Hint: os [Processing]
2020-01-05T05:20:25.3665846Z Hint: strutils [Processing]
2020-01-05T05:20:25.3671875Z Hint: parseutils [Processing]
2020-01-05T05:20:25.3818278Z Hint: math [Processing]
2020-01-05T05:20:25.3834914Z Hint: bitops [Processing]
2020-01-05T05:20:25.3850578Z Hint: macros [Processing]
2020-01-05T05:20:25.4361504Z Hint: algorithm [Processing]
2020-01-05T05:20:25.4425263Z Hint: unicode [Processing]
2020-01-05T05:20:25.8215019Z Hint: pathnorm [Processing]
2020-01-05T05:20:25.8222135Z Hint: osseps [Processing]
2020-01-05T05:20:25.8283813Z Hint: winlean [Processing]
2020-01-05T05:20:25.8289029Z Hint: dynlib [Processing]
2020-01-05T05:20:25.8411430Z Hint: times [Processing]
2020-01-05T05:20:25.8422855Z Hint: options [Processing]
2020-01-05T05:20:25.8429304Z Hint: typetraits [Processing]
2020-01-05T05:20:25.8486532Z Hint: time_t [Processing]
2020-01-05T05:20:25.9821008Z Hint: msgs [Processing]
2020-01-05T05:20:25.9837509Z Hint: options [Processing]
2020-01-05T05:20:25.9856584Z Hint: strtabs [Processing]
2020-01-05T05:20:25.9863853Z Hint: hashes [Processing]
2020-01-05T05:20:26.0022139Z Hint: sets [Processing]
2020-01-05T05:20:26.0108719Z Hint: lineinfos [Processing]
2020-01-05T05:20:26.0119692Z Hint: ropes [Processing]
2020-01-05T05:20:26.0130258Z Hint: pathutils [Processing]
2020-01-05T05:20:26.0256787Z Hint: tables [Processing]
2020-01-05T05:20:26.0538537Z Hint: platform [Processing]
2020-01-05T05:20:26.0595446Z Hint: prefixmatches [Processing]
2020-01-05T05:20:26.0630857Z Hint: terminal [Processing]
2020-01-05T05:20:26.0643210Z Hint: strformat [Processing]
2020-01-05T05:20:26.0764733Z Hint: colors [Processing]
2020-01-05T05:20:26.1757298Z Hint: nversion [Processing]
2020-01-05T05:20:26.1766049Z Hint: condsyms [Processing]
2020-01-05T05:20:26.1803830Z Hint: extccomp [Processing]
2020-01-05T05:20:26.1829127Z Hint: osproc [Processing]
2020-01-05T05:20:26.1843813Z Hint: streams [Processing]
2020-01-05T05:20:26.2025269Z Hint: cpuinfo [Processing]
2020-01-05T05:20:26.2208224Z Hint: sha1 [Processing]
2020-01-05T05:20:26.2217480Z Hint: endians [Processing]
2020-01-05T05:20:26.2655428Z Hint: sequtils [Processing]
2020-01-05T05:20:26.3109502Z Hint: json [Processing]
2020-01-05T05:20:26.3127334Z Hint: lexbase [Processing]
2020-01-05T05:20:26.3190533Z Hint: parsejson [Processing]
2020-01-05T05:20:26.3964286Z Hint: wordrecg [Processing]
2020-01-05T05:20:26.3990155Z Hint: nimblecmd [Processing]
2020-01-05T05:20:26.4089735Z Hint: parseopt [Processing]
2020-01-05T05:20:26.4177635Z Hint: incremental [Processing]
2020-01-05T05:20:26.4682362Z Hint: main [Processing]
2020-01-05T05:20:26.4689155Z Hint: llstream [Processing]
2020-01-05T05:20:26.4745091Z Hint: ast [Processing]
2020-01-05T05:20:26.4767788Z Hint: idents [Processing]
2020-01-05T05:20:26.4819620Z Hint: idgen [Processing]
2020-01-05T05:20:26.4841273Z Hint: int128 [Processing]
2020-01-05T05:20:26.5474424Z Hint: lexer [Processing]
2020-01-05T05:20:26.5494896Z Hint: nimlexbase [Processing]
2020-01-05T05:20:26.5955773Z Hint: syntaxes [Processing]
2020-01-05T05:20:26.5981503Z Hint: parser [Processing]
2020-01-05T05:20:26.6665461Z Hint: filters [Processing]
2020-01-05T05:20:26.6685306Z Hint: renderer [Processing]
2020-01-05T05:20:26.7524043Z Hint: filter_tmpl [Processing]
2020-01-05T05:20:26.7691397Z Hint: sem [Processing]
2020-01-05T05:20:26.7734852Z Hint: astalgo [Processing]
2020-01-05T05:20:26.7754828Z Hint: intsets [Processing]
2020-01-05T05:20:26.7880255Z Hint: rodutils [Processing]
2020-01-05T05:20:26.8729183Z Hint: trees [Processing]
2020-01-05T05:20:26.8837339Z Hint: types [Processing]
2020-01-05T05:20:26.8893797Z d:\a\1\s\compiler\types.nim(113, 23) Warning: use getOrdvalue; getOrdValue64 is deprecated [Deprecated]
2020-01-05T05:20:26.9942499Z Hint: magicsys [Processing]
2020-01-05T05:20:26.9957330Z Hint: modulegraphs [Processing]
2020-01-05T05:20:26.9989570Z Hint: btrees [Processing]
2020-01-05T05:20:27.0017438Z Hint: md5 [Processing]
2020-01-05T05:20:27.0337082Z Hint: nimsets [Processing]
2020-01-05T05:20:27.0350620Z Hint: bitsets [Processing]
2020-01-05T05:20:27.0474461Z Hint: semfold [Processing]
2020-01-05T05:20:27.0941000Z Hint: modulepaths [Processing]
2020-01-05T05:20:27.0990506Z Hint: importer [Processing]
2020-01-05T05:20:27.1021502Z Hint: lookups [Processing]
2020-01-05T05:20:27.1044139Z Hint: semdata [Processing]
2020-01-05T05:20:27.1070103Z Hint: vmdef [Processing]
2020-01-05T05:20:27.1301770Z Hint: prettybase [Processing]
2020-01-05T05:20:27.1319805Z Hint: linter [Processing]
2020-01-05T05:20:27.1676633Z Hint: sigmatch [Processing]
2020-01-05T05:20:27.1709655Z Hint: semtypinst [Processing]
2020-01-05T05:20:27.2046216Z Hint: parampatterns [Processing]
2020-01-05T05:20:27.2228904Z Hint: lowerings [Processing]
2020-01-05T05:20:27.4284515Z Hint: procfind [Processing]
2020-01-05T05:20:27.4346062Z Hint: pragmas [Processing]
2020-01-05T05:20:27.5021283Z Hint: passes [Processing]
2020-01-05T05:20:27.5045030Z Hint: reorder [Processing]
2020-01-05T05:20:27.5294399Z Hint: rod [Processing]
2020-01-05T05:20:27.5426185Z Hint: transf [Processing]
2020-01-05T05:20:27.5450807Z Hint: cgmeth [Processing]
2020-01-05T05:20:27.5476946Z Hint: sempass2 [Processing]
2020-01-05T05:20:27.5510705Z Hint: guards [Processing]
2020-01-05T05:20:27.5532626Z Hint: saturate [Processing]
2020-01-05T05:20:27.6275454Z Hint: liftdestructors [Processing]
2020-01-05T05:20:27.6296098Z Hint: sighashes [Processing]
2020-01-05T05:20:27.8034891Z Hint: liftlocals [Processing]
2020-01-05T05:20:27.8095518Z Hint: closureiters [Processing]
2020-01-05T05:20:27.8112805Z Hint: lambdalifting [Processing]
2020-01-05T05:20:28.0034031Z Hint: vm [Processing]
2020-01-05T05:20:28.0048792Z Hint: vmgen [Processing]
2020-01-05T05:20:28.1240638Z Hint: vmdeps [Processing]
2020-01-05T05:20:28.1419780Z Hint: vmmarshal [Processing]
2020-01-05T05:20:28.1672584Z Hint: gorgeimpl [Processing]
2020-01-05T05:20:28.1725324Z Hint: macrocacheimpl [Processing]
2020-01-05T05:20:28.1756132Z Hint: evaltempl [Processing]
2020-01-05T05:20:28.4419760Z Hint: aliases [Processing]
2020-01-05T05:20:28.4521699Z Hint: patterns [Processing]
2020-01-05T05:20:28.4731863Z Hint: semmacrosanity [Processing]
2020-01-05T05:20:28.4791204Z Hint: active [Processing]
2020-01-05T05:20:28.4799432Z Hint: pluginsupport [Processing]
2020-01-05T05:20:28.4828489Z Hint: locals [Processing]
2020-01-05T05:20:28.4855518Z Hint: itersgen [Processing]
2020-01-05T05:20:28.4920754Z Hint: spawn [Processing]
2020-01-05T05:20:28.5121402Z Hint: semparallel [Processing]
2020-01-05T05:20:30.1628961Z d:\a\1\s\compiler\sem.nim(27, 17) Warning: imported and not used: 'semparallel' [UnusedImport]
2020-01-05T05:20:30.1637535Z Hint: cgen [Processing]
2020-01-05T05:20:30.1689931Z Hint: ccgutils [Processing]
2020-01-05T05:20:30.1756864Z Hint: treetab [Processing]
2020-01-05T05:20:30.1824157Z Hint: cgendata [Processing]
2020-01-05T05:20:30.1849121Z Hint: ndi [Processing]
2020-01-05T05:20:30.1913788Z Hint: ccgmerge [Processing]
2020-01-05T05:20:30.2118448Z Hint: enumtostr [Processing]
2020-01-05T05:20:30.2193959Z Hint: injectdestructors [Processing]
2020-01-05T05:20:30.2225751Z Hint: dfa [Processing]
2020-01-05T05:20:31.3959921Z Hint: nimconf [Processing]
2020-01-05T05:20:31.4087676Z Hint: passaux [Processing]
2020-01-05T05:20:31.4118396Z Hint: depends [Processing]
2020-01-05T05:20:31.4158033Z Hint: modules [Processing]
2020-01-05T05:20:31.4342488Z Hint: jsgen [Processing]
2020-01-05T05:20:31.6522476Z Hint: docgen [Processing]
2020-01-05T05:20:31.6570863Z Hint: rstast [Processing]
2020-01-05T05:20:31.6654506Z Hint: rst [Processing]
2020-01-05T05:20:31.7184131Z Hint: rstgen [Processing]
2020-01-05T05:20:31.7211121Z Hint: highlite [Processing]
2020-01-05T05:20:31.8227189Z Hint: xmltree [Processing]
2020-01-05T05:20:31.8383929Z Hint: cgi [Processing]
2020-01-05T05:20:31.8396280Z Hint: cookies [Processing]
2020-01-05T05:20:31.8426801Z Hint: uri [Processing]
2020-01-05T05:20:31.8618281Z Hint: typesrenderer [Processing]
2020-01-05T05:20:31.9342911Z Hint: docgen2 [Processing]
2020-01-05T05:20:32.0344887Z Hint: cmdlinehelper [Processing]
2020-01-05T05:20:32.0361710Z Hint: scriptconfig [Processing]
2020-01-05T05:20:35.3339138Z Hint: operation successful (142040 lines compiled; 10.193 sec total; 412.285MiB peakmem; Dangerous Release Build) [SuccessX]
2020-01-05T05:20:35.3822815Z compiler\nim2.exe jsonscript -d:release -d:danger --nimcache:nimcache/r_windows_amd64 compiler\nim.nim
2020-01-05T05:20:35.3962997Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:20:35.3964258Z Hint: used config file 'd:\a\1\s\compiler\nim.cfg' [Conf]
2020-01-05T05:20:35.3964524Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:20:35.4741051Z Hint:  [Link]
2020-01-05T05:20:35.7698241Z Hint: operation successful (7758 lines compiled; 0.297 sec total; 6.824MiB peakmem; Dangerous Release Build) [SuccessX]
2020-01-05T05:20:35.7847921Z D:\a\1\s\koch.exe nimble
2020-01-05T05:20:35.7976055Z git clone https://github.com/nim-lang/nimble.git dist/nimble
2020-01-05T05:20:35.8252424Z Cloning into 'dist/nimble'...
2020-01-05T05:20:37.4935210Z git fetch
2020-01-05T05:20:38.0977340Z git checkout 4007b2a778429a978e12307bf13a038029b4c4d9
2020-01-05T05:20:38.1484253Z Note: switching to '4007b2a778429a978e12307bf13a038029b4c4d9'.
2020-01-05T05:20:38.1485630Z 
2020-01-05T05:20:38.1487290Z You are in 'detached HEAD' state. You can look around, make experimental
2020-01-05T05:20:38.1490317Z changes and commit them, and you can discard any commits you make in this
2020-01-05T05:20:38.1492317Z state without impacting any branches by switching back to a branch.
2020-01-05T05:20:38.1495545Z 
2020-01-05T05:20:38.1498059Z If you want to create a new branch to retain commits you create, you may
2020-01-05T05:20:38.1499083Z do so (now or later) by using -c with the switch command. Example:
2020-01-05T05:20:38.1500254Z 
2020-01-05T05:20:38.1501044Z   git switch -c <new-branch-name>
2020-01-05T05:20:38.1501298Z 
2020-01-05T05:20:38.1502396Z Or undo this operation with:
2020-01-05T05:20:38.1506354Z 
2020-01-05T05:20:38.1510588Z   git switch -
2020-01-05T05:20:38.1512488Z 
2020-01-05T05:20:38.1513601Z Turn off this advice by setting config variable advice.detachedHead to false
2020-01-05T05:20:38.1514267Z 
2020-01-05T05:20:38.1514991Z HEAD is now at 4007b2a Fixes `nimble run` on Windows.
2020-01-05T05:20:38.1570113Z bin\nim.exe c -o:bin\nimble.exe --noNimblePath --nilseqs:on -d:release  dist\nimble\src\nimble.nim
2020-01-05T05:20:38.1809645Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:20:38.1810362Z Hint: used config file 'd:\a\1\s\dist\nimble\src\nimble.nim.cfg' [Conf]
2020-01-05T05:20:38.1810572Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:20:38.2480181Z Hint: system [Processing]
2020-01-05T05:20:38.4310827Z Hint: widestrs [Processing]
2020-01-05T05:20:38.4385033Z Hint: io [Processing]
2020-01-05T05:20:38.4506777Z Hint: nimble [Processing]
2020-01-05T05:20:38.4518882Z Hint: os [Processing]
2020-01-05T05:20:38.4529971Z Hint: strutils [Processing]
2020-01-05T05:20:38.4535294Z Hint: parseutils [Processing]
2020-01-05T05:20:38.4657694Z Hint: math [Processing]
2020-01-05T05:20:38.4669917Z Hint: bitops [Processing]
2020-01-05T05:20:38.4682569Z Hint: macros [Processing]
2020-01-05T05:20:38.5145764Z Hint: algorithm [Processing]
2020-01-05T05:20:38.5192425Z Hint: unicode [Processing]
2020-01-05T05:20:38.8591111Z Hint: pathnorm [Processing]
2020-01-05T05:20:38.8596210Z Hint: osseps [Processing]
2020-01-05T05:20:38.8640071Z Hint: winlean [Processing]
2020-01-05T05:20:38.8645334Z Hint: dynlib [Processing]
2020-01-05T05:20:38.8747302Z Hint: times [Processing]
2020-01-05T05:20:38.8758535Z Hint: options [Processing]
2020-01-05T05:20:38.8764313Z Hint: typetraits [Processing]
2020-01-05T05:20:38.8800673Z Hint: time_t [Processing]
2020-01-05T05:20:38.9911879Z Hint: tables [Processing]
2020-01-05T05:20:38.9922343Z Hint: hashes [Processing]
2020-01-05T05:20:39.0171201Z Hint: strtabs [Processing]
2020-01-05T05:20:39.0259370Z Hint: json [Processing]
2020-01-05T05:20:39.0271091Z Hint: lexbase [Processing]
2020-01-05T05:20:39.0278722Z Hint: streams [Processing]
2020-01-05T05:20:39.0499776Z Hint: parsejson [Processing]
2020-01-05T05:20:39.1140609Z Hint: sets [Processing]
2020-01-05T05:20:39.1240051Z Hint: uri [Processing]
2020-01-05T05:20:39.1334397Z Hint: sugar [Processing]
2020-01-05T05:20:39.1419254Z Hint: sequtils [Processing]
2020-01-05T05:20:39.1494461Z Hint: packageinfo [Processing]
2020-01-05T05:20:39.1521608Z Hint: httpclient [Processing]
2020-01-05T05:20:39.1534605Z Hint: net [Processing]
2020-01-05T05:20:39.1540166Z Hint: nativesockets [Processing]
2020-01-05T05:20:39.1858673Z Hint: monotimes [Processing]
2020-01-05T05:20:39.1896990Z Hint: openssl [Processing]
2020-01-05T05:20:39.2509339Z Hint: base64 [Processing]
2020-01-05T05:20:39.2638460Z Hint: mimetypes [Processing]
2020-01-05T05:20:39.2749706Z Hint: random [Processing]
2020-01-05T05:20:39.2804380Z Hint: httpcore [Processing]
2020-01-05T05:20:39.3081116Z Hint: asyncnet [Processing]
2020-01-05T05:20:39.3088507Z Hint: asyncdispatch [Processing]
2020-01-05T05:20:39.3112113Z Hint: heapqueue [Processing]
2020-01-05T05:20:39.3129660Z Hint: lists [Processing]
2020-01-05T05:20:39.3159111Z Hint: asyncstreams [Processing]
2020-01-05T05:20:39.3164740Z Hint: asyncfutures [Processing]
2020-01-05T05:20:39.3194211Z Hint: deques [Processing]
2020-01-05T05:20:39.3232493Z Hint: cstrutils [Processing]
2020-01-05T05:20:39.5023325Z Hint: asyncfile [Processing]
2020-01-05T05:20:39.6298888Z Hint: version [Processing]
2020-01-05T05:20:39.6414298Z Hint: tools [Processing]
2020-01-05T05:20:39.6432341Z Hint: osproc [Processing]
2020-01-05T05:20:39.6450449Z Hint: cpuinfo [Processing]
2020-01-05T05:20:39.6636398Z Hint: pegs [Processing]
2020-01-05T05:20:39.7919794Z Hint: cli [Processing]
2020-01-05T05:20:39.7954315Z Hint: terminal [Processing]
2020-01-05T05:20:39.7954847Z Hint: strformat [Processing]
2020-01-05T05:20:39.8043014Z Hint: colors [Processing]
2020-01-05T05:20:39.8493877Z Hint: common [Processing]
2020-01-05T05:20:39.8508486Z Hint: options [Processing]
2020-01-05T05:20:39.8531994Z Hint: parseopt [Processing]
2020-01-05T05:20:39.8644548Z Hint: config [Processing]
2020-01-05T05:20:39.8661600Z Hint: parsecfg [Processing]
2020-01-05T05:20:40.0195887Z Hint: download [Processing]
2020-01-05T05:20:40.0228452Z Hint: packageparser [Processing]
2020-01-05T05:20:40.0264349Z Hint: nimscriptwrapper [Processing]
2020-01-05T05:20:40.0346195Z d:\a\1\s\dist\nimble\src\nimblepkg\nimscriptwrapper.nim(174, 21) Hint: simpleGetOrDefault(j, "success") --> 'getOrDefault(j, "success")' [Pattern]
2020-01-05T05:20:40.0347057Z d:\a\1\s\dist\nimble\src\nimblepkg\nimscriptwrapper.nim(175, 21) Hint: simpleGetOrDefault(j, "command") --> 'getOrDefault(j, "command")' [Pattern]
2020-01-05T05:20:40.0347330Z d:\a\1\s\dist\nimble\src\nimblepkg\nimscriptwrapper.nim(183, 20) Hint: simpleGetOrDefault(j, "retVal") --> 'getOrDefault(j, "retVal")' [Pattern]
2020-01-05T05:20:40.0870737Z Hint: publish [Processing]
2020-01-05T05:20:40.0895398Z Hint: browsers [Processing]
2020-01-05T05:20:40.0930197Z d:\a\1\s\dist\nimble\src\nimblepkg\publish.nim(79, 7) Hint: simpleGetOrDefault(j, "fork") --> 'getOrDefault(j, "fork")' [Pattern]
2020-01-05T05:20:40.0930793Z d:\a\1\s\dist\nimble\src\nimblepkg\publish.nim(80, 25) Hint: simpleGetOrDefault({}(j, ["parent"]), "full_name") --> 'getOrDefault({}(j, ["parent"]), "full_name")' [Pattern]
2020-01-05T05:20:40.0931036Z d:\a\1\s\dist\nimble\src\nimblepkg\publish.nim(80, 15) Hint: simpleGetOrDefault(j, "parent") --> 'getOrDefault(j, "parent")' [Pattern]
2020-01-05T05:20:40.0937029Z d:\a\1\s\dist\nimble\src\nimblepkg\publish.nim(103, 12) Hint: simpleGetOrDefault(pr, "html_url") --> 'getOrDefault(pr, "html_url")' [Pattern]
2020-01-05T05:20:40.1011629Z Hint: packageinstaller [Processing]
2020-01-05T05:20:40.1074997Z Hint: reversedeps [Processing]
2020-01-05T05:20:40.1129062Z d:\a\1\s\dist\nimble\src\nimblepkg\reversedeps.nim(65, 48) Hint: simpleGetOrDefault({}(options.nimbleData["reverseDeps"], [pkg.name]),
2020-01-05T05:20:40.1129384Z                    pkg.specialVersion) --> 'getOrDefault({}(options.nimbleData["reverseDeps"], [pkg.name]), pkg.specialVersion)' [Pattern]
2020-01-05T05:20:40.1129634Z d:\a\1\s\dist\nimble\src\nimblepkg\reversedeps.nim(65, 38) Hint: simpleGetOrDefault(options.nimbleData["reverseDeps"], pkg.name) --> 'getOrDefault(options.nimbleData["reverseDeps"], pkg.name)' [Pattern]
2020-01-05T05:20:40.1207859Z Hint: nimscriptexecutor [Processing]
2020-01-05T05:20:40.1248965Z Hint: init [Processing]
2020-01-05T05:20:40.8047129Z CC: stdlib_assertions.nim
2020-01-05T05:20:40.8067531Z CC: stdlib_dollars.nim
2020-01-05T05:20:40.8654660Z CC: stdlib_formatfloat.nim
2020-01-05T05:20:40.8945194Z CC: stdlib_widestrs.nim
2020-01-05T05:20:40.9416652Z CC: stdlib_io.nim
2020-01-05T05:20:41.0518536Z CC: stdlib_system.nim
2020-01-05T05:20:41.2627256Z CC: stdlib_parseutils.nim
2020-01-05T05:20:41.4254237Z CC: stdlib_math.nim
2020-01-05T05:20:41.4922720Z CC: stdlib_algorithm.nim
2020-01-05T05:20:41.7337531Z CC: stdlib_unicode.nim
2020-01-05T05:20:42.1689566Z CC: stdlib_strutils.nim
2020-01-05T05:20:43.1058781Z CC: stdlib_pathnorm.nim
2020-01-05T05:20:43.3408271Z CC: stdlib_dynlib.nim
2020-01-05T05:20:43.8378654Z CC: stdlib_winlean.nim
2020-01-05T05:20:43.8380466Z CC: stdlib_options.nim
2020-01-05T05:20:43.9271556Z CC: stdlib_times.nim
2020-01-05T05:20:44.2733659Z CC: stdlib_os.nim
2020-01-05T05:20:44.6223771Z CC: stdlib_hashes.nim
2020-01-05T05:20:44.7462886Z CC: stdlib_tables.nim
2020-01-05T05:20:45.1735567Z CC: stdlib_strtabs.nim
2020-01-05T05:20:45.3891529Z CC: stdlib_streams.nim
2020-01-05T05:20:45.6819365Z CC: stdlib_lexbase.nim
2020-01-05T05:20:45.8668670Z CC: stdlib_parsejson.nim
2020-01-05T05:20:46.2992655Z CC: stdlib_json.nim
2020-01-05T05:20:46.3543220Z CC: stdlib_sets.nim
2020-01-05T05:20:46.8872630Z CC: stdlib_uri.nim
2020-01-05T05:20:46.9104323Z CC: stdlib_nativesockets.nim
2020-01-05T05:20:47.1767554Z CC: stdlib_monotimes.nim
2020-01-05T05:20:47.2600712Z CC: stdlib_openssl.nim
2020-01-05T05:20:47.3749954Z CC: stdlib_net.nim
2020-01-05T05:20:47.4672326Z CC: stdlib_base64.nim
2020-01-05T05:20:47.6047444Z CC: stdlib_random.nim
2020-01-05T05:20:47.6676822Z CC: stdlib_httpcore.nim
2020-01-05T05:20:47.8571033Z CC: stdlib_heapqueue.nim
2020-01-05T05:20:47.9288069Z CC: stdlib_deques.nim
2020-01-05T05:20:48.0040064Z CC: stdlib_asyncfutures.nim
2020-01-05T05:20:48.0899165Z CC: stdlib_asyncdispatch.nim
2020-01-05T05:20:48.5492390Z CC: stdlib_httpclient.nim
2020-01-05T05:20:48.7007730Z CC: nimblepkg/version.nim
2020-01-05T05:20:49.2049000Z CC: stdlib_osproc.nim
2020-01-05T05:20:49.4178576Z CC: stdlib_pegs.nim
2020-01-05T05:20:49.5930937Z CC: stdlib_terminal.nim
2020-01-05T05:20:49.8657556Z CC: nimblepkg/cli.nim
2020-01-05T05:20:50.2284834Z CC: nimblepkg/tools.nim
2020-01-05T05:20:50.4485120Z CC: nimblepkg/common.nim
2020-01-05T05:20:50.5706227Z CC: stdlib_parseopt.nim
2020-01-05T05:20:50.9056302Z CC: stdlib_parsecfg.nim
2020-01-05T05:20:51.2567562Z CC: nimblepkg/config.nim
2020-01-05T05:20:51.4928664Z CC: nimblepkg/options.nim
2020-01-05T05:20:52.2091351Z CC: nimblepkg/packageinfo.nim
2020-01-05T05:20:52.3949574Z CC: nimblepkg/nimscriptwrapper.nim
2020-01-05T05:20:52.7014025Z CC: nimblepkg/packageparser.nim
2020-01-05T05:20:53.1145532Z CC: nimblepkg/download.nim
2020-01-05T05:20:53.4864430Z CC: stdlib_browsers.nim
2020-01-05T05:20:53.5414574Z CC: nimblepkg/publish.nim
2020-01-05T05:20:53.7181516Z CC: nimblepkg/packageinstaller.nim
2020-01-05T05:20:53.8628000Z CC: nimblepkg/reversedeps.nim
2020-01-05T05:20:53.9127615Z CC: nimblepkg/nimscriptexecutor.nim
2020-01-05T05:20:54.0807732Z CC: nimblepkg/init.nim
2020-01-05T05:20:54.2017253Z CC: nimble.nim
2020-01-05T05:20:55.8495508Z Hint:  [Link]
2020-01-05T05:20:55.9854328Z Hint: operation successful (112812 lines compiled; 17.742 sec total; 137.66MiB peakmem; Release Build) [SuccessX]
2020-01-05T05:20:56.0073763Z nim c -r testament/testament cat nimble-packages
2020-01-05T05:20:56.0252254Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:20:56.0252379Z Hint: used config file 'testament\testament.nim.cfg' [Conf]
2020-01-05T05:20:56.0252485Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:20:56.0904936Z Hint: system [Processing]
2020-01-05T05:20:56.3068012Z Hint: widestrs [Processing]
2020-01-05T05:20:56.3151628Z Hint: io [Processing]
2020-01-05T05:20:56.3279837Z Hint: testament [Processing]
2020-01-05T05:20:56.3306926Z Hint: strutils [Processing]
2020-01-05T05:20:56.3312960Z Hint: parseutils [Processing]
2020-01-05T05:20:56.3442701Z Hint: math [Processing]
2020-01-05T05:20:56.3454905Z Hint: bitops [Processing]
2020-01-05T05:20:56.3468394Z Hint: macros [Processing]
2020-01-05T05:20:56.3931478Z Hint: algorithm [Processing]
2020-01-05T05:20:56.3981153Z Hint: unicode [Processing]
2020-01-05T05:20:56.7338592Z Hint: pegs [Processing]
2020-01-05T05:20:56.8597191Z Hint: os [Processing]
2020-01-05T05:20:56.8611359Z Hint: pathnorm [Processing]
2020-01-05T05:20:56.8616413Z Hint: osseps [Processing]
2020-01-05T05:20:56.8662722Z Hint: winlean [Processing]
2020-01-05T05:20:56.8668808Z Hint: dynlib [Processing]
2020-01-05T05:20:56.8776954Z Hint: times [Processing]
2020-01-05T05:20:56.8788796Z Hint: options [Processing]
2020-01-05T05:20:56.8795337Z Hint: typetraits [Processing]
2020-01-05T05:20:56.8838486Z Hint: time_t [Processing]
2020-01-05T05:20:57.0017868Z Hint: osproc [Processing]
2020-01-05T05:20:57.0031338Z Hint: strtabs [Processing]
2020-01-05T05:20:57.0037153Z Hint: hashes [Processing]
2020-01-05T05:20:57.0185157Z Hint: streams [Processing]
2020-01-05T05:20:57.0333617Z Hint: cpuinfo [Processing]
2020-01-05T05:20:57.0505687Z Hint: json [Processing]
2020-01-05T05:20:57.0537820Z Hint: tables [Processing]
2020-01-05T05:20:57.0727128Z Hint: lexbase [Processing]
2020-01-05T05:20:57.0814541Z Hint: parsejson [Processing]
2020-01-05T05:20:57.1605657Z Hint: backend [Processing]
2020-01-05T05:20:57.1666023Z Hint: parseopt [Processing]
2020-01-05T05:20:57.1738216Z Hint: specs [Processing]
2020-01-05T05:20:57.1754601Z Hint: sequtils [Processing]
2020-01-05T05:20:57.1831347Z Hint: parsecfg [Processing]
2020-01-05T05:20:57.2518968Z Hint: htmlgen [Processing]
2020-01-05T05:20:57.2538669Z Hint: testamenthtml [Processing]
2020-01-05T05:20:57.2818356Z Hint: browsers [Processing]
2020-01-05T05:20:57.2830607Z Hint: terminal [Processing]
2020-01-05T05:20:57.2840342Z Hint: strformat [Processing]
2020-01-05T05:20:57.2936027Z Hint: colors [Processing]
2020-01-05T05:20:57.3203470Z Hint: md5 [Processing]
2020-01-05T05:20:57.3262039Z Hint: azure [Processing]
2020-01-05T05:20:57.3274546Z Hint: base64 [Processing]
2020-01-05T05:20:57.3402035Z Hint: httpclient [Processing]
2020-01-05T05:20:57.3415138Z Hint: net [Processing]
2020-01-05T05:20:57.3420291Z Hint: nativesockets [Processing]
2020-01-05T05:20:57.3581174Z Hint: sets [Processing]
2020-01-05T05:20:57.3666183Z Hint: monotimes [Processing]
2020-01-05T05:20:57.3690180Z Hint: openssl [Processing]
2020-01-05T05:20:57.4287979Z Hint: uri [Processing]
2020-01-05T05:20:57.4401638Z Hint: mimetypes [Processing]
2020-01-05T05:20:57.4510739Z Hint: random [Processing]
2020-01-05T05:20:57.4566104Z Hint: httpcore [Processing]
2020-01-05T05:20:57.4845323Z Hint: asyncnet [Processing]
2020-01-05T05:20:57.4851842Z Hint: asyncdispatch [Processing]
2020-01-05T05:20:57.4879248Z Hint: heapqueue [Processing]
2020-01-05T05:20:57.4896788Z Hint: lists [Processing]
2020-01-05T05:20:57.4927772Z Hint: asyncstreams [Processing]
2020-01-05T05:20:57.4933466Z Hint: asyncfutures [Processing]
2020-01-05T05:20:57.4961644Z Hint: deques [Processing]
2020-01-05T05:20:57.5002221Z Hint: cstrutils [Processing]
2020-01-05T05:20:57.6922702Z Hint: asyncfile [Processing]
2020-01-05T05:20:57.8963716Z Hint: important_packages [Processing]
2020-01-05T05:20:58.2970976Z d:\a\1\s\testament\categories.nim(53, 6) Hint: 'icTests' is declared but not used [XDeclaredButNotUsed]
2020-01-05T05:20:58.4764599Z CC: stdlib_assertions.nim
2020-01-05T05:20:58.4792494Z CC: stdlib_dollars.nim
2020-01-05T05:20:58.5381835Z CC: stdlib_formatfloat.nim
2020-01-05T05:20:58.5669298Z CC: stdlib_widestrs.nim
2020-01-05T05:20:58.6026792Z CC: stdlib_io.nim
2020-01-05T05:20:58.6533827Z CC: stdlib_system.nim
2020-01-05T05:20:58.7505090Z CC: stdlib_parseutils.nim
2020-01-05T05:20:58.8419068Z CC: stdlib_math.nim
2020-01-05T05:20:58.9010278Z CC: stdlib_algorithm.nim
2020-01-05T05:20:58.9998895Z CC: stdlib_unicode.nim
2020-01-05T05:20:59.1469686Z CC: stdlib_strutils.nim
2020-01-05T05:20:59.4402020Z CC: stdlib_pegs.nim
2020-01-05T05:20:59.6761961Z CC: stdlib_pathnorm.nim
2020-01-05T05:20:59.7726046Z CC: stdlib_dynlib.nim
2020-01-05T05:21:00.1610707Z CC: stdlib_winlean.nim
2020-01-05T05:21:00.1900645Z CC: stdlib_options.nim
2020-01-05T05:21:00.2564653Z CC: stdlib_times.nim
2020-01-05T05:21:00.5276123Z CC: stdlib_os.nim
2020-01-05T05:21:00.6047337Z CC: stdlib_hashes.nim
2020-01-05T05:21:00.6737017Z CC: stdlib_streams.nim
2020-01-05T05:21:00.7881782Z CC: stdlib_cpuinfo.nim
2020-01-05T05:21:00.8166744Z CC: stdlib_osproc.nim
2020-01-05T05:21:00.8449310Z CC: stdlib_tables.nim
2020-01-05T05:21:00.9997187Z CC: stdlib_lexbase.nim
2020-01-05T05:21:01.0292903Z CC: stdlib_parsejson.nim
2020-01-05T05:21:01.1008508Z CC: stdlib_json.nim
2020-01-05T05:21:01.1944889Z CC: backend.nim
2020-01-05T05:21:01.2666958Z CC: stdlib_parseopt.nim
2020-01-05T05:21:01.2999350Z CC: stdlib_sequtils.nim
2020-01-05T05:21:01.3681231Z CC: stdlib_parsecfg.nim
2020-01-05T05:21:01.4193561Z CC: specs.nim
2020-01-05T05:21:01.5568983Z CC: testamenthtml.nim
2020-01-05T05:21:01.6010751Z CC: htmlgen.nim
2020-01-05T05:21:01.6469318Z CC: stdlib_browsers.nim
2020-01-05T05:21:01.7090550Z CC: stdlib_terminal.nim
2020-01-05T05:21:01.7353188Z CC: stdlib_md5.nim
2020-01-05T05:21:01.8166687Z CC: stdlib_base64.nim
2020-01-05T05:21:01.8508616Z CC: stdlib_nativesockets.nim
2020-01-05T05:21:01.9087267Z CC: stdlib_sets.nim
2020-01-05T05:21:01.9700158Z CC: stdlib_monotimes.nim
2020-01-05T05:21:02.0338254Z CC: stdlib_openssl.nim
2020-01-05T05:21:02.1125872Z CC: stdlib_net.nim
2020-01-05T05:21:02.2952235Z CC: stdlib_uri.nim
2020-01-05T05:21:02.4185037Z CC: stdlib_random.nim
2020-01-05T05:21:02.4605397Z CC: stdlib_httpcore.nim
2020-01-05T05:21:02.5737761Z CC: stdlib_heapqueue.nim
2020-01-05T05:21:02.6348336Z CC: stdlib_deques.nim
2020-01-05T05:21:02.6969990Z CC: stdlib_asyncfutures.nim
2020-01-05T05:21:02.7377729Z CC: stdlib_asyncdispatch.nim
2020-01-05T05:21:02.7570513Z CC: stdlib_httpclient.nim
2020-01-05T05:21:02.9845281Z CC: azure.nim
2020-01-05T05:21:03.0989560Z CC: important_packages.nim
2020-01-05T05:21:03.1243562Z CC: testament.nim
2020-01-05T05:21:03.8310808Z Hint:  [Link]
2020-01-05T05:21:04.0043697Z Hint: operation successful (110036 lines compiled; 7.899 sec total; 136.352MiB peakmem; Debug Build) [SuccessX]
2020-01-05T05:21:04.0044101Z Hint: d:\a\1\s\testament\testament.exe cat nimble-packages [Exec]
2020-01-05T05:21:04.7368420Z Downloading Official package list
2020-01-05T05:21:05.3951688Z     Success Package list downloaded.
2020-01-05T05:28:08.1178201Z PASS: https://github.com/iffy/nim-argparse C                       ( 9.51608157 secs)
2020-01-05T05:28:08.1179733Z PASS: https://github.com/mratsim/Arraymancer C                     (76.84544086 secs)
2020-01-05T05:28:08.1180172Z PASS: https://github.com/krux02/ast-pattern-matching C             ( 3.27847791 secs)
2020-01-05T05:28:08.1180460Z PASS: https://github.com/tulayang/asyncmysql C                     (12.85790277 secs)
2020-01-05T05:28:08.1180782Z PASS: https://github.com/def-/bigints C                            ( 5.58286858 secs)
2020-01-05T05:28:08.1181003Z PASS: https://github.com/bluenote10/nim-heap C                     ( 5.20305800 secs)
2020-01-05T05:28:08.1181171Z PASS: https://github.com/status-im/nim-blscurve C                  (40.63330054 secs)
2020-01-05T05:28:08.1181391Z PASS: https://github.com/status-im/nim-bncurve C                   (147.91730046 secs)
2020-01-05T05:28:08.1181573Z PASS: https://github.com/nim-lang/c2nim C                          ( 3.75926661 secs)
2020-01-05T05:28:08.1181795Z PASS: https://github.com/citycide/cascade C                        ( 5.35157824 secs)
2020-01-05T05:28:08.1182001Z PASS: https://github.com/treeform/chroma C                         ( 6.27971625 secs)
2020-01-05T05:28:08.1182171Z PASS: https://github.com/status-im/nim-chronicles C                (21.29965687 secs)
2020-01-05T05:28:08.1182375Z FAIL: https://github.com/status-im/nim-chronos C
2020-01-05T05:28:08.1182795Z Test "https://github.com/status-im/nim-chronos" in category "nimble-packages"
2020-01-05T05:28:08.1183006Z Failure: reBuildFailed
2020-01-05T05:28:08.1183149Z package test failed
2020-01-05T05:28:08.1183336Z $ nimble test
2020-01-05T05:28:08.1183486Z   Executing task test in d:\a\1\s\pkgstemp\chronos\chronos.nimble
2020-01-05T05:28:08.1183662Z 
2020-01-05T05:28:08.1183807Z nim c -r -d:useSysAssert -d:useGcAssert tests/testall
2020-01-05T05:28:08.1184010Z Hint: used config file 'd:\a\1\s\config\nim.cfg' [Conf]
2020-01-05T05:28:08.1184364Z Hint: used config file 'd:\a\1\s\config\config.nims' [Conf]
2020-01-05T05:28:08.1184766Z Hint: used config file 'd:\a\1\s\pkgstemp\chronos\tests\config.nims' [Conf]
2020-01-05T05:28:08.1184991Z Hint: system [Processing]
2020-01-05T05:28:08.1185191Z Hint: widestrs [Processing]
2020-01-05T05:28:08.1185331Z Hint: io [Processing]
2020-01-05T05:28:08.1185521Z Hint: testall [Processing]
2020-01-05T05:28:08.1185745Z Hint: testmacro [Processing]
2020-01-05T05:28:08.1185892Z Hint: unittest [Processing]
2020-01-05T05:28:08.1186078Z Hint: macros [Processing]
2020-01-05T05:28:08.1186639Z Hint: strutils [Processing]
2020-01-05T05:28:08.1187325Z Hint: parseutils [Processing]
2020-01-05T05:28:08.1187669Z Hint: math [Processing]
2020-01-05T05:28:08.1188114Z Hint: bitops [Processing]
2020-01-05T05:28:08.1188333Z Hint: algorithm [Processing]
2020-01-05T05:28:08.1188544Z Hint: unicode [Processing]
2020-01-05T05:28:08.1188713Z Hint: streams [Processing]
2020-01-05T05:28:08.1188916Z Hint: times [Processing]
2020-01-05T05:28:08.1189112Z Hint: options [Processing]
2020-01-05T05:28:08.1189221Z Hint: typetraits [Processing]
2020-01-05T05:28:08.1189295Z Hint: winlean [Processing]
2020-01-05T05:28:08.1189449Z Hint: dynlib [Processing]
2020-01-05T05:28:08.1189664Z Hint: time_t [Processing]
2020-01-05T05:28:08.1189727Z Hint: sets [Processing]
2020-01-05T05:28:08.1190074Z Hint: hashes [Processing]
2020-01-05T05:28:08.1190556Z Hint: sequtils [Processing]
2020-01-05T05:28:08.1190678Z Hint: os [Processing]
2020-01-05T05:28:08.1190737Z Hint: pathnorm [Processing]
2020-01-05T05:28:08.1190866Z Hint: osseps [Processing]
2020-01-05T05:28:08.1190926Z Hint: terminal [Processing]
2020-01-05T05:28:08.1190983Z Hint: strformat [Processing]
2020-01-05T05:28:08.1191103Z Hint: colors [Processing]
2020-01-05T05:28:08.1191160Z Hint: chronos [Processing]
2020-01-05T05:28:08.1191291Z Hint: asyncloop [Processing]
2020-01-05T05:28:08.1192329Z Hint: tables [Processing]
2020-01-05T05:28:08.1192455Z Hint: heapqueue [Processing]
2020-01-05T05:28:08.1192517Z Hint: lists [Processing]
2020-01-05T05:28:08.1192625Z Hint: nativesockets [Processing]
2020-01-05T05:28:08.1192878Z Hint: net [Processing]
2020-01-05T05:28:08.1192989Z Hint: monotimes [Processing]
2020-01-05T05:28:08.1193049Z Hint: deques [Processing]
2020-01-05T05:28:08.1193157Z Hint: timer [Processing]
2020-01-05T05:28:08.1193218Z Hint: cstrutils [Processing]
2020-01-05T05:28:08.1193355Z Hint: srcloc [Processing]
2020-01-05T05:28:08.1193438Z d:\a\1\s\lib\system\inclrtl.nim(52, 10) Hint: 'since' is declared but not used [XDeclaredButNotUsed]
2020-01-05T05:28:08.1193718Z Hint: asyncsync [Processing]
2020-01-05T05:28:08.1193780Z Hint: handles [Processing]
2020-01-05T05:28:08.1193884Z Hint: transport [Processing]
2020-01-05T05:28:08.1193943Z Hint: datagram [Processing]
2020-01-05T05:28:08.1194242Z Hint: common [Processing]
2020-01-05T05:28:08.1194304Z Hint: stream [Processing]
2020-01-05T05:28:08.1194363Z Hint: ipnet [Processing]
2020-01-05T05:28:08.1194468Z Hint: endians [Processing]
2020-01-05T05:28:08.1194816Z Hint: osnet [Processing]
2020-01-05T05:28:08.1195011Z Hint: asyncstream [Processing]
2020-01-05T05:28:08.1195070Z Hint: chunkstream [Processing]
2020-01-05T05:28:08.1195532Z Hint: testsync [Processing]
2020-01-05T05:28:08.1195586Z Hint: testsoon [Processing]
2020-01-05T05:28:08.1195682Z Hint: testtime [Processing]
2020-01-05T05:28:08.1195736Z Hint: testfut [Processing]
2020-01-05T05:28:08.1196938Z Hint: testsignal [Processing]
2020-01-05T05:28:08.1197007Z Hint: testaddress [Processing]
2020-01-05T05:28:08.1197116Z Hint: testdatagram [Processing]
2020-01-05T05:28:08.1197179Z Hint: teststream [Processing]
2020-01-05T05:28:08.1197285Z Hint: testserver [Processing]
2020-01-05T05:28:08.1197346Z Hint: testbugs [Processing]
2020-01-05T05:28:08.1197451Z Hint: testnet [Processing]
2020-01-05T05:28:08.1197512Z Hint: testasyncstream [Processing]
2020-01-05T05:28:08.1197623Z Hint: tlsstream [Processing]
2020-01-05T05:28:08.1197686Z Hint: bearssl [Processing]
2020-01-05T05:28:08.1197744Z Hint: decls [Processing]
2020-01-05T05:28:08.1197853Z Hint: errors [Processing]
2020-01-05T05:28:08.1197913Z Hint: cacert [Processing]
2020-01-05T05:28:08.1198020Z CC: ccopy
2020-01-05T05:28:08.1198073Z CC: dec16be
2020-01-05T05:28:08.1198176Z CC: dec16le
2020-01-05T05:28:08.1198229Z CC: dec32be
2020-01-05T05:28:08.1198327Z CC: dec32le
2020-01-05T05:28:08.1198399Z CC: dec64be
2020-01-05T05:28:08.1198499Z CC: dec64le
2020-01-05T05:28:08.1198553Z CC: enc16be
2020-01-05T05:28:08.1198654Z CC: enc16le
2020-01-05T05:28:08.1198709Z CC: enc32be
2020-01-05T05:28:08.1198761Z CC: enc32le
2020-01-05T05:28:08.1198860Z CC: enc64be
2020-01-05T05:28:08.1198914Z CC: enc64le
2020-01-05T05:28:08.1199028Z CC: pemdec
2020-01-05T05:28:08.1199081Z CC: pemenc
2020-01-05T05:28:08.1199181Z CC: ecdsa_atr
2020-01-05T05:28:08.1199239Z CC: ecdsa_default_sign_asn1
2020-01-05T05:28:08.1199351Z CC: ecdsa_default_sign_raw
2020-01-05T05:28:08.1199412Z CC: ecdsa_default_vrfy_asn1
2020-01-05T05:28:08.1199517Z CC: ecdsa_default_vrfy_raw
2020-01-05T05:28:08.1199577Z CC: ecdsa_i15_bits
2020-01-05T05:28:08.1199713Z CC: ecdsa_i15_sign_asn1
2020-01-05T05:28:08.1199776Z CC: ecdsa_i15_sign_raw
2020-01-05T05:28:08.1199835Z CC: ecdsa_i15_vrfy_asn1
2020-01-05T05:28:08.1200925Z CC: ecdsa_i15_vrfy_raw
2020-01-05T05:28:08.1200978Z CC: ecdsa_i31_bits
2020-01-05T05:28:08.1201076Z CC: ecdsa_i31_sign_asn1
2020-01-05T05:28:08.1201273Z CC: ecdsa_i31_sign_raw
2020-01-05T05:28:08.1201378Z CC: ecdsa_i31_vrfy_asn1
2020-01-05T05:28:08.1201431Z CC: ecdsa_i31_vrfy_raw
2020-01-05T05:28:08.1201529Z CC: ecdsa_rta
2020-01-05T05:28:08.1201582Z CC: ec_all_m15
2020-01-05T05:28:08.1201674Z CC: ec_all_m31
2020-01-05T05:28:08.1201726Z CC: ec_c25519_i15
2020-01-05T05:28:08.1201821Z CC: ec_c25519_i31
2020-01-05T05:28:08.1201875Z CC: ec_c25519_m15
2020-01-05T05:28:08.1201965Z CC: ec_c25519_m31
2020-01-05T05:28:08.1202018Z CC: ec_c25519_m62
2020-01-05T05:28:08.1202068Z CC: ec_c25519_m64
2020-01-05T05:28:08.1202163Z CC: ec_curve25519
2020-01-05T05:28:08.1202214Z CC: ec_default
2020-01-05T05:28:08.1202309Z CC: ec_keygen
2020-01-05T05:28:08.1202359Z CC: ec_p256_m15
2020-01-05T05:28:08.1202455Z CC: ec_p256_m31
2020-01-05T05:28:08.1202506Z CC: ec_p256_m62
2020-01-05T05:28:08.1202596Z CC: ec_p256_m64
2020-01-05T05:28:08.1202646Z CC: ec_prime_i15
2020-01-05T05:28:08.1202744Z CC: ec_prime_i31
2020-01-05T05:28:08.1202811Z CC: ec_pubkey
2020-01-05T05:28:08.1202903Z CC: ec_secp256r1
2020-01-05T05:28:08.1202956Z CC: ec_secp384r1
2020-01-05T05:28:08.1203006Z CC: ec_secp521r1
2020-01-05T05:28:08.1203102Z CC: dig_oid
2020-01-05T05:28:08.1203151Z CC: dig_size
2020-01-05T05:28:08.1203245Z CC: ghash_ctmul
2020-01-05T05:28:08.1203296Z CC: ghash_ctmul32
2020-01-05T05:28:08.1203412Z CC: ghash_ctmul64
2020-01-05T05:28:08.1203464Z CC: ghash_pclmul
2020-01-05T05:28:08.1203556Z CC: ghash_pwr8
2020-01-05T05:28:08.1203607Z CC: md5
2020-01-05T05:28:08.1203694Z CC: md5sha1
2020-01-05T05:28:08.1203744Z CC: mgf1
2020-01-05T05:28:08.1203834Z CC: multihash
2020-01-05T05:28:08.1203885Z CC: sha1
2020-01-05T05:28:08.1203932Z CC: sha2big
2020-01-05T05:28:08.1204025Z CC: sha2small
2020-01-05T05:28:08.1204075Z CC: i15_add
2020-01-05T05:28:08.1204373Z CC: i15_bitlen
2020-01-05T05:28:08.1204427Z CC: i15_decmod
2020-01-05T05:28:08.1204523Z CC: i15_decode
2020-01-05T05:28:08.1204576Z CC: i15_decred
2020-01-05T05:28:08.1204762Z CC: i15_encode
2020-01-05T05:28:08.1204816Z CC: i15_fmont
2020-01-05T05:28:08.1204912Z CC: i15_iszero
2020-01-05T05:28:08.1204965Z CC: i15_moddiv
2020-01-05T05:28:08.1205060Z CC: i15_modpow
2020-01-05T05:28:08.1205113Z CC: i15_modpow2
2020-01-05T05:28:08.1205166Z CC: i15_montmul
2020-01-05T05:28:08.1205264Z CC: i15_mulacc
2020-01-05T05:28:08.1205316Z CC: i15_muladd
2020-01-05T05:28:08.1205412Z CC: i15_ninv15
2020-01-05T05:28:08.1205464Z CC: i15_reduce
2020-01-05T05:28:08.1205560Z CC: i15_rshift
2020-01-05T05:28:08.1205612Z CC: i15_sub
2020-01-05T05:28:08.1205705Z CC: i15_tmont
2020-01-05T05:28:08.1205757Z CC: i31_add
2020-01-05T05:28:08.1205850Z CC: i31_bitlen
2020-01-05T05:28:08.1205904Z CC: i31_decmod
2020-01-05T05:28:08.1205996Z CC: i31_decode
2020-01-05T05:28:08.1206049Z CC: i31_decred
2020-01-05T05:28:08.1206100Z CC: i31_encode
2020-01-05T05:28:08.1206270Z CC: i31_fmont
2020-01-05T05:28:08.1207104Z CC: i31_iszero
2020-01-05T05:28:08.1207218Z CC: i31_moddiv
2020-01-05T05:28:08.1207293Z CC: i31_modpow
2020-01-05T05:28:08.1207402Z CC: i31_modpow2
2020-01-05T05:28:08.1207459Z CC: i31_montmul
2020-01-05T05:28:08.1207561Z CC: i31_mulacc
2020-01-05T05:28:08.1207618Z CC: i31_muladd
2020-01-05T05:28:08.1207956Z CC: i31_ninv31
2020-01-05T05:28:08.1208023Z CC: i31_reduce
2020-01-05T05:28:08.1208126Z CC: i31_rshift
2020-01-05T05:28:08.1208183Z CC: i31_sub
2020-01-05T05:28:08.1208236Z CC: i31_tmont
2020-01-05T05:28:08.1208341Z CC: i32_add
2020-01-05T05:28:08.1208394Z CC: i32_bitlen
2020-01-05T05:28:08.1208498Z CC: i32_decmod
2020-01-05T05:28:08.1208555Z CC: i32_decode
2020-01-05T05:28:08.1208656Z CC: i32_decred
2020-01-05T05:28:08.1208712Z CC: i32_div32
2020-01-05T05:28:08.1208812Z CC: i32_encode
2020-01-05T05:28:08.1208869Z CC: i32_fmont
2020-01-05T05:28:08.1208968Z CC: i32_iszero
2020-01-05T05:28:08.1209025Z CC: i32_modpow
2020-01-05T05:28:08.1209125Z CC: i32_montmul
2020-01-05T05:28:08.1209183Z CC: i32_mulacc
2020-01-05T05:28:08.1209239Z CC: i32_muladd
2020-01-05T05:28:08.1209466Z CC: i32_ninv32
2020-01-05T05:28:08.1209525Z CC: i32_reduce
2020-01-05T05:28:08.1209630Z CC: i32_sub
2020-01-05T05:28:08.1209684Z CC: i32_tmont
2020-01-05T05:28:08.1209789Z CC: i62_modpow2
2020-01-05T05:28:08.1209846Z CC: hkdf
2020-01-05T05:28:08.1209945Z CC: shake
2020-01-05T05:28:08.1209999Z CC: hmac
2020-01-05T05:28:08.1210261Z CC: hmac_ct
2020-01-05T05:28:08.1210315Z CC: aesctr_drbg
2020-01-05T05:28:08.1210409Z CC: hmac_drbg
2020-01-05T05:28:08.1210624Z CC: sysrng
2020-01-05T05:28:08.1210674Z CC: rsa_default_keygen
2020-01-05T05:28:08.1210771Z CC: rsa_default_modulus
2020-01-05T05:28:08.1210826Z CC: rsa_default_oaep_decrypt
2020-01-05T05:28:08.1210925Z CC: rsa_default_oaep_encrypt
2020-01-05T05:28:08.1210980Z CC: rsa_default_pkcs1_sign
2020-01-05T05:28:08.1211081Z CC: rsa_default_pkcs1_vrfy
2020-01-05T05:28:08.1211135Z CC: rsa_default_priv
2020-01-05T05:28:08.1211232Z CC: rsa_default_privexp
2020-01-05T05:28:08.1211285Z CC: rsa_default_pss_sign
2020-01-05T05:28:08.1211390Z CC: rsa_default_pss_vrfy
2020-01-05T05:28:08.1211451Z CC: rsa_default_pub
2020-01-05T05:28:08.1211546Z CC: rsa_default_pubexp
2020-01-05T05:28:08.1211601Z CC: rsa_i15_keygen
2020-01-05T05:28:08.1211694Z CC: rsa_i15_modulus
2020-01-05T05:28:08.1211748Z CC: rsa_i15_oaep_decrypt
2020-01-05T05:28:08.1211801Z CC: rsa_i15_oaep_encrypt
2020-01-05T05:28:08.1211898Z CC: rsa_i15_pkcs1_sign
2020-01-05T05:28:08.1211951Z CC: rsa_i15_pkcs1_vrfy
2020-01-05T05:28:08.1212045Z CC: rsa_i15_priv
2020-01-05T05:28:08.1212098Z CC: rsa_i15_privexp
2020-01-05T05:28:08.1212196Z CC: rsa_i15_pss_sign
2020-01-05T05:28:08.1212248Z CC: rsa_i15_pss_vrfy
2020-01-05T05:28:08.1212344Z CC: rsa_i15_pub
2020-01-05T05:28:08.1212396Z CC: rsa_i15_pubexp
2020-01-05T05:28:08.1212490Z CC: rsa_i31_keygen
2020-01-05T05:28:08.1212544Z CC: rsa_i31_keygen_inner
2020-01-05T05:28:08.1212640Z CC: rsa_i31_modulus
2020-01-05T05:28:08.1212695Z CC: rsa_i31_oaep_decrypt
2020-01-05T05:28:08.1212790Z CC: rsa_i31_oaep_encrypt
2020-01-05T05:28:08.1212926Z CC: rsa_i31_pkcs1_sign
2020-01-05T05:28:08.1212980Z CC: rsa_i31_pkcs1_vrfy
2020-01-05T05:28:08.1213079Z CC: rsa_i31_priv
2020-01-05T05:28:08.1213131Z CC: rsa_i31_privexp
2020-01-05T05:28:08.1213227Z CC: rsa_i31_pss_sign
2020-01-05T05:28:08.1213281Z CC: rsa_i31_pss_vrfy
2020-01-05T05:28:08.1213380Z CC: rsa_i31_pub
2020-01-05T05:28:08.1213432Z CC: rsa_i31_pubexp
2020-01-05T05:28:08.1213529Z CC: rsa_i32_oaep_decrypt
2020-01-05T05:28:08.1213584Z CC: rsa_i32_oaep_encrypt
2020-01-05T05:28:08.1213681Z CC: rsa_i32_pkcs1_sign
2020-01-05T05:28:08.1213735Z CC: rsa_i32_pkcs1_vrfy
2020-01-05T05:28:08.1213832Z CC: rsa_i32_priv
2020-01-05T05:28:08.1213885Z CC: rsa_i32_pss_sign
2020-01-05T05:28:08.1213979Z CC: rsa_i32_pss_vrfy
2020-01-05T05:28:08.1214033Z CC: rsa_i32_pub
2020-01-05T05:28:08.1214085Z CC: rsa_i62_keygen
2020-01-05T05:28:08.1214181Z CC: rsa_i62_oaep_decrypt
2020-01-05T05:28:08.1214234Z CC: rsa_i62_oaep_encrypt
2020-01-05T05:28:08.1214333Z CC: rsa_i62_pkcs1_sign
2020-01-05T05:28:08.1214400Z CC: rsa_i62_pkcs1_vrfy
2020-01-05T05:28:08.1214498Z CC: rsa_i62_priv
2020-01-05T05:28:08.1214550Z CC: rsa_i62_pss_sign
2020-01-05T05:28:08.1214646Z CC: rsa_i62_pss_vrfy
2020-01-05T05:28:08.1214699Z CC: rsa_i62_pub
2020-01-05T05:28:08.1214791Z CC: rsa_oaep_pad
2020-01-05T05:28:08.1214844Z CC: rsa_oaep_unpad
2020-01-05T05:28:08.1214940Z CC: rsa_pkcs1_sig_pad
2020-01-05T05:28:08.1214995Z CC: rsa_pkcs1_sig_unpad
2020-01-05T05:28:08.1215089Z CC: rsa_pss_sig_pad
2020-01-05T05:28:08.1215143Z CC: rsa_pss_sig_unpad
2020-01-05T05:28:08.1215195Z CC: rsa_ssl_decrypt
2020-01-05T05:28:08.1215289Z CC: prf
2020-01-05T05:28:08.1215338Z CC: prf_md5sha1
2020-01-05T05:28:08.1215431Z CC: prf_sha256
2020-01-05T05:28:08.1215483Z CC: prf_sha384
2020-01-05T05:28:08.1215577Z CC: ssl_ccert_single_ec
2020-01-05T05:28:08.1215631Z CC: ssl_ccert_single_rsa
2020-01-05T05:28:08.1215724Z CC: ssl_client
2020-01-05T05:28:08.1215777Z CC: ssl_client_default_rsapub
2020-01-05T05:28:08.1215875Z CC: ssl_client_full
2020-01-05T05:28:08.1216006Z CC: ssl_engine
2020-01-05T05:28:08.1216104Z CC: ssl_engine_default_aescbc
2020-01-05T05:28:08.1216161Z CC: ssl_engine_default_aesccm
2020-01-05T05:28:08.1216389Z CC: ssl_engine_default_aesgcm
2020-01-05T05:28:08.1216493Z CC: ssl_engine_default_chapol
2020-01-05T05:28:08.1216709Z CC: ssl_engine_default_descbc
2020-01-05T05:28:08.1217011Z CC: ssl_engine_default_ec
2020-01-05T05:28:08.1217073Z CC: ssl_engine_default_ecdsa
2020-01-05T05:28:08.1217181Z CC: ssl_engine_default_rsavrfy
2020-01-05T05:28:08.1217241Z CC: ssl_hashes
2020-01-05T05:28:08.1217346Z CC: ssl_hs_client
2020-01-05T05:28:08.1217405Z CC: ssl_hs_server
2020-01-05T05:28:08.1217509Z CC: ssl_io
2020-01-05T05:28:08.1217564Z CC: ssl_keyexport
2020-01-05T05:28:08.1217665Z CC: ssl_lru
2020-01-05T05:28:08.1217721Z CC: ssl_rec_cbc
2020-01-05T05:28:08.1217822Z CC: ssl_rec_ccm
2020-01-05T05:28:08.1217880Z CC: ssl_rec_chapol
2020-01-05T05:28:08.1217938Z CC: ssl_rec_gcm
2020-01-05T05:28:08.1218044Z CC: ssl_scert_single_ec
2020-01-05T05:28:08.1218122Z CC: ssl_scert_single_rsa
2020-01-05T05:28:08.1218230Z CC: ssl_server
2020-01-05T05:28:08.1218288Z CC: ssl_server_full_ec
2020-01-05T05:28:08.1218393Z CC: ssl_server_full_rsa
2020-01-05T05:28:08.1218453Z CC: ssl_server_mine2c
2020-01-05T05:28:08.1218560Z CC: ssl_server_mine2g
2020-01-05T05:28:08.1218619Z CC: ssl_server_minf2c
2020-01-05T05:28:08.1218722Z CC: ssl_server_minf2g
2020-01-05T05:28:08.1218781Z CC: ssl_server_minr2g
2020-01-05T05:28:08.1218882Z CC: ssl_server_minu2g
2020-01-05T05:28:08.1218940Z CC: ssl_server_minv2g
2020-01-05T05:28:08.1219039Z CC: aes_big_cbcdec
2020-01-05T05:28:08.1219097Z CC: aes_big_cbcenc
2020-01-05T05:28:08.1219154Z CC: aes_big_ctr
2020-01-05T05:28:08.1219257Z CC: aes_big_ctrcbc
2020-01-05T05:28:08.1219313Z CC: aes_big_dec
2020-01-05T05:28:08.1219414Z CC: aes_big_enc
2020-01-05T05:28:08.1219470Z CC: aes_common
2020-01-05T05:28:08.1219572Z CC: aes_ct
2020-01-05T05:28:08.1219626Z CC: aes_ct64
2020-01-05T05:28:08.1219731Z CC: aes_ct64_cbcdec
2020-01-05T05:28:08.1219887Z CC: aes_ct64_cbcenc
2020-01-05T05:28:08.1219994Z CC: aes_ct64_ctr
2020-01-05T05:28:08.1220053Z CC: aes_ct64_ctrcbc
2020-01-05T05:28:08.1220324Z CC: aes_ct64_dec
2020-01-05T05:28:08.1220380Z CC: aes_ct64_enc
2020-01-05T05:28:08.1220433Z CC: aes_ct_cbcdec
2020-01-05T05:28:08.1220532Z CC: aes_ct_cbcenc
2020-01-05T05:28:08.1220584Z CC: aes_ct_ctr
2020-01-05T05:28:08.1220680Z CC: aes_ct_ctrcbc
2020-01-05T05:28:08.1220734Z CC: aes_ct_dec
2020-01-05T05:28:08.1220829Z CC: aes_ct_enc
2020-01-05T05:28:08.1220881Z CC: aes_pwr8
2020-01-05T05:28:08.1220979Z CC: aes_pwr8_cbcdec
2020-01-05T05:28:08.1221033Z CC: aes_pwr8_cbcenc
2020-01-05T05:28:08.1221131Z CC: aes_pwr8_ctr
2020-01-05T05:28:08.1221184Z CC: aes_pwr8_ctrcbc
2020-01-05T05:28:08.1221280Z CC: aes_small_cbcdec
2020-01-05T05:28:08.1221337Z CC: aes_small_cbcenc
2020-01-05T05:28:08.1221431Z CC: aes_small_ctr
2020-01-05T05:28:08.1221485Z CC: aes_small_ctrcbc
2020-01-05T05:28:08.1221538Z CC: aes_small_dec
2020-01-05T05:28:08.1221646Z CC: aes_small_enc
2020-01-05T05:28:08.1221699Z CC: aes_x86ni
2020-01-05T05:28:08.1221795Z CC: aes_x86ni_cbcdec
2020-01-05T05:28:08.1221850Z CC: aes_x86ni_cbcenc
2020-01-05T05:28:08.1221948Z CC: aes_x86ni_ctr
2020-01-05T05:28:08.1222001Z CC: aes_x86ni_ctrcbc
2020-01-05T05:28:08.1222098Z CC: chacha20_ct
2020-01-05T05:28:08.1222150Z CC: chacha20_sse2
2020-01-05T05:28:08.1222244Z CC: des_ct
2020-01-05T05:28:08.1222295Z CC: des_ct_cbcdec
2020-01-05T05:28:08.1222393Z CC: des_ct_cbcenc
2020-01-05T05:28:08.1222446Z CC: des_support
2020-01-05T05:28:08.1222498Z CC: des_tab
2020-01-05T05:28:08.1222593Z CC: des_tab_cbcdec
2020-01-05T05:28:08.1222647Z CC: des_tab_cbcenc
2020-01-05T05:28:08.1222745Z CC: poly1305_ctmul
2020-01-05T05:28:08.1222824Z CC: poly1305_ctmul32
2020-01-05T05:28:08.1222931Z CC: poly1305_ctmulq
2020-01-05T05:28:08.1222986Z CC: poly1305_i15
2020-01-05T05:28:08.1223082Z CC: ccm
2020-01-05T05:28:08.1223131Z CC: eax
2020-01-05T05:28:08.1223224Z CC: gcm
2020-01-05T05:28:08.1223355Z CC: asn1enc
2020-01-05T05:28:08.1223453Z CC: encode_ec_pk8der
2020-01-05T05:28:08.1223507Z CC: encode_ec_rawder
2020-01-05T05:28:08.1223605Z CC: encode_rsa_pk8der
2020-01-05T05:28:08.1223660Z CC: encode_rsa_rawder
2020-01-05T05:28:08.1223714Z CC: skey_decoder
2020-01-05T05:28:08.1223809Z CC: x509_decoder
2020-01-05T05:28:08.1224210Z CC: x509_knownkey
2020-01-05T05:28:08.1224352Z CC: x509_minimal
2020-01-05T05:28:08.1224408Z CC: x509_minimal_full
2020-01-05T05:28:08.1224508Z CC: settings
2020-01-05T05:28:08.1224558Z CC: xmem
2020-01-05T05:28:08.1224653Z CC: vector
2020-01-05T05:28:08.1224704Z CC: names
2020-01-05T05:28:08.1224798Z CC: certs
2020-01-05T05:28:08.1224849Z CC: files
2020-01-05T05:28:08.1224939Z CC: stdlib_assertions.nim
2020-01-05T05:28:08.1224999Z CC: stdlib_dollars.nim
2020-01-05T05:28:08.1225054Z CC: stdlib_locks.nim
2020-01-05T05:28:08.1225155Z CC: stdlib_sharedlist.nim
2020-01-05T05:28:08.1225212Z CC: stdlib_widestrs.nim
2020-01-05T05:28:08.1225328Z CC: stdlib_io.nim
2020-01-05T05:28:08.1225384Z CC: stdlib_system.nim
2020-01-05T05:28:08.1225483Z CC: stdlib_parseutils.nim
2020-01-05T05:28:08.1225539Z CC: stdlib_math.nim
2020-01-05T05:28:08.1225636Z CC: stdlib_algorithm.nim
2020-01-05T05:28:08.1225691Z CC: stdlib_strutils.nim
2020-01-05T05:28:08.1225793Z CC: stdlib_streams.nim
2020-01-05T05:28:08.1225849Z CC: stdlib_dynlib.nim
2020-01-05T05:28:08.1225946Z CC: stdlib_winlean.nim
2020-01-05T05:28:08.1226003Z CC: stdlib_times.nim
2020-01-05T05:28:08.1226102Z CC: stdlib_hashes.nim
2020-01-05T05:28:08.1226158Z CC: stdlib_sets.nim
2020-01-05T05:28:08.1226384Z CC: stdlib_os.nim
2020-01-05T05:28:08.1226489Z CC: stdlib_terminal.nim
2020-01-05T05:28:08.1227777Z CC: stdlib_unittest.nim
2020-01-05T05:28:08.1228011Z CC: stdlib_tables.nim
2020-01-05T05:28:08.1228072Z CC: stdlib_heapqueue.nim
2020-01-05T05:28:08.1228178Z CC: stdlib_nativesockets.nim
2020-01-05T05:28:08.1228240Z CC: stdlib_monotimes.nim
2020-01-05T05:28:08.1228345Z CC: stdlib_net.nim
2020-01-05T05:28:08.1228549Z CC: stdlib_deques.nim
2020-01-05T05:28:08.1228658Z CC: ../chronos/timer.nim
2020-01-05T05:28:08.1228718Z CC: stdlib_cstrutils.nim
2020-01-05T05:28:08.1228823Z CC: ../chronos/srcloc.nim
2020-01-05T05:28:08.1228885Z CC: ../chronos/asyncloop.nim
2020-01-05T05:28:08.1228991Z CC: ../chronos/asyncsync.nim
2020-01-05T05:28:08.1229053Z CC: ../chronos/handles.nim
2020-01-05T05:28:08.1229115Z CC: ../chronos/transports/common.nim
2020-01-05T05:28:08.1229225Z CC: ../chronos/transports/datagram.nim
2020-01-05T05:28:08.1229288Z CC: ../chronos/transports/stream.nim
2020-01-05T05:28:08.1229398Z CC: ../chronos/transports/ipnet.nim
2020-01-05T05:28:08.1229460Z CC: ../chronos/transports/osnet.nim
2020-01-05T05:28:08.1229566Z CC: ../chronos/streams/asyncstream.nim
2020-01-05T05:28:08.1229631Z CC: ../chronos/streams/chunkstream.nim
2020-01-05T05:28:08.1229734Z CC: testmacro.nim
2020-01-05T05:28:08.1229792Z CC: testsync.nim
2020-01-05T05:28:08.1229895Z CC: testsoon.nim
2020-01-05T05:28:08.1229968Z CC: testtime.nim
2020-01-05T05:28:08.1230069Z CC: testfut.nim
2020-01-05T05:28:08.1230127Z CC: testsignal.nim
2020-01-05T05:28:08.1230229Z CC: testaddress.nim
2020-01-05T05:28:08.1230289Z CC: testdatagram.nim
2020-01-05T05:28:08.1230551Z CC: teststream.nim
2020-01-05T05:28:08.1230606Z CC: testserver.nim
2020-01-05T05:28:08.1230659Z CC: testbugs.nim
2020-01-05T05:28:08.1230755Z CC: testnet.nim
2020-01-05T05:28:08.1230820Z CC: C:/Users/VssAdministrator/.nimble/pkgs/bearssl-0.1.3/bearssl/decls.nim
2020-01-05T05:28:08.1230942Z CC: C:/Users/VssAdministrator/.nimble/pkgs/bearssl-0.1.3/bearssl/errors.nim
2020-01-05T05:28:08.1231009Z CC: ../chronos/streams/tlsstream.nim
2020-01-05T05:28:08.1231110Z CC: testasyncstream.nim
2020-01-05T05:28:08.1231165Z CC: testall.nim
2020-01-05T05:28:08.1231260Z Hint:  [Link]
2020-01-05T05:28:08.1231333Z Hint: operation successful (150591 lines compiled; 39.130 sec total; 328.324MiB peakmem; Debug Build) [SuccessX]
2020-01-05T05:28:08.1231459Z Hint: d:\a\1\s\pkgstemp\chronos\tests\testall.exe  [Exec]
2020-01-05T05:28:08.1231594Z 
2020-01-05T05:28:08.1231696Z [Suite] Macro transformations test suite
2020-01-05T05:28:08.1231735Z 
2020-01-05T05:28:08.1231790Z [Suite] Asynchronous sync primitives test suite
2020-01-05T05:28:08.1231872Z 
2020-01-05T05:28:08.1231923Z [Suite] callSoon() tests suite
2020-01-05T05:28:08.1231960Z 
2020-01-05T05:28:08.1232053Z [Suite] Asynchronous timers test suite
2020-01-05T05:28:08.1232090Z 
2020-01-05T05:28:08.1232183Z [Suite] Future[T] behavior test suite
2020-01-05T05:28:08.1232220Z 
2020-01-05T05:28:08.1232271Z [Suite] Signal handling test suite
2020-01-05T05:28:08.1232348Z 
2020-01-05T05:28:08.1232399Z [Suite] TransportAddress test suite
2020-01-05T05:28:08.1232435Z 
2020-01-05T05:28:08.1232529Z [Suite] Datagram Transport test suite
2020-01-05T05:28:08.1232596Z d:\a\1\s\pkgstemp\chronos\tests\testdatagram.nim(504) testdatagram
2020-01-05T05:28:08.1232716Z d:\a\1\s\pkgstemp\chronos\tests\testdatagram.nim(443) testConnReset
2020-01-05T05:28:08.1232810Z d:\a\1\s\pkgstemp\chronos\chronos\transports\datagram.nim(604) newDatagramTransport
2020-01-05T05:28:08.1232938Z d:\a\1\s\pkgstemp\chronos\chronos\transports\datagram.nim(326) newDatagramTransportCommon
2020-01-05T05:28:08.1233021Z d:\a\1\s\pkgstemp\chronos\chronos\transports\common.nim(482) raiseTransportOsError
2020-01-05T05:28:08.1233130Z [[reraised from:
2020-01-05T05:28:08.1233189Z d:\a\1\s\lib\pure\unittest.nim(642) testdatagram
2020-01-05T05:28:08.1233301Z d:\a\1\s\pkgstemp\chronos\chronos\asyncloop.nim(935) waitFor
2020-01-05T05:28:08.1233375Z d:\a\1\s\pkgstemp\chronos\chronos\asyncfutures2.nim(423) read
2020-01-05T05:28:08.1233493Z d:\a\1\s\pkgstemp\chronos\chronos\asyncfutures2.nim(407) internalCheckComplete
2020-01-05T05:28:08.1233557Z ]]
2020-01-05T05:28:08.1233628Z 
2020-01-05T05:28:08.1233701Z     Unhandled exception: (10013) An attempt was made to access a socket in a way forbidden by its access permissions.
2020-01-05T05:28:08.1233753Z 
2020-01-05T05:28:08.1233930Z Async traceback:
2020-01-05T05:28:08.1233996Z   d:\a\1\s\pkgstemp\chronos\tests\testdatagram.nim(504)          testdatagram
2020-01-05T05:28:08.1234119Z   d:\a\1\s\pkgstemp\chronos\tests\testdatagram.nim(443)          testConnReset
2020-01-05T05:28:08.1234198Z   d:\a\1\s\pkgstemp\chronos\chronos\transports\datagram.nim(604) newDatagramTransport
2020-01-05T05:28:08.1234323Z   d:\a\1\s\pkgstemp\chronos\chronos\transports\datagram.nim(326) newDatagramTransportCommon
2020-01-05T05:28:08.1234405Z   d:\a\1\s\pkgstemp\chronos\chronos\transports\common.nim(482)   raiseTransportOsError
2020-01-05T05:28:08.1234536Z Exception message: (10013) An attempt was made to access a socket in a way forbidden by its access permissions.
2020-01-05T05:28:08.1234587Z 
2020-01-05T05:28:08.1234679Z Exception type: [TransportOsError]
2020-01-05T05:28:08.1234739Z   [FAILED] Datagram connection reset test
2020-01-05T05:28:08.1234776Z 
2020-01-05T05:28:08.1234868Z [Suite] Stream Transport test suite
2020-01-05T05:28:08.1234919Z 
2020-01-05T05:28:08.1235010Z [Suite] Server's test suite
2020-01-05T05:28:08.1235047Z 
2020-01-05T05:28:08.1235098Z [Suite] Asynchronous issues test suite
2020-01-05T05:28:08.1235179Z 
2020-01-05T05:28:08.1235231Z [Suite] Network utilities test suite
2020-01-05T05:28:08.1235353Z 1.  {FF04DD57-04FC-11EA-8AD2-806E6F6E6963} [Software Loopback Interface 1]: flags = 385 mtu 4294967295 state StatusUp
2020-01-05T05:28:08.1235428Z     IfSoftwareLoopback 
2020-01-05T05:28:08.1235535Z     inet6 ::1/128 netmask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff brd ::1
2020-01-05T05:28:08.1235611Z     inet 127.0.0.1/8 netmask 255.0.0.0 brd 127.255.255.255
2020-01-05T05:28:08.1235739Z 9.  {ECE99D10-82AF-4093-ACED-6488F5162C33} [Hyper-V Virtual Ethernet Adapter]: flags = 448 mtu 1500 state StatusUp
2020-01-05T05:28:08.1235812Z     IfEthernetCsmacd 00:15:5D:2E:97:3E
2020-01-05T05:28:08.1235929Z     inet6 fe80::398d:6799:2f17:11ee/64 netmask ffff:ffff:ffff:ffff:: brd fe80::ffff:ffff:ffff:ffff
2020-01-05T05:28:08.1237417Z     inet 172.17.96.1/20 netmask 255.255.240.0 brd 172.17.111.255
2020-01-05T05:28:08.1237580Z 13. {FC088F7A-2E1B-41F0-808B-6C6258990F4E} [Microsoft Hyper-V Network Adapter]: flags = 453 mtu 1500 state StatusUp
2020-01-05T05:28:08.1237661Z     IfEthernetCsmacd 00:0D:3A:64:9A:F8
2020-01-05T05:28:08.1237790Z     inet6 fe80::641e:ab19:2b50:a487/64 netmask ffff:ffff:ffff:ffff:: brd fe80::ffff:ffff:ffff:ffff
2020-01-05T05:28:08.1237875Z     inet 10.1.0.4/16 netmask 255.255.0.0 brd 10.1.255.255
2020-01-05T05:28:08.1237988Z 8.8.8.8 via gateway 10.1.0.1 src 10.1.0.4
2020-01-05T05:28:08.1238029Z 
2020-01-05T05:28:08.1238084Z [Suite] AsyncStream test suite
2020-01-05T05:28:08.1238166Z 
2020-01-05T05:28:08.1238221Z [Suite] ChunkedStream test suite
2020-01-05T05:28:08.1238260Z 
2020-01-05T05:28:08.1238357Z [Suite] TLSStream test suite
2020-01-05T05:28:08.1238437Z Error: execution of an external program failed: 'd:\a\1\s\pkgstemp\chronos\tests\testall.exe '
2020-01-05T05:28:08.1238576Z stack trace: (most recent call last)
2020-01-05T05:28:08.1238653Z C:\Users\VSSADM~1\AppData\Local\Temp\nimblecache\nimscriptapi.nim(165, 16)
2020-01-05T05:28:08.1238776Z d:\a\1\s\pkgstemp\chronos\chronos_2392.nims(25, 8) testTask
2020-01-05T05:28:08.1238850Z d:\a\1\s\lib\system\nimscript.nim(252, 7) exec
2020-01-05T05:28:08.1238989Z d:\a\1\s\lib\system\nimscript.nim(252, 7) Error: unhandled exception: FAILED: nim c -r -d:useSysAssert -d:useGcAssert tests/testall [OSError]
2020-01-05T05:28:08.1239089Z        Tip: 1 messages have been suppressed, use --verbose to show them.
2020-01-05T05:28:08.1239225Z      Error: Exception raised during nimble script execution
2020-01-05T05:28:08.1239270Z 
2020-01-05T05:42:48.3613671Z PASS: https://github.com/c-blake/cligen.git C                      ( 3.59970045 secs)
2020-01-05T05:42:48.3614541Z PASS: https://github.com/samuelroy/coco C                          (40.21943784 secs)
2020-01-05T05:42:48.3614678Z PASS: https://github.com/PMunch/combparser C                       ( 5.28385043 secs)
2020-01-05T05:42:48.3615041Z PASS: https://github.com/LemonBoy/compactdict C                    ( 5.85917568 secs)
2020-01-05T05:42:48.3615314Z PASS: https://github.com/alehander42/comprehension C               ( 5.12235832 secs)
2020-01-05T05:42:48.3615386Z PASS: https://github.com/LemonBoy/criterion.nim C                  (30.63471937 secs)
2020-01-05T05:42:48.3615501Z PASS: https://github.com/FedericoCeratto/nim-dashing C             ( 3.69061804 secs)
2020-01-05T05:42:48.3615572Z PASS: https://github.com/docopt/docopt.nim C                       (31.96648812 secs)
2020-01-05T05:42:48.3615681Z PASS: https://github.com/jackmott/easygl C                         (25.08782792 secs)
2020-01-05T05:42:48.3615751Z PASS: https://github.com/mattaylor/elvis C                         ( 9.71760035 secs)
2020-01-05T05:42:48.3615862Z PASS: https://github.com/fragcolor-xyz/fragments C                 ( 4.48106480 secs)
2020-01-05T05:42:48.3615931Z PASS: https://github.com/alehander42/gara C                        ( 5.78747010 secs)
2020-01-05T05:42:48.3616067Z PASS: https://github.com/citycide/glob C                           (15.17424870 secs)
2020-01-05T05:42:48.3616137Z PASS: https://github.com/dvolk/gnuplot.nim C                       ( 2.37900209 secs)
2020-01-05T05:42:48.3616248Z PASS: https://github.com/brentp/hts-nim C                          ( 3.63218880 secs)
2020-01-05T05:42:48.3616317Z PASS: https://github.com/johnnovak/illwill C                       (26.44360042 secs)
2020-01-05T05:42:48.3616426Z PASS: https://github.com/AndreiRegiani/INim C                      ( 5.41465950 secs)
2020-01-05T05:42:48.3616494Z PASS: https://github.com/narimiran/itertools C                     ( 4.41663480 secs)
2020-01-05T05:42:48.3616603Z PASS: https://github.com/def-/iterutils C                          ( 5.87759614 secs)
2020-01-05T05:42:48.3616671Z PASS: https://github.com/LemonBoy/jstin C                          ( 6.17078805 secs)
2020-01-05T05:42:48.3616782Z PASS: https://github.com/pragmagic/karax C                         (16.43957520 secs)
2020-01-05T05:42:48.3616971Z PASS: https://github.com/numforge/loopfusion C                     ( 4.18020654 secs)
2020-01-05T05:42:48.3617085Z PASS: https://github.com/jangko/msgpack4nim C                      (76.37032723 secs)
2020-01-05T05:42:48.3617153Z PASS: https://github.com/fowlmouth/nake/ C                         ( 4.16059089 secs)
2020-01-05T05:42:48.3617263Z PASS: https://github.com/unicredit/neo C                           (20.78133941 secs)
2020-01-05T05:42:48.3617331Z PASS: https://github.com/icyphox/nicy C                            ( 3.68755484 secs)
2020-01-05T05:42:48.3617441Z PASS: https://github.com/trustable-code/NiGui C                    ( 4.73047924 secs)
2020-01-05T05:42:48.3617549Z PASS: https://github.com/cheatfate/nimcrypto C                     (28.52949214 secs)
2020-01-05T05:42:48.3617619Z PASS: https://github.com/bluenote10/NimData C                      (32.58482814 secs)
2020-01-05T05:42:48.3617745Z PASS: https://github.com/def-/nimes C                              (22.20628333 secs)
2020-01-05T05:42:48.3617815Z PASS: https://github.com/vegansk/nimfp C                           (23.23603559 secs)
2020-01-05T05:42:48.3617924Z PASS: https://github.com/Vladar4/nimgame2/ C                       (15.41730261 secs)
2020-01-05T05:42:48.3617994Z PASS: https://github.com/genotrance/nimgen C                       (40.23392534 secs)
2020-01-05T05:42:48.3618102Z PASS: https://github.com/loloiccl/nimly C                          (11.91878581 secs)
2020-01-05T05:42:48.3618648Z PASS: https://github.com/yglukhov/nimpy C                          ( 4.81091809 secs)
2020-01-05T05:45:45.4737207Z PASS: https://github.com/GULPF/nimquery C                          (10.61488056 secs)
2020-01-05T05:45:45.4738039Z PASS: https://github.com/yglukhov/nimsl C                          (22.69996715 secs)
2020-01-05T05:45:45.4738195Z PASS: https://github.com/bluenote10/NimSvg C                       ( 5.74850321 secs)
2020-01-05T05:45:45.4738853Z PASS: https://github.com/yglukhov/nimx C                           (142.48365569 secs)
2020-01-05T05:45:45.4739009Z PASS: https://github.com/moigagoo/norm C                           (16.09630132 secs)
2020-01-05T05:45:45.4739261Z PASS: https://github.com/zevv/npeg C                               (50.48674464 secs)
2020-01-05T05:45:45.4739414Z PASS: https://github.com/Araq/ormin C                              (12.24987411 secs)
2020-01-05T05:45:45.4739492Z PASS: https://github.com/NimParsers/parsetoml.git C                ( 6.42708969 secs)
2020-01-05T05:45:45.4739609Z PASS: https://github.com/andreaferretti/patty C                    (12.23007488 secs)
2020-01-05T05:45:45.4739685Z PASS: https://github.com/brentp/nim-plotly C                       (10.13092732 secs)
2020-01-05T05:45:45.4739802Z PASS: https://github.com/jiro4989/pnm C                            (10.85165811 secs)
2020-01-05T05:45:45.4739879Z PASS: https://github.com/guibar64/polypbren C                      (14.73940921 secs)
2020-01-05T05:45:45.4740018Z PASS: https://github.com/PMunch/protobuf-nim C                     (11.43407631 secs)
2020-01-05T05:45:45.4740780Z PASS: https://github.com/Nycto/RBTreeNim C                         ( 9.78852844 secs)
2020-01-05T05:45:45.4741424Z PASS: https://github.com/andreaferretti/react.nim C                ( 3.24008250 secs)
2020-01-05T05:45:45.4741685Z PASS: https://github.com/nitely/nim-regex C                        ( 8.24815989 secs)
2020-01-05T05:45:45.4742009Z PASS: https://github.com/arnetheduck/nim-result C                  ( 2.75638747 secs)
2020-01-05T05:45:45.4742225Z PASS: https://github.com/andreaferretti/rosencrantz C              ( 5.05113268 secs)
2020-01-05T05:45:45.4742378Z PASS: https://github.com/nim-lang/sdl1 C                           ( 2.58899832 secs)
2020-01-05T05:45:45.4742543Z PASS: https://github.com/Vladar4/sdl2_nim C                        ( 3.72210121 secs)
2020-01-05T05:45:45.4742620Z PASS: https://github.com/genotrance/snip C                         (15.74625492 secs)
2020-01-05T05:45:45.4742931Z PASS: https://github.com/status-im/nim-stint C                     ( 3.13303685 secs)
2020-01-05T05:45:45.4743011Z PASS: https://github.com/nitely/nim-strunicode C                   (16.54481077 secs)
2020-01-05T05:45:45.4744095Z PASS: https://github.com/ba0f3/telebot.nim C                       (17.76966047 secs)
2020-01-05T05:45:45.4744545Z PASS: https://github.com/euantorano/tempdir.nim C                  ( 2.26365924 secs)
2020-01-05T05:45:45.4744649Z PASS: https://[email protected]/krux02/tensordslnim.git C       ( 3.75945210 secs)
2020-01-05T05:45:45.4744764Z PASS: https://github.com/GULPF/tiny_sqlite C                       ( 4.98274899 secs)
2020-01-05T05:45:45.4744839Z PASS: https://github.com/nitely/nim-unicodedb C                    (29.15898275 secs)
2020-01-05T05:45:45.4744986Z PASS: https://github.com/nitely/nim-unicodeplus C                  (12.74999309 secs)
2020-01-05T05:45:45.4745062Z PASS: https://github.com/technicallyagd/unpack C                   ( 5.96571064 secs)
2020-01-05T05:45:45.4745201Z PASS: https://github.com/zevv/with C                               ( 5.78931737 secs)
2020-01-05T05:45:45.4745277Z PASS: https://github.com/treeform/ws C                             ( 5.91076398 secs)
2020-01-05T05:45:45.4745391Z PASS: https://github.com/flyx/NimYAML C                            ( 3.00000429 secs)
2020-01-05T05:45:45.4745465Z PASS: https://github.com/zero-functional/zero-functional C         (12.70665693 secs)
2020-01-05T05:45:45.4745567Z FAIL: PackageFileParsed C
2020-01-05T05:45:45.4745630Z Test "PackageFileParsed" in category "nimble-packages"
2020-01-05T05:45:45.4745727Z Failure: reBuildFailed
2020-01-05T05:45:45.4745761Z 
2020-01-05T05:45:45.6866984Z FAILURE! total: 82 passed: 81 skipped: 0 failed: 1
2020-01-05T05:45:45.6908933Z Error: execution of an external program failed: 'd:\a\1\s\testament\testament.exe cat nimble-packages'
2020-01-05T05:45:45.7156174Z FAILURE
2020-01-05T05:45:45.7226858Z 
2020-01-05T05:45:45.7319473Z ##[section]Finishing: Run CI

failing on windows?

Based on Nim appveyor tests, this package fails on Windows.

I don't have Windows so I cannot reproduce, but I have been told that running nim c tests/teststream.nim produces ..\chronos\transports\stream.nim(287, 27) Error: 'writeStreamLoop' is not GC-safe as it performs an indirect call here/

This is likely connected to nim-lang/Nim@c86b1fb and could probably be fixed on your end by some extra {.gcsafe.} at some places.

async proc always raises Exception according to raises pragma

So it looks like you still can't use async in combination with exception tracking.

Any proc with {.async, raises:[Defect].} will result in:
/home/deme/repos/nim-beacon-chain/vendor/nim-chronos/chronos/asyncmacro2.nim(63, 12) Error: can raise an unlisted exception: Exception

E.g. even:

proc test() {.async, raises: [Defect].} =
    discard

This however doesn't:

proc test(): Future[void] {.raises: [Defect].} =
    discard

Next to that, it also seems that future.complete() can also raise Exception.

nim's CI bottlenecked by https://github.com/status-im/nim-chronos

the slowest pipeline in nim CI is now Windows_amd64_pkg, and the slowest test in Windows_amd64_pkg is https://github.com/status-im/nim-chronos;
https://github.com/status-im/ tests combine to 477s = 8mn, or 25% of total in PackageFileParsed;

2020-03-01T03:42:14.7562549Z PASS: https://github.com/status-im/nim-chronos C                   (266.27445602
2020-03-01T03:42:14.7559002Z PASS: https://github.com/status-im/nim-bncurve C                   (141.18012929
2020-03-01T03:42:14.7558235Z PASS: https://github.com/status-im/nim-blscurve C                  (48.72544289
2020-03-01T03:42:14.7561947Z PASS: https://github.com/status-im/nim-chronicles C                (19.57475209
2020-03-01T03:51:16.0747805Z PASS: https://github.com/status-im/nim-stint C                     ( 3.05449986

how about introducing a switch to make some of these tests (in particular https://github.com/status-im/nim-chronos and https://github.com/status-im/nim-bncurve) faster and replacing important_packages.nim by:

pkg "chronos", "", true
=>
pkg "chronos", "nimble testCI", true # or testFast

with something like:

task testCI, "test for nim CI":
  nim c -r -d:chronosFastCI` test.nim

where defined(chronosFastCI) can be used in the slowest tests to reduce number of iterations or similar logic

Segfault on second `getMessage()` call after EAGAIN error

The handler (with getMessage()) where this happens is: https://github.com/status-im/nim-eth-p2p/blob/master/eth_p2p/discovery.nim#L243

I think segfault will occur because of following flow:

  1. Error (EAGAIN in this case) occurs on recvfrom in readDatagramLoop and setReadError is ran.
  2. A raise transp.getError() is done in getMessage or peekMessage in the transport function (see handler above).
  3. Next time the handler is ran for this DatagramTransport the segfault will occur at getMessage.

Why EAGAIN happens, I don't know.

So far, I can only reproduce this (not 100% of the time) by running: https://github.com/status-im/nim-eth-p2p/blob/master/tests/tshh_connect.nim

This was tested only on a Linux x86_64 machine.

Publish on nimble

In docu there is: nimble install asyncdispatch2 however the package is not available in Nimble (yet?)

RFC: inject `Future[T]` automatically

Currently, an async proc looks like so:

# Return int
proc a(): Future[int] {.async.}
# Return void
proc b(): Future[void] {.async.}
# Return void, take 2
proc c()] {.async.}

There is an asymmetry in void which is confusing because there are two ways to do void return, one of which implicitly injects the future and the other that doesn't.

The second confusion comes from the similarity of async and non-async implemenations - ie it's possible to create a function proc d(): Future[int] = ... without using the async transformation and still fit it within the sync/async framework.

As such, I'd suggest that the async macro be changed such that it always automatically injects the future:

proc a(): int {.async.} = ...
proc sameAsA(): Future[int] = ...

Regarding backwards compat, the macro can detect the future and give a deprecation warning for a transitionary period of time.

nim >1.0 introduction of `csize_t` breaks chronos

FYI from this experiment: nim-lang/Nim#13348

this is 1 of the only 2 packages that fails on nim CI (the other one is https://github.com/trustable-code/NiGui)

see https://dev.azure.com/nim-lang/255dfe86-e590-40bb-a8a2-3c0295ebdeb1/_apis/build/builds/2412/logs/82
https://dev.azure.com/nim-lang/255dfe86-e590-40bb-a8a2-3c0295ebdeb1/_apis/build/builds/2412/logs/78

2020-02-07T03:21:47.6984412Z �[32mPASS: �[36mhttps://github.com/treeform/chroma C                        �[34m ( 4.54586840 secs)�[0m
2020-02-07T03:21:47.6984758Z �[32mPASS: �[36mhttps://github.com/status-im/nim-chronicles C               �[34m (14.30997872 secs)�[0m
2020-02-07T03:21:47.6984982Z �[1m�[31mFAIL: �[36mhttps://github.com/status-im/nim-chronos C�[0m
2020-02-07T03:21:47.6985395Z �[1m�[36mTest "https://github.com/status-im/nim-chronos" in category "nimble-packages"�[0m
2020-02-07T03:21:47.6985569Z �[1m�[31mFailure: reBuildFailed�[0m
2020-02-07T03:21:47.6985643Z package test failed
2020-02-07T03:21:47.6985688Z $ nimble test
2020-02-07T03:21:47.6985808Z   Executing task test in /home/vsts/work/1/s/pkgstemp/chronos/chronos.nimble
2020-02-07T03:21:47.6985873Z 
2020-02-07T03:21:47.6986111Z nim c -r -d:useSysAssert -d:useGcAssert tests/testall

...

2020-02-07T03:21:47.6990901Z Hint: osnet [Processing]
2020-02-07T03:21:47.6990986Z /home/vsts/work/1/s/pkgstemp/chronos/chronos/transports/osnet.nim(636, 24) Warning: use `csize_t` instead; csize is deprecated [Deprecated]
2020-02-07T03:21:47.6991305Z /home/vsts/work/1/s/pkgstemp/chronos/chronos/transports/osnet.nim(636, 19) Error: type mismatch: got <csize> but expected 'csize_t = uint'
2020-02-07T03:21:47.6991397Z stack trace: (most recent call last)
2020-02-07T03:21:47.6991465Z /tmp/nimblecache/nimscriptapi.nim(165, 16)
2020-02-07T03:21:47.6991522Z /home/vsts/work/1/s/pkgstemp/chronos/chronos_18881.nims(25, 8) testTask
2020-02-07T03:21:47.6991600Z /home/vsts/work/1/s/lib/system/nimscript.nim(252, 7) exec
2020-02-07T03:21:47.6991886Z /home/vsts/work/1/s/lib/system/nimscript.nim(252, 7) Error: unhandled exception: FAILED: nim c -r -d:useSysAssert -d:useGcAssert tests/testall [OSError]
2020-02-07T03:21:47.6992136Z        Tip: 1 messages have been suppressed, use --verbose to show them.
2020-02-07T03:21:47.6992201Z      Error: Exception raised during nimble script execution
2020-02-07T03:21:47.6992237Z 
2020-02-07T03:31:11.1880921Z �[32mPASS: �[36mhttps://github.com/c-blake/cligen.git C                     �[34m ( 2.71678019 secs)�[0m

...
2020-02-07T03:34:38.7368188Z FAILURE! total: 82 passed: 81 skipped: 0 failed: 1

and this: https://dev.azure.com/nim-lang/255dfe86-e590-40bb-a8a2-3c0295ebdeb1/_apis/build/builds/2412/logs/78

2020-02-07T03:21:33.3882250Z     Unhandled exception: Timeout exceeded!
2020-02-07T03:21:33.3882310Z Async traceback:
2020-02-07T03:21:33.3882390Z   /Users/runner/runners/2.164.7/work/1/s/lib/pure/unittest.nim(647)                      testdatagram
2020-02-07T03:21:33.3882480Z   /Users/runner/runners/2.164.7/work/1/s/pkgstemp/chronos/chronos/asyncloop.nim(946)     waitFor
2020-02-07T03:21:33.3882570Z   /Users/runner/runners/2.164.7/work/1/s/pkgstemp/chronos/chronos/asyncloop.nim(278)     poll
2020-02-07T03:21:33.3882660Z   /Users/runner/runners/2.164.7/work/1/s/pkgstemp/chronos/chronos/asyncmacro2.nim(275)   testBroadcast
2020-02-07T03:21:33.3882760Z   /Users/runner/runners/2.164.7/work/1/s/pkgstemp/chronos/chronos/asyncfutures2.nim(407) internalCheckComplete
2020-02-07T03:21:33.3882850Z Exception message: Timeout exceeded!
2020-02-07T03:21:33.3883530Z Exception type: [AsyncTimeoutError]
2020-02-07T03:21:33.3883700Z   [FAILED] Broadcast test
2020-02-07T03:21:33.3883820Z     /Users/runner/runners/2.164.7/work/1/s/pkgstemp/chronos/tests/testdatagram.nim(509, 54): Check failed: getTracker("datagram.transport").isLeaked() == false
2020-02-07T03:21:33.3883910Z     getTracker("datagram.transport").isLeaked() was true
2020-02-07T03:21:33.3883990Z     false was false
2020-02-07T03:21:33.3884140Z   [FAILED] Transports leak test```

RFC: Future[T] leak or unattended Future[T] tracking.

Implement scheme which will track create/(complete or fail) of Future[T] objects.

In such way developer can find never completed Future[T] objects which can lead to memory leaks.

All Future[T] objects are identified by string fromProc and unique id. fromProc is passed as argument in newFuture[T](). Unique id is maintained inside of newFuture[T]() procedure.

Simple way (release mode).

Maintain 3 counters:

  • Number of created Future[T] objects, note that all Future[T] objects must be created with newFuture(xxx)() procedures.
  • Number of completed Future[T] objects. (Future[T] is got completed on complete() call).
  • Number of failed Future[T] objects. (Future[T] is got failed on fail() call).

If there no leaking Futures number of created Futures must be equal to the sum of number of completed Futures and number of failed Futures.

Detailed way (debug mode).

Maintable table which will hold all the created Future[T] objects and information about it. This can be Table[FutureFromProc, Table[FutureID, FutureInfo]].

FutureFromProc is a string which is representing fromProc argument of newFuture[T]() procedure call. FutureIDis integer which representingFuture[T]unique identifier.FutureInfo` is object which holds:

  1. Future[T] moment of creation (or epoch time).
  2. File and line number of creation.

Table elements will be added when the Future[T] is created and deleted when the
Future[T] got completed or failed.

Provide procedure which will dump all the information from table in convenient way.

closure environment reference count leak on self-referencing closures

import chronos

type X = ref object

proc testit123(xxx: X) {.async.} =
  addTimer(Moment.now()) do (p: pointer):
    asyncSpawn testit123(xxx)

discard testit123(X())
while true:
  poll()

we can see how there's only one instance of xxx and how each testit123 completes and therefore should release its reference to xxx - yet the count keeps growing:

[arnetheduck@tempus nim-beacon-chain]$ nim c -r -d:loggc "testit.nim" | grep Xxx
...
[GC] incRef: 0x7f15acdb4038 22 Xxx rc=38256; thread=0
[GC] incRef: 0x7f15acdb4038 22 Xxx rc=38257; thread=0
[GC] incRef: 0x7f15acdb4038 22 Xxx rc=38258; thread=0
...

this might very well be a transformation issue - the transformation creates a backreference to the "previous" closure environment so these might simply never get released.

Memory exhausts rapidly when closing stream after writing/reading with --gc:arc on Windows10

Tried

    proc sendFileStreamHandler(api: DaemonAPI, stream: P2PStream) {.async.} =
      {.gcsafe.}:
        var name: string
        var length: int
        while true:
          var line = await stream.transp.readLine()
          if line == "":
            continue
          var parts = line.split(":")
          name = parts[0]
          length = parts[1].parseInt
          var buffer = newString(length)
          await stream.transp.readExactly(buffer[0].addr, length)
          writeFile(name, buffer)
          discard await stream.transp.write "received\r\n"
    proc requestFileStreamHandler(api: DaemonAPI, stream: P2PStream) {.async.} =
      {.gcsafe.}:
        consoleString = peerDomainTable[$stream.peer] & strformat.`&` "\r\n"
        console.add consoleString
        var content = ""
        while true:
            if stop: break
            var line = await stream.transp.readLine()
            if len(line) == 0:
                continue
            if fileTable.hasKey line:
              content = readFile(fileTable[line])
              echo await stream.transp.write $content.len & "\r\n"
              echo await stream.transp.write content 
    await data.api.addHandler(RequestProtocols, requestFileStreamHandler)
    await data.api.addHandler(SendProtocols, sendFileStreamHandler)

all API raise OSError due to lazy `getDispatcher` initialization

getDispatcher does lazy initialization - this means it's not possible to use the chronos API safely without introducing error handling in every call because it may raise an OSError (and thus has the raises OSError effect) - even calls that "logically" should not fail, such as setTimer that merely adds a timer to the loop may fail on this initialization.

It would be good to be able to do all initialization during application startup such that it can happen in a "controlled" manner and that subsequent uses of the API are safe from errors of this kind.

Options discussed:

  • introduce init and raise Defect from getDispatcher
    • users must manually initialize chronos on every thread before using any of the calls which is not obvious from the API
  • implement #17
    • risk that dispatcher gets used from different threads even though it's not adequately prepared
    • inconvenient to pass dispatcher around

Change all durations and timestamps to `times.nim`

There are several reasons to do this:

  • use the standard representation of time in nim (times.Duration and friends) to integrate better with other libraries
  • avoid confusion of time units - the present usage of milliseconds is unusual and arbitrary, meaning it's easy to get the units wrong
  • use a monotonic clock for relative time offsets (in timers, for example)

transport.readLine seems to be blocking forever when socket closed.

Consider following example:

import asyncdispatch2

var transport: StreamTransport

proc looper() {.async.} = 
  while true:
    var data = await transport.readLine()
    if data.len == 0:
        echo "No data, disconnected(?)"
    echo "Got data", data


if isMainModule:
  proc demo() {.async.} =
    transport = await connect(resolveTAddress("127.0.0.1:5000")[0])
    asyncCheck looper()
    echo "post looper"
    waitFor sleepAsync(1)
    close(transport)
    echo "Closed"
  waitFor demo()
  runForever()

If you will run it against any "echo" server running on localhost:5000 you should see:

Waiting for data
post looper
Got data
Waiting for data
Closed

I'm pretty sure that readLine should return empty read when socket is closed especially that https://github.com/status-im/nim-asyncdispatch2/blob/f4f98d617c067ed590d7cd2fd761134d81376a1b/asyncdispatch2/transports/stream.nim#L1069 says that it should read whatever have been left when EOF received.

Stack trace in `Exception.msg` gives poor UX

Async stack traces should not reside in the msg field of the exception - this field is meant for a short, human-readable description of the error that can be logged on a single line.

The Exception object already contains a parent field for exceptions - this, together with a dedicated FutureError exception that has a source field for the purpose would allow code that logs the exception to deliver a better UX.

deal with seq[T] casting to ptr SeqHeader with --gc:arc

type
  SeqHeader = object
    length, reserved: int

proc isLiteral*(s: string): bool {.inline.} =
  (cast[ptr SeqHeader](s.cstring).reserved and (1 shl (sizeof(int) * 8 - 2))) != 0

proc isLiteral*[T](s: seq[T]): bool {.inline.} =
  (cast[ptr SeqHeader](s).reserved and (1 shl (sizeof(int) * 8 - 2))) != 0

How to deal with seq[T] casting to ptr SeqHeader with --gc:arc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.