Size: a a a

2020 December 23

D

Denis in Rust Async
?
источник

D

Denis in Rust Async
какая обратная совместимость для 0.x?
источник

K

Kitsu in Rust Async
Vasily Kondratyev
0.3 сломала обратную совместимость — решили это узаконить?
какую обратную совместимость? до 1.0 апи меняется как хочет
источник

VK

Vasily Kondratyev in Rust Async
то есть 0.3 может ломать 0.2? ясно, не знал
источник

VK

Vasily Kondratyev in Rust Async
спасибо, теперь запомню :)
источник

D

Denis in Rust Async
угу, а вот после 1.0 уже только 2.0 может ломать
источник

D

Denis in Rust Async
Artem Vorotnikov
Tokio 1.0 выйдет сегодня ночью
пишут, что не раньше, чем через 3 года выйдет 2.0

зачем такие ограничения ставить 🤔
источник

is

ilya sheprut in Rust Async
Привет, я тут пытаюсь сделать non-blocking read, напрямую используя метод poll_read. Считываю через read, stderr от процесса.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=c9fad4ebfe23bd07918218271534cbd8

Проблема в том, что всё работает хорошо, но в момент когда процесс, который я считываю, паникует, и выводит кучу всякой инфы, которая за один раз не считывается, моя функция non_blocking_read, тупо не может прочитать дальше, и всегда возвращает Poll::Pending. Я попробовал только что использовать "блокирующий" обычный read, после того как понял что процесс завершился, и я могу дочитать до конца.

Так же когда я пытался выводить через dbg!() в своём процессе, у меня почему-то этот метод не зависал и всё считывал до конца.

ЧЯНДТ?
источник

в🧇

вафель 🧇 in Rust Async
ilya sheprut
Привет, я тут пытаюсь сделать non-blocking read, напрямую используя метод poll_read. Считываю через read, stderr от процесса.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=c9fad4ebfe23bd07918218271534cbd8

Проблема в том, что всё работает хорошо, но в момент когда процесс, который я считываю, паникует, и выводит кучу всякой инфы, которая за один раз не считывается, моя функция non_blocking_read, тупо не может прочитать дальше, и всегда возвращает Poll::Pending. Я попробовал только что использовать "блокирующий" обычный read, после того как понял что процесс завершился, и я могу дочитать до конца.

Так же когда я пытался выводить через dbg!() в своём процессе, у меня почему-то этот метод не зависал и всё считывал до конца.

ЧЯНДТ?
ты вроде другую реализацию в итоге использовал, нет?
источник

D

Denis in Rust Async
ilya sheprut
Привет, я тут пытаюсь сделать non-blocking read, напрямую используя метод poll_read. Считываю через read, stderr от процесса.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=c9fad4ebfe23bd07918218271534cbd8

Проблема в том, что всё работает хорошо, но в момент когда процесс, который я считываю, паникует, и выводит кучу всякой инфы, которая за один раз не считывается, моя функция non_blocking_read, тупо не может прочитать дальше, и всегда возвращает Poll::Pending. Я попробовал только что использовать "блокирующий" обычный read, после того как понял что процесс завершился, и я могу дочитать до конца.

Так же когда я пытался выводить через dbg!() в своём процессе, у меня почему-то этот метод не зависал и всё считывал до конца.

ЧЯНДТ?
stderr блокирующий
источник

is

ilya sheprut in Rust Async
вафель 🧇
ты вроде другую реализацию в итоге использовал, нет?
прямо щас я использую конкретно эту функцию, что привёл в плейграунде
источник

is

ilya sheprut in Rust Async
Denis
stderr блокирующий
откуда такая инфа?
и да, я по сути просто использую большую обёртку на poll_read, которая не использует waker'а, так что должно работать. Или waker критически важно должен вызваться?
источник

is

ilya sheprut in Rust Async
хм, а что если проблема в том, что я слишком часто делаю новый запрос через poll_read, не дожидась до того как вызовут waker'а, поэтому из stderr никак не может прочитать...
источник

is

ilya sheprut in Rust Async
есть ли какой-то метод, позволяющий вызывать poll функции, но чтобы там ещё можно было waker'а поставить, который потом проставит особый флаг?
источник

is

ilya sheprut in Rust Async
ilya sheprut
хм, а что если проблема в том, что я слишком часто делаю новый запрос через poll_read, не дожидась до того как вызовут waker'а, поэтому из stderr никак не может прочитать...
да, всё логично, у меня там обращение к считыванию делается в цикле слишком быстро. А когда я ставил задержку в 100 миллисекунд, то всё считывалось. Да, нельзя так часто делать метод poll_read
источник

is

ilya sheprut in Rust Async
Похоже, решения у этого не видно, окей, тогда вернусь к варианту с select!{} и четырьмя буферами, для считывания из stdout/stderr двух программ.

Вывод: нельзя в цикле очень часто вызывать метод poll_read, иначе у него на какие-то внутренние вещи, связанные с футурами будет уходить времени больше, чем собственно само считывания, и он никогда не сможет прочитать дальше, даже если у него будут байты.

Спасибо чатик-уточка.
источник

MB

Mikail Bagishov in Rust Async
Denis
не в курсе кстати, планируют выкатить список изменений апишечки относительно 0.3?
более-менее ничего, но вообще в чейнджлоге все есть
источник

D

Denis in Rust Async
Mikail Bagishov
более-менее ничего, но вообще в чейнджлоге все есть
источник

D

Denis in Rust Async
Переслано от std::mpa
источник

A

Anton in Rust Async
И гипер
источник