Size: a a a

2021 January 13

MB

Max Brajsky in ru.nim.talks
О, давай :) Спасибо!
источник

VB

Vladimir Berezenko in ru.nim.talks
В двух словах: в ниме основной цикл имеет баг при котором он прекращает работу с ошибкой если ни одного активного IO нет. Грубо говоря ждать на коллбэке чего-либо бесполезно в некоторых случаях.
источник

VB

Vladimir Berezenko in ru.nim.talks
Лечится так:
proc dummyTimer(fd: AsyncFD): bool {.closure, gcsafe.} =
   result = false # Returning true signifies we want timer to stop.
addTimer(1000, false, dummyTimer)
источник

VB

Vladimir Berezenko in ru.nim.talks
пока таймер есть - всё будет нормально.
источник

MB

Max Brajsky in ru.nim.talks
благодарю!
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Vladimir Berezenko
В двух словах: в ниме основной цикл имеет баг при котором он прекращает работу с ошибкой если ни одного активного IO нет. Грубо говоря ждать на коллбэке чего-либо бесполезно в некоторых случаях.
я не сказал бы, что это баг :)
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
ну да, я нашёл твою issue на гитхабе
источник

VB

Vladimir Berezenko in ru.nim.talks
это баг. я его завел как issue сразу как нашел
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Vladimir Berezenko
это баг. я его завел как issue сразу как нашел
это не баг, потому что это поведение было известно и было так сделано
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
но его наверное изменят потом
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
github issue != баг
источник

VB

Vladimir Berezenko in ru.nim.talks
это конкретный баг, известно это поведение или не известно изначально было. основной цикл не должен отваливаться при условии что его используют и есть ожидающие футуры.
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Vladimir Berezenko
это конкретный баг, известно это поведение или не известно изначально было. основной цикл не должен отваливаться при условии что его используют и есть ожидающие футуры.
ну раз тебе хочется называть это багом, то пусть :)
источник

VB

Vladimir Berezenko in ru.nim.talks
А это и есть баг. Есть корутина, которая висит на await, а цикл такой херак и кончился, причем на ровном месте.
источник

MB

Max Brajsky in ru.nim.talks
Vladimir Berezenko
Лечится так:
proc dummyTimer(fd: AsyncFD): bool {.closure, gcsafe.} =
   result = false # Returning true signifies we want timer to stop.
addTimer(1000, false, dummyTimer)
Хех, Error: unhandled exception: No handles or timers registered in dispatcher.
с таймером тоже.
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Vladimir Berezenko
А это и есть баг. Есть корутина, которая висит на await, а цикл такой херак и кончился, причем на ровном месте.
так waitFor не запускает бесконечный цикл
источник

VB

Vladimir Berezenko in ru.nim.talks
MIT/Yardanico (alt)
так waitFor не запускает бесконечный цикл
ну какбы он должен дождаться окончания работы того что завейтворил, так? а он не дожидается, а отваливается посередине.\
источник

VB

Vladimir Berezenko in ru.nim.talks
точнее не совсем так досконально, но в общих чертах смысл именно такой.
источник

VB

Vladimir Berezenko in ru.nim.talks
в моем случае он не дожидался окончания работы того что ждал, а валился с ошибкой посередине, не смотря на await внутри.
источник

MB

Max Brajsky in ru.nim.talks
а не, я не очень умный, не в том потоке создал
источник