На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (11) « Первая ... 7 8 [9] 10 11  все  ( Перейти к последнему сообщению )  
> WinAPI и POSIX, бой насмерть
    Цитата Wound @
    это видно даже по тому багрепорту, ссылку на который ты указал

    А если внимательно почитать обсуждение?

    Добавлено
    Цитата Wound @
    А в gcc - эти баги висят годами и они нах никому не упали фиксить их.

    Зависит от приоритета.

    Добавлено
    Цитата
    Hi folks!

    Sorry for the confusion here. This might be somewhat misleadingly marked "fixed pending release." The problem is that this issue is caused by the DLL interface exposed by msvcp140.dll. It passes struct xtime instances back and forth, which are effectively UNIX timestamps against the system clock. Changing that interface is unfortunately an ABI breaking change. VS2017 and 2019 have been ABI compatible releases with VS2015, so we haven't been able to fix this paritcular bug there. (I think this_thread::sleep_for might be fixable with some hacks and a new msvcp140_3.dll, but condition_variable::sleep_for, probably not)

    The reason this got marked as fixed pending release is that we already have changes staged in our ABI breaking branch that completely rewrite all the concurrency support in the standard library to fix this and *many* other bugs. So we have a branch with this fixed, and as soon as we can ship an ABI break it will be fixed, but unfortunately people really like the ABI compat guarantees.

    As a result we don't really know exactly which release will contain the fix. We (the standard library team) have done the work; we are only waiting to ship it till the number of customers angry about ABI breaking bugs remaining unfixed exceeds the number of customers happy that lack of ABI break means they don't need to recompile the world.

    Have a great day!

    Billy O'Neal

    Visual C++ Libraries
    Mar 27, 2019


    Добавлено
    Перевожу: да, у нас куча багов в рантайме, но фиксить пока не будем, т. к. бинарная совместимость для нас важнее.
      Цитата Wound @
      не может комплировать что то более сложное, чем Hello world
      Может, компилирует, работает. Но сдает позиции, устаревает потихоньку.

      А так ща в стиле Кили заявлю чушню:
      clang оцтой полный, багнутое говно, которое не может комплировать что то более сложное, чем Hello world. Посмотрите сколько багов:
      https://bugs.llvm.org/buglist.cgi?component...s&product=clang
      И висят годами!!!
      Сообщение отредактировано: applegame -
        Цитата korvin @
        Не понимаю, почему ты не считаешь целесообразность значимым критерием.
        Хм. Как раз его-то я и озвучил. Не заметил?
        Но в целом если, когда ты используешь некий слой API и не знаешь, в какие ресурсы это выльется твоему коду, это не есть хорошо, это лишь может не заботить тебя в конкретной ситуации. Если создатель этого API ориентируется на широкий рынок потребителей, он должен учитывать, что никакая дополнительная информация не будет лишней хотя бы кому-то хотя бы изредка. Как эту инфу преподносить, это уже вопрос реализации стратегии распространения этого API.
        Цитата Wound @
        gcc оцтой полный, багнутое говно, которое не может комплировать что то более сложное, чем Hello world
        Не одобряю нарушение 3-го морального принципа Холивара в Правилах его раздела. Но не откажу в удовольствии заметить, что GCC имеет по меньшей мере два противоречия со Стандартом C во всех своих инкарнациях. Любой версии и под любую платформу. Один связан с отношением к кастам из void*, об этом я даже тему когда-то создавал, второй я выявил недавно, и связан с тем, что он считает любые emum-ы без отрицательных значений его идентификаторов беззнаковым типом данных (точнее, при неявном касте к integral сводит к unsigned), что идёт в прямое противоречие с требованиями Стандарта. Чего не скажешь о clang, Microsoft Compiler, Intel Compiler и Borland, Freescale – всех, до которых я смог дотянуться. Как первый баг вылился в приличную копеечку нашим тогдашним заказчикам, в той теме я подробно расписал, как и во что второй вылился нашим нынешним, ещё не знаю, они только недавно были уведомлены. Вот и пользуй неквалифицированные инструменты в высококритичном ПО. Хорошо, что наши процессы тестирования и верификации... э-э-э, скажу политкорректно, имеют надлежащее финансирование.

        Добавлено
        Цитата Pavia @
        Если что Qraizer подтвердит что они регулярно проверяют Линукс на безопасность.
        Не, ну не вот так прям. Если это потребуется по контракту, то да, но это не будет Линукс в полном смысле этого слова, это будет некий конкретный фрагмент кода, который... скажем так, летает. И проверятся он будет не на сферически определённые свойства, а конкретно и чётко заявленные формальные критерии. Это не та деятельность, которая обычно подразумевается под "проверкой на" в обиходе.

        Добавлено
        Цитата D_KEY @
        Если код не меняется, то тогда понятно.
        Ну а зачем? Он работает. Когда перестанет, тогда им и займутся, не факт, что я.

        Добавлено
        Цитата D_KEY @
        Это не конкретный пример, а выдуманная тобой история, при чем я подозреваю, что ты не являешься человеком, который занимается этими вопросами
        Ойфсё. Ну серьёзно, не надо рассказывать, что в OpenSource нет процедур ревью и что любой может всё. Даже никогда не сталкивавшемуся с тамошними процедурами кодеру-вчерашнему школьнику будет ясно, что так оно работать не может.

        Добавлено
        Цитата D_KEY @
        Ну можно, наверное
        Попробую. Прикинул счас, написать много придётся. Иначе завалят, мол, архитектура говно, надо было иначе всё делать.
        Сообщение отредактировано: Qraizer -
          Есть большая железяка. Точнее, две, полнократное дублирование, как бы. Она большая не по размерам, внутри она состоит из 8-ми пар различных вычислителей, занимающихся каждый своей частью задачи. Для неё был создан испытательный стенд на базе ПК под виндой. Он обвешан железом с проприетарными дровами, через которые ПК "командует" этой железкой и принимает от неё результаты. Задействованы все мыслимые каналы передачи, от банального UART до отраслевого ARINC. ПК по сети связан с другим ПК, где крутится модель. Модель с точностью двух сигм имитирует поведение борта, по сути в реальном времени интегрирует несколько десятков диффур. От неё по сети приходят данные для железки и в неё же отправляются результаты от железки. В обмене информацией задействованы в общей сложности не одна тысяча сигналов. В итоге железка пребывает в полной уверенности, что она на борту, а борт в режиме эксплуатации.
          Есть тестовое окружения на базе среды RTRT. Модульные тесты покрывают весь функционал железки, их нынче несколько тысяч и это ещё не конец. Моя задача (увы, далеко не единственная, и не всегда самая приоритетная) с осени и по сей день заключается в том, чтобы обеспечить возможность на этом тестовом окружении в условиях отсутствия модели имитировать её, чтобы закрыть пункт интеграционного тестирования железки. Точности не требуется от слова вообще, она должна лишь прикинуться моделью, чтобы тесты могли подавать тестовые воздействия согласно требованиям и оценивать их итоги согласно требованиям же. Тестовое окружение универсально и тоже полагается на сетевое взаимодействие. Только это совершенно другие протоколы. И к тому же работающие совсем в другой сети, в другом городе с доступом к стенду по VPN. У нас нет лицензий на их проприетарные железяки с дровами, у них есть. У них нет лицензий на RTRT, у нас есть. В общем, всё сложно.
          Их сетевой протокол простой: обмен датаграммами по UDP максимально часто. Наш сетевой протокол сложнее: простой динамический аналог DNS без привязки адресов и маршрутизация между узлами сети пакетов данных, а уже на пакетах можно реализовать любой протокол. Т.е. фактически можно использовать среду RTRT как транспорт. Формально это просто маршрутизация трафика с адресацией по имени узла. Ну и да, там TCP. Формально, такие маршрутизаторы могут регистрироваться друг у друга и тоже выступать как потребители услуг транспортного протокола, т.с. строя сложные топологии, включая даже работу через разные физические среды приёма/передачи, но пока этого не требовалось.
          В итоге математика примерно такая. В нашей сети есть ПК, на котором поднят VPN и работает сервер транспорта. Наш инженер где-то в нашей сети запускает тест на исполнение. Стартует виртуальный тестер, ищет сервер транспорта, регистрируется у него и т.о. получает возможность взаимодействовать с любым другим зарегистрировавшимся узлом. Одним из таковых является транслятор протоколов, который запущен на той стороне VPN и тоже зарегистрировавшийся как некий виртуальный тестер. Тест упаковывает (точнее это делают комона, у тестов простой и удобный API для этого) протокол взаимодействия с железкой в пакеты и посредством транспорта отправляет транслятору протоколов. Тот посредством маршрутизации через сервер проходит через VPN и принимается транслятором уже в той сети. Транслятор его... внезапно... транслирует из нашего протокола в протокол модели со стендом, ну, UDP который, и т.с. осуществляет воздействие на стенд. Как оно там дальше, нам уже не интересно, однозначно лишь, что результаты от железки проходят весь этот путь в обратном порядке до теста. Все лицензии по порядке, реал-тайм где надо выдержан, никто под несвоё ничего не адаптирует, все счастливы.
          Сообщение отредактировано: Qraizer -
            Цитата D_KEY @
            Не знаю в каком мире ты существуешь, но сейчас без интернета в принципе тяжело будет работать.

            Для документации интернет не нужен, если документациия нормальная, счас таких почти не осталось.
            Ты в черных ящиках работал или банках ? там его нет, и это не проблема, без трепа на форуме можно и обойтись,
            или зайти мобилы если сильно хочеться. Или пойти на другой комп где интернет есть,

            Добавлено
            Цитата D_KEY @
            Цитата sergioK @
            В внутри IDE баг в рализации гита, merge стирает мои файлы, потерял три дня,
            кто за такое отвечаеть должен ?

            А можно пруф какой-то? А то еще ведь могут быть виноваты кривые руки ;)
            Кстати, если бы ты чаще заливал свои изменения на сервера компании, то всем было бы проще. Не понимаю людей, который хотя бы раз в день это не делают.
            Я почти все существенные измения в ветке сразу пушу.

            Я тоже пушу, тут днем понадобилось,
            пруф простой в Intelij есть опция Rebase, и он сделал мне 4 мерджа, решив что раз их в головной ветке
            нет, то у меня стоит удалить, сделал половину работы и завис, пришлось из терминала абортить,
            это как нормально? Из терминала все работает без проблем, а как тебе баг в орен сорсе , там строиться SQL
            так вот стоиться он наполовину, в купленном софте такое не возможно, а в орен без проблем,
            А ведь в продакшене случись , ну рак бы не обнаружили вовремя, подумашь мелочь, и никто не отвечает,

            Добавлено
            Цитата D_KEY @
            По-моему это как раз неудобно. Ну сделай сам себе chm на основе документации из интернета. Для тебя это проблема?

            Да сделал уже давно, только многие не могут, или не знают,
              Вопрос как раз в этом самом трансляторе. В идле он просто ожидает какого-либо события. Это может быть:
              • входящий запрос от виртуального тестера из нашей сети;
              • входящий запрос от стенда из своей сети;
              • консольный запрос от оператора тестового окружения.
              Ну да, простая консолька у него тоже есть, надо ж как-то отлаживать тесты и просто изучать поведение железки. Как-никак в ней 20 процессоров и у всех свои законы поведения. Одной только математики в PDF на три мега, и это не считая всей железно-протокольной обвязки. Из-за асинхронности всех событий он обвешан нитками, которые к тому же ещё и взаимодействуют друг с другом: консоль с UDP, UDP с консолью, TCP с UDP, UDP с TCP, консоль с ТCP и UDP. Нужно уметь опрашивать сокеты и очередь событий. Нужно отвечать на события с сохранением инвариантов протокола, чтоб не путать, кому что. И это непросто, учитывая общую асинхронность системы стенд/тестер. Нужно элементарно уметь завершать работу по запросу и уметь реагировать на сетевые сбои. Код новый? Новый. Применим std? Почему бы и нет. Да и внезапный ( :D ) перекос политик кампаний в сторону открытых архитектур никто не отменял. Применил.
              Сокеты умеют таймауты только на select(), а без таймаутов беда, ибо пока, скажем, виртуальный тестер не отзовётся, обслужить запрос от UDP-нитки будет невозможно. Есть условные переменные, которым в довесок подавай мютексы и лямбды, да ещё и соизволь сам нотифить ими в нужные моменты. Хочешь завершить работу, дождись джойнов от всех ниток, иначе хрен тебе в журналах аудита от эксепшнов. В итоге код управления потоками представляет собой жуткий винегрет. На каждую переменную по мьютексу и паре лямбд опроса и установки. Всё это надо захватывать из контекста или передавать параметрами, иначе оно должно валяться прямо в глобальном скопе и закардорджено. И не забывать после смены состояния переменой нотифи кидать, за тебя тебе этого никто не напомнит. Рабочий цикл каждой нитки состоит из отдельных опросов "своего" сокета и каждой из переменных с конкретными лямбдами. При ошибках эксептишь себе в catch, чтобы корректно завершиться, где опять же не забудь изменить состояние и отнотифицироваться, а если таковое случится во время обслуживания запроса от другой нитки, а не стенда или виртуального тестера, то там тоже нужно предусмотреть код корректной реакции на сие.
              Все эти активити вполне формальны и моим вторым желанием (после первого – забить) было оформить всё красиво. В кулуарах я сделал класс над переменными и все кишки упрятал туда. Стало лучше, если не глядеть во внутрь класса. Чего не удалось, так это упрятать формализм опроса/установки/сброса, там что от лямбд избавиться не получилось, но стало хотя бы приемлемо пользовать. И тут вдруг меня осенило полиморфизмом. На скорую руку я сварганил стратегии а-ля Александреску, и внезапно на этом метаклассе я понял, что условных переменных снаружи не осталось. Так я лишний раз убедился, что условные переменные в этой задаче в общем-то и не нужны, а их наличие является лишь следствием того, что std непродуман и слишком сырой. Ибо всё вот это вот, если делать по-хорошему, а не с кишками наружу, всё равно придётся делать из раза в раз по одной и той же схеме.
              Единственное, чего ещё не хватало для полного счастья, это возможности создавать композиции таких объектов. Мне оно было не надо, но за пару перекуров я набросал в голове, как бы это сделал. И вот совсем уж внезапно вдруг неожиданно для себя прям вот снег на голову (шутки шутками, но реально, я чуть не поперхнулся дымом, когда осознал) у меня получилось ...WinAPI. Не, конечно реализовано там всё по-другому, но внешне архитектура точь в точь. Морали не будет. Пусть каждый делает выводы сам. Я свои озвучил выше.
                Цитата D_KEY @
                Но я не очень понимаю, что тебе не хватает в документации по gcc, например?

                Внятных примеров и разьяснений, Я не большой спец в С/С++
                Вот таже студия мелкосовта в 2000 все разьясняла, счас хуже,
                ибо модель другая, по выкакиванию денег, Остан Бендер нервно курит в сторонке, ;)
                  Цитата sergioK @
                  Цитата D_KEY @
                  Но я не очень понимаю, что тебе не хватает в документации по gcc, например?

                  Внятных примеров и разьяснений, Я не большой спец в С/С++

                  cppreference
                  isocpp

                  Цитата
                  Вот таже студия мелкосовта в 2000 все разьясняла

                  Студия - это IDE, gcc - компилятор

                  Добавлено
                  Qraizer, спасибо за столь подробный пример. Позже прочту и вникну, возможно даже не завтра :)
                  Сообщение отредактировано: D_KEY -
                    Qraizer, спасибо за столь объемное изложение, в общем как будет время, внимательно перечитаю и отвечу.
                    ЗЫ: мой вопрос про очередь ты проигнорировал сознательно или не заметил?
                      Навскидку кажется, что стоит подумать над идей, что конкурентность и параллельность не одно и то же. Плюс еще для асинхронности нужны не потоки, а средства асинхронности или её имитации. В винде в сторону iocp посмотреть, в линухе epoll и вот новый io_uring. Ну а в нормальных условиях asio. Плюс еще возможно сопрограммы помогут.

                      Если я сейчас херню пишу не в тему, то не ругайся, я совсем бегло прочел :)

                      Добавлено
                      Цитата sergioK @
                      пруф простой в Intelij есть опция Rebase, и он сделал мне 4 мерджа, решив что раз их в головной ветке
                      нет, то у меня стоит удалить, сделал половину работы и завис, пришлось из терминала абортить,
                      это как нормально?

                      Не очень тебя понял. Но разве это не баг в купленной intelij? :)
                        Цитата Qraizer @
                        Вот нашли уязвимость. Надо исправлять. У открытого кода ...э-э-э, код открыт, исправить может любой компетентный. Прилетает фикс от Васи Пупкина. И? Неужто его похлопают по плечу и вмержат? Танунафик, его скорее всего не заметят, а в лучшем случае будут ревьюить и скорее всего ревью фикс завалит, на что будет куча причин, от несоответствия стандартам кодирования до неуниверсальности. Чтобы всё прошло без сучка без задоринки, фикс должен быть от The Vasya pup King, но всё равно через ревью. И чем это отличается от уязвимости в закрытом коде? Там код открыт конкретным людям, все они The и почти наверняка компетентны.
                        Откуда такое представление об открытом коде? :blink:
                        Окей, не Васи Пупкина, а Дмитрия Барышкова взяли да приняли. Особо не спорили :-?
                        Разница открытого кода не в том, что им занимаются компетентные люди из разных контор (при условии, что проект важный, конечно). Ври например если посмотреть на список уязвимостей того же линукса (ссылка) - фиксы то IBM, Oracle, RedHat и того же Дмитрия. И да, в таких проектах высокие стандарты качества, которые к тому же находятся под строгим присмотром сотен других компетеных людей: просто так закостылить будет тяжело: либо морально, либо физически - но тяжело. И при таком сообществе шансы таки получить фикс в максимально короткий срок значительно выше.

                        У меня личный пример был относительно недавно: в Firefox - я пришел в чатик (кстати в неправильный) с вопросом мол хочу сделать вот такую штуку. И вот как-то, никто никуда меня не послал и развернуть не пытались: указали нужный чат, в чате навели на правильных людей, те вникли в суть подсказали как правильнее сделать (притом, что область оказалась новой для всех), и как вписать это в исходники, как подойти к вопросу ревью. Вот ни на одном этапе не чувствовалось, что пытаюстся "завалить". Это кстати, всё было как-раз во время новости про большие сокращения в Mozilla, но всё-равно сообщество было максимально дружелюбно.

                        Аналогичный подход я наблюдаю и в других проектах. Конечно, первый подход к фиксу в большом проекте вряд-ли будет без "сучков", но на моём опыте сообщество обычно поддерживает, а не гнобит :) Хотелось бы на этом форуме такого же, конечно, ну да ладно
                        Сообщение отредактировано: negram -
                          Цитата shm @
                          Перевожу: да, у нас куча багов в рантайме, но фиксить пока не будем, т. к. бинарная совместимость для нас важнее.

                          Я весь тред не читал, мне это не интересно, я просто смотрю статус - Fixed, в отличии от GCC.
                          Сообщение отредактировано: Wound -
                            Нет у компилей багов, если нормально проги писать. Не используйте экзотические конструкции. Сами в них запутаетесь.

                            Добавлено
                            Цитата Qraizer @
                            В итоге железка пребывает в полной уверенности, что она на борту, а борт в режиме эксплуатации.

                            Матрица, блин.
                              Цитата D_KEY @
                              Не очень тебя понял. Но разве это не баг в купленной intelij? :)

                              Баг, и за него никто не отвечает, а отвечать должны, это то что Я пытаюсь сказал,
                              и не только в Идее,

                              Добавлено
                              Цитата D_KEY @
                              Цитата sergioK @
                              Цитата D_KEY @
                              Но я не очень понимаю, что тебе не хватает в документации по gcc, например?

                              Внятных примеров и разьяснений, Я не большой спец в С/С++

                              cppreference
                              isocpp

                              Дак в гугле Я сам искать умею, ты не вьезжаешь в то о чем я говорю ;)

                              Добавлено
                              Цитата D_KEY @
                              Цитата
                              Вот таже студия мелкосовта в 2000 все разьясняла

                              Студия - это IDE, gcc - компилятор

                              Это Я знаю, я говорю о примерах документации разного уровня,
                              люди по MSDN с нулю осваивали целые темы, счас такое отсутсвует.
                              бесплатная жава дает вообще пародию на документацию, это цена бесплатности.
                              Сообщение отредактировано: sergioK -
                                Цитата sergioK @
                                Цитата D_KEY @
                                Не очень тебя понял. Но разве это не баг в купленной intelij? :)

                                Баг, и за него никто не отвечает, а отвечать должны, это то что Я пытаюсь сказал,
                                и не только в Идее

                                Так при чем тут open source? Ты меня запутал. Ты же (компания твоя) купил идею? Почему jet brains не отвечает?
                                Ты зарепортил баг-то?

                                Добавлено
                                Цитата sergioK @
                                бесплатная жава дает вообще пародию на документацию, это цена бесплатности.

                                Я не вижу никакой логики в твоих словах. Просто сейчас вся документация в онлайн уехала :-?

                                Добавлено
                                Цитата sergioK @
                                ты не вьезжаешь в то о чем я говорю ;)

                                Есть такое. Я не понимаю, чем тебя не устраивает онлайн документация в 2021 году. И не понимаю, при чем тут бесплатность.
                                Сообщение отредактировано: D_KEY -
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0670 ]   [ 14 queries used ]   [ Generated: 30.07.21, 18:05 GMT ]