Size: a a a

Конференция C++ Russia

2021 July 21

G

Gabriele in Конференция C++ Russia
источник

AP

Antony Polukhin in Конференция C++ Russia
Потому что вы сейчас пришли в конструкторское бюро, подошли к разобранному реактивному двигателю, тыкаете памяткой для пассажирских перелётов в деталь этого двигателя и жалуетесь инженеру что сложно летать, ничего не понятно. А в брошурке вон как просто, надо лишь голову руками накрыть во время турбулентности.

В C++20 приняли только языковые фичи для корутин. В стандарте нет асинхронной сети, нет асинхронных примитивов синхронизации, нет экзекьюторов... ничего нет! Будет позже, будет простое. Сейчас же чтобы полетать, надо собрать свой движок из россыпи деталей.
источник

AN

Aleksey Nikolaev in Конференция C++ Russia
> ничего нет! Будет позже, будет простое.
Вот, теперь понятно. А то первоначально прочиталось, как невозможность сделать корутины проще на С++. Да мы не жалуемся, просто не понимаем на какой стадии находится разработка. Корутины выглядят и их расписывают как супер болид (на реактивном двигателе), а начинаешь вникать - видишь только что болит.
источник

MK

Max Khizhinsky in Конференция C++ Russia
Накидаю на вентилятор...
Мне вот интересно, как тогда принимаются все такие фичи в стандарт. Точнее, не фичи, а набор кубиков, из которых *вроде бы* можно *будет* построить летающий космолет.
Собираются 200 членов комитета и путем мысленных экспериментов собирают из кубиков космолет?.. Собралось - значит, можно включать в стандарт, так?..
Тогда вангую изменения в C++23 или далее, - здесь кубика не хватает, здесь кубик лишний, и вообще космолет A собирается, а космолет B - нет, надо что-то другое.
Странно все это выглядит. Хотя мы, с точки зрения стандарта, видим только вершину айсберга, а на самом деле в глубине кипит работа...
источник

AF

Alexey Fyodorov in Конференция C++ Russia
Например, чтобы разработчики библиотек могли воспользоваться кубиками?
источник

G

Gabriele in Конференция C++ Russia
возможно, но на самом деле практически любой может участвовать. и эти встречи открыты для всех, граждан, компаний или организаций, а также будущих draft standard
источник

MK

Max Khizhinsky in Конференция C++ Russia
мой вопрос чуть про другое - почему кубики именно такие.
источник

AT

Alexey Tkachenko in Конференция C++ Russia
Потому что шарики укладывались бы плотнее, но через них абстракции протекали бы. Вот у кубиков грани и острые
источник

YA

Yauheni Akhotnikau in Конференция C++ Russia
Зная как сложно бывает порой привести разных людей к общему знаменателю и уговорить (заставить) сделать что-то работающее совместно, могу только порадоваться тому, что C++ продолжает успешно развиваться. Да еще такими темпами.
источник

MK

Max Khizhinsky in Конференция C++ Russia
Ok, подойдем с другой стороны. Я не знаток тонкостей стандарта, поэтому вводный вопрос -  определяет ли стандарт, как должны быть внутренне организованы виртуальные функции и их вызов в C++?.. Или дает только общие требования?.. Насколько я когда-то читал, есть по крайней мере две реализации vtbl, обе отвечают стандарту.
источник

YA

Yauheni Akhotnikau in Конференция C++ Russia
Я тоже не знаток, но ведь сама суть стандарта в том, чтобы специфицировать требования, а реализацию оставлять на откуп производителям компиляторов/stdlib.
источник

MK

Max Khizhinsky in Конференция C++ Russia
Я ждал именно такого ответа 😊
Тогда почему реализация vtbl дается на откуп компиляторам, а реализация корутин - нет? Ведь можно было бы и для vtbl сделать набор кубиков, а не список требований.
источник

EP

Egor Pugin in Конференция C++ Russia
No they are not defined by the standard. They are instead implementation concepts, rather like a stack or a heap.
источник

EP

Egor Pugin in Конференция C++ Russia
на откуп компиляторам отдали __builtin_coro_resume(). Причём неявно
источник

YA

Yauheni Akhotnikau in Конференция C++ Russia
Когда делали vtbl, комитета по стандартизации еще не было. Сделали и сделали :)
источник

YA

Yauheni Akhotnikau in Конференция C++ Russia
Но вообще, судя по описаниям короутиновой кухни, на откуп производителям отдали совсем уж низкоуровневые вещи. А разработчику оставили кучу ручек, которые можно самостоятельно покрутить.
источник

EP

Egor Pugin in Конференция C++ Russia
*поправка
void  __builtin_coro_resume(void *addr);
void  __builtin_coro_destroy(void *addr);
bool  __builtin_coro_done(void *addr);
void *__builtin_coro_promise(void *addr, int alignment, bool from_promise)

https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/coroutine#L226
источник

MK

Max Khizhinsky in Конференция C++ Russia
Я тоже. Но еще я знаю, что порой основной причиной, которая приводит людей к общему знаменателю, является обычная усталость от бесконечных обсуждений.
источник

YA

Yauheni Akhotnikau in Конференция C++ Russia
Ну что поделать. Реальный мир он такой. Иногда хоть какое-то решение к определенному сроку гораздо лучше, чем бесконечный поиск идеального решения.
источник

AT

Alexey Tkachenko in Конференция C++ Russia
Могу привести кстати в пример эволюцию асинков в C#
2010 год, C#4, появилось понятие асинхронный задач как объектов. Поддержки компилятора нет
2012, C#5, появились ключевые слова async, await, абстракция awaitable. Встроенный генератор конечного автомата, но есть возможность реализации своего.
2016, .net core, в ms наконец-то упоролись быстродействием, появилась альтернативная стандартная специализированная реализация задач с упором на ликвидацию аллокаций. Поддержки компилятора не требовалось.

Полученная абстракция в связке со встроенными языковыми средствами позволили делать поистине упоротые удобные вещи типа такого: https://devblogs.microsoft.com/pfxteam/await-anything/
источник