Anonymous
Оу сорри
Roman
Вопрос (из соседнего чата. но без про тут не справиться). Есть код: std::cout << "Hello"; std::cerr << "World"; Clion выводит во встроенный терминал WorldHello. Все остальные терминалы и IDE HelloWorld. В багтрекере Jetbrains разработчики пишут что проблема в принципе неразрешимая. Кто-нибудь может объяснить почему у всех работает, а JB нет и они не могут починить?
Roman
Не только. Netbeans даже работает
Egor
Если есть два независимых потока (вроде cout и cerr) — мы не отличим, в каком информация "пришла раньше".
Roman
cppref тут не причем
Egor
Вероятно, там стоит какой-нибудь удобный хитрый костыль.
Egor
Или, например, они опрашивают потоки в десять раз чаще.
Egor
Или ещё может быть такое: остальные терминалы в принципе не разделяют stdout/stderr и выдают один и тот же пишущий конец и для cout, и для cerr
Egor
Тогда программа сама разбирается с тем, что в каком порядке идёт, но вот у среды разработки исчезает возможность отделить, откуда было что записано.
Berkus
cppref тут не причем
причем, если cerr обязан флашить cout это важно
Alexander "SonnySlave"
https://stackoverflow.com/questions/37884578/why-the-order-is-not-preserved-when-printing-something-first-with-cerr-and-then
Egor
Например, если попытаться в том же баше подсветить в общем случае stderr каким-нибудь образом, там тоже поедет порядок вывода. По крайней мере, у меня так было.
Berkus
а он обязан?
посмотри в соседний чат
Berkus
Не по стандарту. http://en.cppreference.com/w/cpp/io/cerr >In addition, std::cerr.tie() returns &std::cout (same for wcerr and wcout), meaning that any output operation on std::cerr first executes std::cout.flush() (via std::basic_ostream::sentry's constructor) (since C++11)
Roman
Теоретически можно ведь сделать API с синронизацией различающий потоки
Egor
Можно в качестве эксперимента вооружиться pipe2, read, write, exec, fork и попробовать самостоятельно запустить процесс и отделить stdout от stderr, ничего не перепутав.
Egor
Я в успех мероприятия без изменения выполняющегося кода не верю.
Roman
Думаю интересный эксперимент. Надо будет попробовать на выходных
Berkus
Теоретически можно ведь сделать API с синронизацией различающий потоки
он читает cout из хендла 1 и cerr из хендла 2, соответственно все там синхронизировано, просирают они где-то внутри у себя уже
Egor
_ничего не перепутав_
Roman
Ну смотри у тебя два хэндла. И там и там срут с такой скоростью что ты ничего не успеваешь
Egor
В смысле "чтобы мы могли восстановить, какие байты в каком пайпе появились раньше"
JBáruch
чатег, я тут задумал сделать C/C++ Conan track с хакатоном на swampUP в этом году, никто не хочет податься? https://sessionize.com/swampup-2018/
Roman
Если consumer быстрее продьюсера то проблем нет. Читаешь всё что есть и выводишь в порядке в котором прочитал
Roman
Хотя блин
Roman
Если потоки без буферизации...
Alexander "SonnySlave"
@zamazan4ik багрепорт - кажется конан на маке хуйно определяет версию https://travis-ci.org/procxx/kepka/jobs/322618396
Egor
консоль как-то справляется
У консоли один хэндл, небось, и справляется тут не консоль, а программа.
Roman
То порядок обязан сохраниться
JBáruch
есть кое-что более полезное
всегда еесть кое-что более полезное.
Roman
Продьюсер просто не сможет записать в один поток, пока consumer не вычитает из другого
Roman
В общем я нуб. Мне нужен RTFM. Эксперты дать однозначный ответ не смогли
Alexander "SonnySlave"
ща сделаю. в слаке уже кинул
Alexander "SonnySlave"
только там спят все, судя по всему
JBáruch
ща сделаю. в слаке уже кинул
бро, ну какой слак, епт? Ну что за елка палка, про баг надо рассказать в телеграме, в слаке, написать в письме теще, и только issue открыть не надо.
JBáruch
ты лучше помоги народу набрать, чтобы пилили шустрее.
Alexander "SonnySlave"
ты лучше помоги народу набрать, чтобы пилили шустрее.
а как мне это сделать? У вас же там офис где-то далеко
JBáruch
мы в команду Конана набираем remote
Alexander "SonnySlave"
я и так агитацией занимаюсь на гитхабе 😊
Berkus
ты лучше помоги народу набрать, чтобы пилили шустрее.
нормально так унижаешь главного агитатора конана, молодец
Berkus
смотрю с работой с кадрами у вас тоже все хорошо
Berkus
нихуя не собирается только
Alexander "SonnySlave"
ахахахах
Berkus
ну короч пока билды зависли, жду чо будет по баге в конане и как быстро пофиксят
Alexander "SonnySlave"
это просто беркус токсичный у нас 😊
JBáruch
это просто беркус токсичный у нас 😊
так кто-ж против, токсичные это по моей части.
JBáruch
постараюсь что-нибудь придумать
как баг откроешь, скинь ссыль, я попинаю немного
Alexander "SonnySlave"
Alexander "SonnySlave"
как баг откроешь, скинь ссыль, я попинаю немного
надо же вылизать Conan до релиза 😊
JBáruch
надо же вылизать Conan до релиза 😊
вылизать Conan не надо, надо до релиза только вылизать API
Berkus
короче -s compiler.version=some.shit должно помочь, главный вопрос - как этот сеттинг повлияет на генерацию проекта
Berkus
ERROR: Invalid setting '7.2' is not a valid 'settings.compiler.version' value. Possible values are ['5.0', '5.1', '6.0', '6.1', '7.0', '7.3', '8.0', '8.1', '9.0'] откуда блять он выдумывает эти цифры, чертово поделие
Alexander "SonnySlave"
а какую версию ты ему выставил?
Berkus
7.2
Berkus
это на моей локальной макоси
Alexander "SonnySlave"
какая версия конана у тебя?
Berkus
λ conan —version Conan version 0.28.1 старовата чот
Berkus
ща обновлю
Alexander "SonnySlave"
@berkus https://github.com/conan-io/conan/issues/2231
Alexander "SonnySlave"
чекай issue - сейчас конановцы туда подтянутся