Size: a a a

2020 July 23

AV

A V in Rust Async
просто разработчикам внутри токио проще договриться между собой чем со всеми сразу
источник

AV

A V in Rust Async
к тому же бэкграунд сильно разный
источник

AV

A V in Rust Async
futures, async-std, smol пилят исследователи
источник

PL

Paul Loyd in Rust Async
Да. Но спорные решения принимаются довольно быстро. Тот же select протащился почти без обсуждения
источник

AV

A V in Rust Async
tokio и actix - те у кого мильярды rps в проде
источник

V

Vetro in Rust Async
ладно, спасибо!
источник
2020 July 26

RP

Roman Proskuryakov in Rust Async
Paul Loyd
То есть "мы полагайтесь на это, но совсем уж не стоит, а то мало ли", И вот это "мало ли" это select в tokio
то есть проблема в unspecified behavior в Futures::poll после Ready, но виноват токио.
источник

PL

Paul Loyd in Rust Async
Roman Proskuryakov
то есть проблема в unspecified behavior в Futures::poll после Ready, но виноват токио.
Почему? Это как раз std надиктовано, те же async функции панику кидают
источник

PL

Paul Loyd in Rust Async
И обычно это не создаёт проблем. Кроме кейса с select в цикле
источник

AV

A V in Rust Async
Roman Proskuryakov
то есть проблема в unspecified behavior в Futures::poll после Ready, но виноват токио.
Ну вообще это правильная модель, просто жалко что нельзя закодировать в системе типов что если Ready, то больше поллить нельзя
источник

V

Vetro in Rust Async
Вообще наверное можно, когда завезут - что отдельные варианты енама - это отдельные типы
источник

PL

Paul Loyd in Rust Async
Vetro
Вообще наверное можно, когда завезут - что отдельные варианты енама - это отдельные типы
Это не поможет
источник

KR

Kai Ren in Rust Async
Вообще можно. Просто сигнатура была бы менее удобной. Если бы poll поглощал футуру, то на ready мог бы не возвращать.
источник

Ct

Casual tears in Rust Async
Kai Ren
Вообще можно. Просто сигнатура была бы менее удобной. Если бы poll поглощал футуру, то на ready мог бы не возвращать.
Кажется это ломает Pin?
источник

KR

Kai Ren in Rust Async
Casual tears
Кажется это ломает Pin?
А он нужен бы был в этом случае, мы же во владение забираем?
источник

Ct

Casual tears in Rust Async
Kai Ren
А он нужен бы был в этом случае, мы же во владение забираем?
Ну, референсы в async функциях across await points использовать было бы нельзя, наверное, в таком случае. Либо там какие-то странные гарантии от executor'а требовались вида "положи туда же, откуда взял после вызова poll".
источник

KR

Kai Ren in Rust Async
Casual tears
Ну, референсы в async функциях across await points использовать было бы нельзя, наверное, в таком случае. Либо там какие-то странные гарантии от executor'а требовались вида "положи туда же, откуда взял после вызова poll".
Да, потому сигнатура была бы менее удобна в poll’ах со всеми этими «вынь да полож» туды-сюды
источник

KR

Kai Ren in Rust Async
men::replace’ами всё обмазывать
источник

Ct

Casual tears in Rust Async
Я кстати не уверен, что "вынь да полож" не UB в случае self-referential struct.
источник

Ct

Casual tears in Rust Async
Технически там появляется референс на "неинициализированную память", вроде как.
источник