Anonymous
а ты в cpp можеш?
Anonymous
ясно.
Constantine
а можно корутины в трех словах?
Constantine
там добавляются три оператора, как я понимаю
Co(n)stantine👨‍🔬
https://en.wikipedia.org/wiki/Coroutine
Co(n)stantine👨‍🔬
Кстати, есть же Boost.Coroutine
Anonymous
Co(n)stantine👨‍🔬
обращайся)
Constantine
там больше трех слов
Evgenii
там больше трех слов
co_return, co_await, co_yield
Co(n)stantine👨‍🔬
😂👍
Constantine
co_return, co_await, co_yield
синтаксис есть?)
Igor
а можно корутины в трех словах?
если беркус прав про async/await в шарпе и если я правильно его помню: async task<int> some_function() { yield 42; } task<int> result = some_function(); ... int = await result;
Constantine
да это шарп
Constantine
полагаю, оператор co_await просто применяется на аргумент
Constantine
синтаксическая разница между target.co_await() и co_await target есть?
Constantine
там вообще не сахар есть? :)
Alexander "SonnySlave"
https://software.intel.com/en-us/system-studio/choose-download
Alexander "SonnySlave"
Уря!
Co(n)stantine👨‍🔬
что это в трех словах?))
Co(n)stantine👨‍🔬
для чего используешь?
Constantine
меня синтаксис интересует
Constantine
т.е. что в языке меняется
Constantine
и я не хочу перечитывать 20-страниц документа
Constantine
пропоуза
Berkus
там вообще не сахар есть? :)
нет, это чисто сахарная фича
Berkus
можно взять boost.coroutine и без всякого сахара сделать то же самое
Aleksander
Локальные переменные будут принудительно в стек пихаться?
Constantine
а try <expression> будет?)
Andrei
https://software.intel.com/en-us/system-studio/choose-download
О, интересно. Давно хотел поюзать. Ты сам пользовался? Что такое Wind River (какая-то их тулза, в инстале просит)
Alexander "SonnySlave"
жди 😊
Andrei
Wind River это ОС для IoT. Интересно
Berkus
а try <expression> будет?)
рано или поздно с++ превратится в хаскель
Evgenii
рано или поздно с++ превратится в хаскель
рано или поздно все превратится в хаскель
Evgenii
даже небо, даже аллах
🐙 Antony
нет, это чисто сахарная фича
Неа, там очень много не сахара. Компилятор под капотом сосздаст и будет поддерживать машину состояний
🐙 Antony
можно взять boost.coroutine и без всякого сахара сделать то же самое
Не совсем то же самое. В стандарт принимают stackless корутины, а boost.coroutine - это stackfull корутины
Co(n)stantine👨‍🔬
рано или поздно с++ превратится в хаскель
нееет, только не это, мне не идут ф. яп.
🐙 Antony
а try <expression> будет?)
Внезапно, люди начали это делать на корутинах: expected​<string> GetString(int​ index​); expected​<int>​ ​SumOfSizes​()​ ​{ int​ result ​ = ​0 ; for (int i = 0; i < 100; ++i) result ​+=​ ​(co_await ​ GetString​ (i)).size(); } co_return result​; }
🐙 Antony
Что-то из сторонеей кодовой базы. В нём promise_type который никогда не резьюмится
🐙 Antony
* или там оператор await для него перегружен... Не суть важно :)
Andrei
В чем преимущество stackless корутин, кроме того, что у них контекст чуть быстрее переключается?
Andrei
Какая мотивация добавления их в стандарт, вместо стейтфул?
Berkus
В Европе дали смачного ёбу: https://blog.github.com/2018-03-14-eu-proposal-upload-filters-code/
Berkus
пздц
Andrei
Такое себе. Ну допустим.
Igor
В чем преимущество stackless корутин, кроме того, что у них контекст чуть быстрее переключается?
stackless корутин можно сделать много, в stackful надо еще держать стек для каждой корутины
🐙 Antony
В Европе дали смачного ёбу: https://blog.github.com/2018-03-14-eu-proposal-upload-filters-code/
ОТлично. Если этот закон примут - github переедет в Россию. Или ещё в какую страну, где нет корпоративного двоемыслия :)
Andrei
stackless корутин можно сделать много, в stackful надо еще держать стек для каждой корутины
Это не проблема. Стеклесс корутины тоже едят стек. Для стекфулл можно всегда сделать переиспользуемые стеки, и аккуратно выбирать размеры.
Igor
Это не проблема. Стеклесс корутины тоже едят стек. Для стекфулл можно всегда сделать переиспользуемые стеки, и аккуратно выбирать размеры.
stackless корутины используют обычный стек и не отличаются в этом плане от обычных функций. что значит аккуратно выбирать размеры?
Andrei
Для стейтфул корутин, которые при создании берут из пула себе стеки размеры этих стеков заранее программист может ограничить. Поэтому то, что стеки надо держать — это не большой консёрн.
Igor
Для стейтфул корутин, которые при создании берут из пула себе стеки размеры этих стеков заранее программист может ограничить. Поэтому то, что стеки надо держать — это не большой консёрн.
Нужен пул, нужно уметь контролировать размеры стеков, легко выйти за пределы стека и упасть. Слишком много проблем, а польза (видимо) неочевидна.
Andrei
Ерунда, это всё совсем не проблемы, а польза еще как очевидна.
vladislav
Andrei
Польза в том, что код выглядит иначе, и самое главное есть возможность pause/resume из nested context
Ostap ꑭ
Корутины будут в С++20?
Andrei
Что приводит к тому, что весь код не надо загаживать async/await-ами
Andrei
Можно брать старый обычный неасинхронный код и ничего в нём не меняя получать асинхронный.
Igor
Ерунда, это всё совсем не проблемы, а польза еще как очевидна.
Stackfull coroutines are threads confused about their identity - https://twitter.com/GorNishanov/status/869205388087906305, мнение автора TS и его реализаций.
Maksim
Привет всем. Может кто то помочь с ffmpeg?
Andrei
Я не знаю, что имел в виду автор, я имел в виду юзерспейс файберы(в терминологии винды) или ucontext_t в терминологии линукса.
Igor
Корутины будут в С++20?
Будут. Looks like coroutines are going to happen for #Cpp20, but not this week at #CppJAX. If you have feedback on the TS, better get it to the committee soon! (https://twitter.com/AlisdairMered/status/973662578948833280)
Andrei
А, ну я Нишанову два года назад лично задавал вопрос про это, на что он с удивлением сказал, что чуть ли не впервые видит человека, который виндовые файберы в продакшне использует.
Andrei
И тут я что-то заподозрил.
Крылатый
Нет здесь никого.
Aleksander
В freertos для корутин надо писать извращенный код, в винде тоже надо сильно напрягаться?
Igor
какой настырный
Анаит
Кто нить пишет на qt?
Constantine
Я на это могу сказать, что Stackless coroutines are switch-cases confused about their identity.
Stackless coroutines are events posted in the queue confused about their identity