В Toxcore, эталонной реализации P2P-протокола обмена сообщениями Tox, выявлена уязвимость (CVE-2021-44847), которая потенциально позволяет инициировать выполнение кода при обработке специально оформленного UDP-пакета. Уязвимости подвержены все пользователи приложений на базе Toxcore, в которых не отключён транспорт UDP. Для атаки достаточно отправить UDP-пакет, зная IP-адрес, сетевой порт и открытый DHT-ключ жертвы (данные сведения доступны публично в DHT, т.е. атака могла быть совершена на любого пользователя или узел DHT)...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=56354
Юху, еще один буфер переполнился!
Но эти еще и дефайнами пользоваться не умеют...
Нормальные люди дефайнами вместо енамов никогда не пользуются.Если в проекте написано
#define ABCDF_A 1
#define ABCDF_B 2значит в проекте код - говнокод, а у его авторов - ретроградное си головного мозга. От таких проектов и их авторов нормальные люди подальше держатся.
Нормальные люди сишкой никогда не пользуются.
Я и говорю. Нет причин не использовать C++ и Rust вместо сишки.
+1 и при использовании C++ если производительность не критична нужно использовать умные smart pointer.
> умные smart pointerВ этом ITT треде...
> Я и говорю. Нет причин не использовать C++ и Rust вместо сишки.Крутые програмисты форумных коментов, где же ваши комиты? Там рядом и на расте версия есть, только желающих ее на этом прогать почему-то мизер. Как и софт вокруг.
хоть один язык, который стоит ближе к машинному коду кроме [macro]ассемблера, форта ???
Те же плюсы, являясь фактически надмнодеством Си - никак не дальше, что прекрасно видно в эмбеде последние несколько лет, где с Си на них массово бегут. Но при этом позволёют запросто защититься от подобной чепухи.Впрочем, зачем toxcore быть "ближе к железу" - отдельный вопрос.
На С++ бегут неосиляторы процедурных алгоритмов. Чистая Сишка божественна, Rust и С++ отстой.
На Сишку перебегают неосиляторы ассемблера. А на ассемблер бегут неосиляторы машинного кода.
> На Сишку перебегают неосиляторы ассемблера.за..вает знаете ли . ниасиляторы, простите нас
> На Сишку перебегают неосиляторы ассемблера. А на ассемблер бегут неосиляторы машинного кода.Даже колибридос в конце концов - задолбался, и столкнувшись с идеей перепсать i386 на x64 с ноля что-то приуныли. Уже и какой-то эрзац си сделали.
> Те же плюсы, являясь фактически надмнодеством Си - никак не дальше, что
> прекрасно видно в эмбеде последние несколько лет, где с Си на
> них массово бегут. Но при этом позволёют запросто защититься от подобной чепухи.Тойоту себе купи, не апдейченую. Сможешь на себе ощутить все прелести такого эмбеда.
> Впрочем, зачем toxcore быть "ближе к железу" - отдельный вопрос.
Плюсы видите ли не интероперабельны со всем остальным.
вот мы и до́жЫли
нормальные это кто? и чем они пользуются?
Вы в /use/include давно заглядывали?
> Нормальные люди дефайнами вместо енамов никогда не пользуются.Не все так просто. У тех и других свои особенности. Но фокус не в том, а в том что в макросах параметры надо в скобки помещать. Эти умники узнали про это сложным способом. Впрочем, узнал всего лишь asan, поймавший баг, так что это не атака и вообще неизвестно можно ли код выполнить.
А так есть варианты на растишке и хаскеле, только ими никто особо не пользуется и их баги еще ждут своих героев.
> Юху, еще один буфер переполнился!А я смотрю у растоманов совсем проблема с памятью. И даже раст не спасает. Действительно таки течёт.
Пол года не прошло с шумихи про сегфолт при неправильной работе с памятью в RUST!
А у меня распечатка до сих пор висит на стене позора.
А, ну да. Это другое. Как я мог забыть?
>> Юху, еще один буфер переполнился!
> А я смотрю у растоманов совсем проблема с памятью. И даже раст не спасает. Действительно таки течёт.
> Пол года не прошло с шумихи про сегфолт при неправильной работе с
> памятью в RUST!
> А у меня распечатка до сих пор висит на стене позора.Еще один Воен вышел на эпическую Битву против полчищ злобных (и почти совсем не воображаемых) Растоманов! Держись и не сдавайся! Мы верим в тебя!
Ура славному Воену! Ура!
-
Великий гнев Анонима охватил,
И пыл его с каждым выбросом метана разрастался,
Он за поруганную участь Сишки мстил,
И против полчищ в̶о̶о̶б̶р̶а̶ж̶а̶е̶м̶ы̶х̶ Злобных Растоманов сра(ж̶а̶)лся!Мощнейший вспук, газ на расправу скор,
Но Растаманы отбивают нападенье!
Он, аноним — защитник Сишных Лор,
А Злобный Растоман — хранит Смузийское Ученье!Так Сишко-Воен с Растоманом в̶о̶о̶б̶р̶а̶ж̶а̶е̶м̶ы̶м в бою сошлись,
И бьются в тучах кала, ввысь летящих!
Сверкает голый Анонима зад, красен,
Пукан мощён и раскалён.
И участь неизбежная грозит
Немедля увидать владыку ада,
Тому, кто мощный пук не отразит
Надев противогаз не так, как надо!Но веру Анонимный Воен в свой пукан имел
И полагал, что Растоманский Враг ему не равен,
И трудно разобраться - кому его пукан Песнь Смертную пропел,
А кто в смертельной схватке был лишь тяжело отравлен!
Мусорные комментарии про дырени и переписывание через 3... 2...
Сишные. Дырени.
Где? ни одной нет. В отличии от rust.
Прямо как в венде. Лишнее подтверждение, что хипстерские мессенджеры зло.
Не, в венде вообще мрак.
> Не, в венде вообще мрак.Венде не нужна
У меня в телефоне стоит Ватсап
Отличный программа для хороший голова
> У меня в телефоне стоит Ватсап
> Отличный программа для хороший головаДля тех, кому есть дело до "за лужей": whatsapp == facebook -> nsa.
Для тех, кому есть дело до "здеся": и его тоже уполномоченные органы читают при необходимости.
Выкидывайте эту каку ;-)
Какой посоветуешь децентрализованный мессенджер с аудио и видео? Трепаться то каждый может.
retroshare
RetroShare хотят переименовать в ПамятьТечетТакЧтоНиагарскийВодопадСосетВСторонке
Пару лет уже как пофикшены основные утечки, ты отстал от жизни.
> Какой посоветуешь децентрализованный мессенджер с аудио и видео?Jami.
>> Какой посоветуешь децентрализованный мессенджер с аудио и видео?
> Jami.Пробовал, ещё когда он был ring, работал хуже riot'а, но лучше tox'а. Посмотрю, мб что поменялось.
mutt.
Следом за rtorrent'ом?
С почтой которую чиитают вообще все, а половина еще и заблокировать норовит?
Matrix. Хоть он и федеративный (лучше, чем централизованное, но всё же не p2p)
Федеративный меня бы устроило.
Из всего что я тестировал (tox, ring (потом и jami)) он был лучший (как миниум пару лет назад), но все равно в нем было много проблем:
сообщения иногда не доходили до собеседника
для видео использует jitsy соответственно никакой фильтрации шумов и эха, фактически на смартфоне разговаривать невозможно без наушников у обоих сторон
официальное приложение на андройде было сырое и чтобы оно работало нужно было сделать неочевидные вещи (точно не помню)
в официальном сервере подключить свой STUN-TURN сервер не удалось, банально не работал, без этого шел на забугорные сервера с соответствующим качеством связи
неофициальные клиенты на андройде были еще более сырые (кажется в видео они в принципе не могли)
Так что он скорее не работал чем работал и перетащить собеседников в него не вышло
С murmur (централизованный, но selfhosted) все было гораздо проще, но тоже нет подавления эха в клиенте под андройд
Проблема федераций в том что потом приходит какой-нибудь гугл и выносит половину контактлиста отключив свой сервер от федерации.
Рекомендую тебе неуловимого Джо.
формула старше, чем этот косячный мир бай дизайн: хочешь сделать хорошо -- сделай сам.
> Рекомендую тебе неуловимого Джо.
> формула старше, чем этот косячный мир бай дизайн: хочешь сделать хорошо --
> сделай сам.Тоже к этому пришёл. Останавливает необходимость собеседников в андройд клиенте, а я клепать на него категорически не собираюсь.
> Тоже к этому пришёл. Останавливает необходимость собеседников в андройд клиенте, а я
> клепать на него категорически не собираюсь.Зачем тебе андроид? В браузере слепить чат не судьба?
Его роскомнадзор забанит через 15 минут. И будет он иноагентом.
> Его роскомнадзор забанит через 15 минут. И будет он иноагентом.А если приложение будет в магазине -- его забанит роскомнадзор и будет он инагентом. Разница в 20 баксах.
Получив 20 баксов от американской корпорации он в этом списке застрянет на три поколения.
> Получив 20 баксов от американской корпорации он в этом списке застрянет на
> три поколения.Ты плохо думаешь о Роскомнадзоре. Руководитель этой организации получает пяток лямов. Ему на твои 20 баксов с прибором по углу и по азимуту. Более того, заблокировать очень выгодно: ты конкретно 20 баксами не обойдёшься. Ты занесёшь гораздо больше. И это понимают сотрудники и Роскомнадзора, и все
те, кому надо.Блокировка -- это абсолютно рыночный метод регулирования на ровном месте, когда у регулятора есть желание поднять бабла, но нет ничего кроме репрессивного аппарата, который никто не может остановить.
Я думаю что роскомнадзору лично я могу занести только дырку от бублика. Я не ориентируюсь на российские рынки, у меня нет доменов и серверов в рф, так что мне абсолютно класть что они там будут делать.А с точки зрения рынка россияне геморройный и проблемный рынок, при том - мелкий и безденежный. Так что париться этим будет пара самых жирных корпов, и те кто лоханулся с ориентацией на рынки, как яндекс.
>хипстерские мессенджеры злоГде же там хипстеры в этом протоколе? Хипстеры, они в Телеге.
В очередной раз неуправляемые языки показали все свои недостатки
О, знаю я такие управляемые языки. NodeJS и npn. Python и pip. Не волнуйся, Rust и карго ждёт то-же самое. А может и нет, всё равно ничего на rust нету. Одно блаблабла
Растаманы уже заваливали FF, тупо перепутав больше-меньше при ручной валидации индекса массива.
Нашли что с чем сравнивать. Python и NodeJS наоборот давили на не строгость, динамичность, мягкость и высокий уровень абстрагирования. Rust же -- самый строгий язык, из всех, что я знаю на практике. Он давит лишь на валилируемость кода.
О строгости раста можно прочитать прямо в их документации на unsafe. Там весьма занимательное чтиво, а без unsafe далеко не уедешь. Впрочем для ценителей - есть и вариант этого на растишке. Он урезаный в возможностях и вечно отстает, потому что прогать на этих закорючках - не на форуме трындеть, так что им мало что пользуется. Но если надо - есть. Есть даже на хаскеле, но это для самых стойких.
Об особенностях макросов написано в первом параграфе документации про макросы, если люди не читают документацию они и по управляемым языкам не будут читать и будут делать ошибки как в соседней теме про выполнение кода из java логов.
Ты что? какая документация? не надо никакие параграфы читать, там многа страшных букаф. Может переполнение случится. Надо просто писать на rust, а там можно ничего не читать. Именно поэтому у нас до сих пор ничего не работает. Но нам и не надо. Главное кричать мантру про rust и терпеливо ждать. А ведь всем известно, кто верит и ждёт - всегда дождётся. Вопрос чего....
Я считаю, что здесь проявилась не столько проблема неуправляемости, сколько проблема невменяемости того, что сишники называют макросами.
Справедливости ради - макросы в таком виде (текстовая замена в препроцессоре) идут с (макро)ассемблера.
тут проблема даже не с макросами, а в банальной арифметике
Внезапно, человек иногда допускает ошибки. Нет ни одного человека, который не допускал бы ошибки (даже арифметические). Поэтому важно перепроверить за человеком всё ли обладает самосогласованностью (очень желательно ДО запуска приложения).
> Внезапно, человек иногда допускает ошибки. Нет ни одного человека, который не допускал
> бы ошибки (даже арифметические). Поэтому важно перепроверить за человеком всё ли
> обладает самосогласованностью (очень желательно ДО запуска приложения).согласен, так и должно быть, а возмущения вызывает даже не ошибка в арифметических действиях, а то, что она там с 2017 года как подсказали в коментах (не точно).
> тут проблема даже не с макросами, а в банальной арифметикеУ них именно глупая ошибка в макросах, параметры скобками советуют выделять вот именно поэтому: исправление свелось к скобкам в макро. Логика была бы правильной, если бы не приоритет операций.
> Справедливости ради - макросы в таком виде (текстовая замена в препроцессоре) идут с (макро)ассемблера.В котором с ними гораздо меньше "неявных" проблем из-за гораздо более простого языкового формата вида "мнемоник-оператор (операнд)*".
Програмить на макроассемблере желающих так то тоже сильно меньше.
>> <(исторически) хорошее решение для намного более простого языка - может, внезапно, оказаться граблегенератором для более сложных>
> Програмить на макроассемблере желающих так то тоже сильно меньше.А в огороде бузина?
Сам топи урановые ломы в ртути!
Даже немного смешно, что проект в таким пафосным описанием "...aimed at making security and privacy..." была допущена настолько банальная ошибка. И прожила она в нем с 5 июня 2017 (0.1.9) до 7 декабря 2021 (0.2.12). Еще чуть-чуть и пошла бы в первый класс.
А результат - удаленное выполнение кода как результат. Просто прелестно.
Да, жесть полная.
RCE не подтверждено, оно допускается, но не доказано.
Ибо нечего связываться с дырявой сишкой, когда делаешь что-то секурное
..., а нужно связываться с?...
С идрисом или с агдой.С хаскелем в светлом будущем с -XDependent тоже можно.
А там есть и хаскел и раст. Только они как неуловимый джо, их все рекламировать горазды, но прогармит на этом все-таки пусть кто-нибудь другой :)
Я на одном из них програмлю. Зачем кто-то другой, когда самому приятно?
> Я на одном из них програмлю. Зачем кто-то другой, когда самому приятно?Ну так у вон тех оно есть. Можешь поупражняться, вдруг зайдет?
Сишная версия популярнее всего потому что прикручивается к чему угодно, в общем то. На расте так не то чтобы совсем нельзя, но это ж ганрантировано unsafe. И за что боролись? За хаскель вам наверное виднее.
В каком конкретно месте дыры в Си?
Дыры у программиста и в чужих библиотеках.Хотя, есть и немало случаев, когда инструмент не оптимален для какой то задачи, избыточен, или сложен для использования имеющимися кадрами.
Тут как с оружием, умеешь обращаться - молодец, а нет, то на вот тебе водяной пистолетик, что б не убился.
Для войны не годен водяной пистолет, даже против противника с водяными пистолетами.
Для тира в парке не безопасно боевое оружие. (Хотя раньше такие тиры были!)
С оружием такое дело, есть много людей которые не застрелили себя на смерть, много таких что максимум прострелили себе ногу, и ещё больше таких которые вообще не калечились оружием никак.
В отличии от сишечки, на которой вы не найдёте ни одной популярной программы/библиотеки без 0дней дырени в истории.
(спокойно так) А если найду?
> (спокойно так) А если найду?Я конечно писал гиперболой.
Будет интересно посмотреть на этот код, и узнать о подходе к разработке который позволил этого добиться.
Я присоединяюсь к просьбе выше: найди. Было бы интересно посмотреть. Ну или хотя бы знать, что такой код на C существует.
Всегда можно какую-нибудь маленькую примитивную программу (вроде cat-а) привести в пример. Вряд ли будет интересный ответ :)
Можно, но это чистой воды чит будет, а не серьезный ответ. Причём, это будет понимать даже шигорен.
А в cat не было багов?
> А в cat не было багов?У него и опций уже с десяток. А баги не только сишники делают, log4j подтвердит. И CVE на растовый софт, а они что, особые? Если писать софт то и CVE будут.
>> А в cat не было багов?
> У него и опций уже с десяток. А баги не только сишники
> делаютДык ты можешь привести пример сишной "популярной программы/библиотеки без 0дней дырени в истории" или нет?
> log4j подтвердит.
О, они чуть-ли не тьюринг-полный рантайм шаблонизатор запилили с сознательно заложенной возможностью запуска произвольного кода. Они бы ещё rm -rf /* сделали бы. Это настолько за пределами разумного, что это почти уже не баг, а злоумышленный бекдор.
То есть, в принципе засовывать пользовательские данные в шаблон -- это класть себе под ноги грабли, которые затем надо очень внимательно и аккуратно обходить. Баги типа "injection" -- это довольно распространённый класс багов. Но ежели ты не просто подставляешь значения, и тьюринг-полный язык делаешь для форматной строки, то ты можешь считать, что ты уже выстрелил себе в ногу, и если нога этого ещё не чувствует, то лишь потому что скорость движения пули ограничена, равно как и скорость распространения сигналов по нервной системе.
> И CVE на растовый софт, а они что, особые?
Да. Пойти и посчитай количество проблем с памятью у растового софта. Или чуть шире: количество багов, которые при эксплуатации могут дать что-то, кроме DoS, вызванного падением процесса в полуконтролируемом формате.
Если ты возьмёшь две рандомизированные выборки CVE -- одну C'шную, а другую Rust'овую, то даже если оттуда кто-нибудь эти выбранные описания багов "анонимизирует", то есть перепишет так, чтобы суть бага осталась бы, а всё, что позволяет идентифицировать язык было бы удалено, то ты всё равно сможешь сказать, какая из этих выборок сишная, а какая растовая.
Ты даже можешь попросить эти выборки "анонимизировать" ещё сильнее, оставить лишь потенциал для эксплуатации даваемый багом -- DoS, DDoS, OOM, arbitrary code execution, -- и по этой очень обрывочной информации сказать какая выборка была создана на основании растовых CVE, а какая -- на основании сишных.
То есть -- да, CVE на растовый софт особые.
> Дык ты можешь привести пример сишной "популярной программы/библиотеки без 0дней дырени
> в истории" или нет?Так сходу - нет, потому что не задавался вопросом. А примеры популярных программ и библиотек на расте вообще еще поискать.
> Они бы ещё rm -rf /* сделали бы.
Это за них сделали в bumblebee. На баше, вроде, чем он так уж хуже? На нем же и RCE под рутом через DHCP сервер влепили. Тоже почти как бэкдор, хотя реально пихание непровереных данных куда попало без понимания последствий. А специальные значения - это так удобно. Пока их не начинает присылать сеть.
> потому что скорость движения пули ограничена, равно как и скорость распространения
> сигналов по нервной системе.Верования что от всего спасет безопасный рантайм как-то способствует отключения у кодера мозга. За него же подумали другие. Или нет?
> Да. Пойти и посчитай количество проблем с памятью у растового софта.
Как ни странно, даже такое есть. Так то в расте и нормальные идеи есть, но реализация получилась странной, а гайд по unsafe напоминает проблемы си, вид в профишь. Только еще яп в 20 раз сложнее и синтаксис костылями облепили. А все-равно не хватило для линукскернела, еще два самосвала костылей.
> Или чуть шире: количество багов, которые при эксплуатации могут дать что-то, кроме
> DoS, вызванного падением процесса в полуконтролируемом формате.Это про растовский panic? А что, DoS вполне себе атака. Алсо раст
> сможешь сказать, какая из этих выборок сишная, а какая растовая.
Пожалуй. Но это в основном потому что на сях кодить начали в других реалиях.
> То есть -- да, CVE на растовый софт особые.
Так то они наверное на каждый яп со своим колоритом. На сях например eval() так просто не сделаешь. Или репы контролируемые майкрософтом, амазоном и гуглом - тоже безопасно смотрится, в плане контроля над окружением. Недоверяемыми субъектами.
>> Дык ты можешь привести пример сишной "популярной программы/библиотеки без 0дней дырени
>> в истории" или нет?
> Так сходу - нет, потому что не задавался вопросом.А я задавался. Не искал, но задавался. И я не видел ни одной не дырявой.
> А примеры популярных программ и библиотек на расте вообще еще поискать.
Ну да, давай будем стрелки переводить.
> Верования что от всего спасет безопасный рантайм как-то способствует отключения у кодера
> мозга. За него же подумали другие. Или нет?И вот это тоже ничётак -- воевать с соломенным чучелом. Ты знаешь хоть одного кодера, кто верит в то что безопасный рантайм спасёт от всего? Или хоть одного кодера, у кого мозги отключились от перехода с C на что-то высокоуровневое? Я не знаю ни одного. Ты воюешь против несуществующего явления, которое изобрёл сам, специально для того, чтобы победить хоть кого-то. Хотя бы соломенное чучело, созданное специально таким образом, чтобы даже ты мог бы его разгромить аргументацией.
> А я задавался. Не искал, но задавался. И я не видел ни одной не дырявой.А на каком ассортименте это вообще изучалось? И как с другими сравнивалось? И еще, для новоязов вообще статический анализ и понимание их проблем как правило не развиты.
> Ну да, давай будем стрелки переводить.
Я гайд на unsafe раст почитал и не понял чем это принципиально от сей отличается. Примерно те же проблемы. А без unsafe он вообще чего может? К другим ЯП интерфейсить - unsafe. Системные либы? Unsafe. Cисколы? Unsafe. Стандартные либы раста? Unsafe везде. Их боги пишут, они не ошибаются? А точно, в таких горах кода, перепахиваемых с такой скоростью? Или их просто анализировать никому неохота, какой толк с анализа если через неделю все перетрясли?
> И вот это тоже ничётак -- воевать с соломенным чучелом. Ты знаешь
> хоть одного кодера, кто верит в то что безопасный рантайм спасёт от всего?Судя по коментам их тут орда. Хотя по растовой версии сабжа и не скажешь, довольно дохлая.
> Или хоть одного кодера, у кого мозги отключились от перехода с C на что-то высокоуровневое?
Вот именно сишные кодеры как-то не очень на раст рвутся. У сей плюс в том что они относительно простые, отсутвие высокоуровневых наворотов позволяет легко и быстро въехать в чужой проект. А когда там концепции и абстракции уже упс, номер не катит. Запатчить за 10 минут то что напрягало? СЕЙЧАС! Сперва пару дней в стиль мышления кодера извольте. А оно надо? Я хотел исправить то и это а не изучать полет мысли какого-то чудака.
> Я не знаю ни одного.
Я вообще ни 1 сишного кодера перешедшего на раст не видел. Может они и бывают, но это странные люди. На вид довольно разные штуки.
> образом, чтобы даже ты мог бы его разгромить аргументацией.
Интересная теория. Мне кажется, чучело создано в основном здешними коментаторами, агрессивно пиарящими это. При том такое ощущение что програмить они на этом не пробовали, а может и вообще не умеют. Не удивлюсь если вы окажетесь единственным кто реально это практикует из всей той шумной шайки.
Когда я читаю вот то, что ты пишешь, у меня складывается ощущение, что ты хочешь узнать о расте больше, но какие-то неведомые принципы запрещают тебе задать вопрос, и требуют от тебя наезжать на раст, демонстрируя своё незнание, и, таким образом, провоцируя меня на ответ.Сорри, чёт у меня сегодня нет настроения вестись на провокации.
Как тебе сказать? В расте есть интересные идеи. Но хайпожорское сообщество выезжающее только на поливании других, встроенный пакетный менеджер с репами управляемыми корпами и прочие характерные ништяки держат меня на почтительном расстоянии.
> Как тебе сказать? В расте есть интересные идеи.Кои ты, судя по твоим словам выше, не понял от слова совсем.
> Но хайпожорское сообщество выезжающее только на поливании других,
Мне непонятна эта фраза. Что для сообщества значит быть "выезжающим"?
А по поводу хайпа: https://thenewwazoo.github.io/whining.html
> встроенный пакетный менеджер с репами управляемыми корпами и прочие характерные ништяки держат меня на почтительном расстоянии.
Хех, это в смысле когда ты пытаешься критиковать "интересные идеи" выше, ты типа пропагандисткую кампанию ведёшь, и не потому, что идеи не такие, а потому, что "корпами управляемый"? Мне вот это непонятно от слова совсем: людей в школе учили логике, их в школе учили математике, некоторые аж в олимпиадах побеждали, но они становятся агентами пропаганды, они забывают все эти правила и просто несут бред. Не, я смирился с тем, что люди не готовы развивать своё мышление, что окончив школу, где им за недостаточные усилия в саморазвития учителя ставили двойки, а родители драли задницу за плохие оценки, люди почему то решают, что они доразвивались до достаточного уровня, и дальше нет никакой нужды прилагать какие-либо усилия к развитию свой способности мыслить. Ок, я готов принять, что люди настолько не ценят свой интеллект, что готовы не затачивать его. Но позволять ржаветь тому, что они уже обрели в школе?
Смотри как надо критиковать:
https://chrisdone.com/posts/rust/https://dev.to/arunanshub/self-referential-structs-in-rust-33cm -- это само по себе не критика раста, но если ты посмотришь на это с точки зрения того, как много чёрной магии требуется только для того, чтобы самореферентную структуру создать, то это отличная демонстрация к предыдущей ссылке. То есть циклический список создать ещё хрен с ним -- его легко можно сделать на raw указателях и не выпендриваться, но нужда в самореферентности иногда в самый неожиданный момент выскакивает, и... не, ouroboros может помочь иногда, но не ты прикинь, ouroboros требует от тебя надо знать разницу между ковариантными и нековариантными типами. Короче раст реально может оказаться очередным хаскелем. Насчёт сборки мусора -- это мне кажется вряд ли, есть же Rc/Arc, и они реально могут решать проблемы лайфтаймов, когда они нерешаемы, но вот превратиться в хаскель, в язык для высоколобых -- это вполне возможно.
https://gist.github.com/ctrlcctrlv/978b3ee4f55d4b4ec415a985e... -- прям-таки не в бровь а в глаз: перфекционизм превыше всего, качество кода важнее его функциональности.
https://kerkour.com/rust-crate-backdoor/ -- это прям напрашивалось, раз есть пакетный манагер.
> В отличии от сишечки, на которой вы не найдёте ни одной популярной программы/библиотеки
> без 0дней дырени в истории.Не ошибается тот кто ничего не делает. А когда все же делает - так вон и на растовые проекты уже сотни CVE понаходили. Это при том что софт на нем еще суметь найти надо.
Много людей регулярно всю жизнь использует огнестрельное оружие и умирает при этом от старости, а не случайного выстрела себе в голову.
> Много людей регулярно всю жизнь использует огнестрельное оружие и умирает при этом
> от старости, а не случайного выстрела себе в голову.Так у тех тоже выстрел был в контролируемом окружении и в бронежилет asan'а попал, но это не значит что фиксить не надо. Тем более что проблема реально глупая, про скобки в макросах сейчас даже чайники знают. А те кто может кучу анализаторов навесить, кучу тестов и проч - это отжиг, хоть на ютубе в разделе фэйлов показывай.
Ну да, в другом то софте такого не бывает, например heartbleed в openssl которым пользовались чуть меньше чем весь мир. В прошивках роутеров и винде это вообще норма. Чз что ты хочешь от гораздо меньшего проекта с 5 контрибьюторами. Тут же даже альтернатив нет - либо tox, либо matrix, у которого например сайт взламывали.
Казалось бы, когда получаешь граблями по лбу, ну можно же сделать вывод из произошедшего и выжечь напалмом такие макросы, заменив их константами и/или функциями? Нет, б..ть, скобочки добавили - и так сойдет... О статических анализаторах, ловящих такие ошибки, они тоже не слышали...Такие вот эксперты по сыкурности...
Они внезапно сделали выводы и научились ставить скобки там где нормальные сишники их всегда и ставили. А вас послушать, так если ножиком порезаться так потом даже палку-копалку страшно брать.
Справедливости ради.
В описании проекта написано:>This is an experimental cryptographic network library. It has not been formally audited by an independent third party that specializes in cryptography or cryptanalysis. Use this library at your own risk.
Так-же предоставляется реализация на хаскеле.
Тем не менее люди уже этим пользуются, например через тот же qTox, упомянутый в новости.
И, кстати, qTox - официальный клиент, который предлагается для загрузки на https://tox.chat/.
*: один из тех, о которых разработчики знают. На вики есть ещё целая пачка
Это просто превосходно. Нормальные люди этим говном не пользуются. Вместо этого у них есть форк, в котором они всё это дело перепиливают на rust. И избавляются от insecurностей, на которые авторы токса болт забили.
лучше бы на java/c# перепилили
Зачем? У обоих есть CFFI, и Rust - безопасен и быстр. Смысла нет, кроме как кроссплатформенность. Но для кроссплатформенности можно просто собрать в bit-код LLVM и запустить его поверх GraalVM.
>Но для кроссплатформенности можно просто собрать в bit-код LLVM и запустить его поверх GraalVM.А GraalVM запустить в виртуалке Фабриса Беллара, написанной на JS. Так победим!
Если затею переписать на ржавчину я ещё могу понять, то затею переписать на managed языки с производительностью хуже питона, нет. Кроме того у них обоих с гуем проблемы. У питона нет проблемы с гуем кстати.
На ржавчине оно никогда не заработает вообще. Ржавая ОС тому доказательство.
Есть ли объективные причины, почему нет? То, что графический софт невозможно написать, это другой разговор, и всё же ситуация лучше чем с го. А так вон гуй даже на php пишут (не спрашивайте зачем).
> Есть ли объективные причины, почему нет?
> графический софт невозможно написатьХороший мальчик :) сам спросил - сам ответил.
>>> На ржавчине оно никогда не заработает вообще. Ржавая ОС тому доказательство.
>> Есть ли объективные причины, почему нет?
> Хороший мальчик :) сам спросил - сам ответил.Хороший опеннетный балабол :) сам громко испортил воздух - сам оперативно перевел стрелки.
> На ржавчине оно никогда не заработает вообще.Вариант на нем есть, но что-то не видно фанатов раста, так что он недоделаный и отстающий в развитии. Видимо рекламить на форуме лучше чем програмить на этом.
>Кроме того у них обоих с гуем проблемы.Нет у шарпа проблем с GUI.
Есть, он не кроссплатформа. У жабы хотя бы кроссплатформа. Игры на дотнете тоже шлак, можно любую юнити поделку взять как пример. Больше всего вымораживает, сколько памяти оно потребляет на пустом месте конечно, но тормоза тоже.
Игры на дотнете не шлак. 7 days to die тому пример. Отличная игрушка, хотя памяти действительно есть овердофига.
Ты кстати знаешь, какая она лагучая даже для 1 игрока? Отличная не отличная это дело десятое, для игры которую 10 лет разрабатывают могло быть и лучше. А вот архитектурные недостатки никуда не денутся уже.
Он вендорлок, это особенность, а не недостаток.
Если решили сделать карьеру в шарпе то нужно возлюбить майкрософт и виндовс как себя самого.
> Если решили сделать карьеру в шарпе то нужно возлюбить майкрософт и виндовс
> как себя самого.Для этого надо себя очень крепко не любить. Error: condition check never true.
Или очень любить...Правильно, любить деньги.
Деньги можно заработать массой более приятных способов чем копание в том что изрыгает майковская индусня и маркетинг. Я проверял.
На самом деле.
Не знаю как сейчас, но раньше у МС была шикарная инфраструктура.Работая с шрапом и дотнетом вам ненужно решать дурацкие проблемы, волноваться о совместимости, можно просто программировать. Все типичные задачи уже решены унифицированным консистентным образом.
И все будет прекрасно. Пока MS не выкатит новую версию, не посоветовавшись с вами, не забыв сломать обратную совместимость, так что у ваших клиентов софт чего-то умер. И теперь вместо отпуска вы истошно ж@пы рвете в темпе вальса, иначе бизнесу вообще пиндык.
"Ненужно" решать дурацкие проблемы? Красивая теория. На практике правда почему-то совсем другое наблюдается. В паре с маркетинговыми метаниями маек довольно специфично получается. А никогда не видели memleak о 15 гигз в неделю? Не, никто понятия не имеет как его в дотнете вообще дебажить.
> И все будет прекрасно. Пока MS не выкатит новую версию, не посоветовавшись
> с вами, не забыв сломать обратную совместимость, так что у ваших
> клиентов софт чего-то умер. И теперь вместо отпуска вы истошно ж@пы
> рвете в темпе вальса, иначе бизнесу вообще пиндык.Что-то я вообще не помню такого. Вы фантазируете.
> Красивая теория. На практике правда почему-то совсем
> другое наблюдается. В паре с маркетинговыми метаниями маек довольно специфично получается.Не знаю что у вас там получается, но мой знакомы больше 10 лет занимается дотнетом, и у него всё прекрасно получается.
> А никогда не видели memleak о 15 гигз в неделю? Не
Нет, не видел такого никогда.
> никто понятия не имеет как его в дотнете вообще дебажить.Ну, эм, так людям учиться нужно, причём тут дотнет и МС?
В дотнете прекрасные средства дебага, открывай да смотри буквально куда память уходит, о чём речь вообще?
https://docs.microsoft.com/en-us/visualstudio/profiling/dotn...
https://docs.microsoft.com/en-us/visualstudio/profiling/memo...
> Что-то я вообще не помню такого. Вы фантазируете.У меня не настолько хорошая фантазия, гражданин евангелист.
> Не знаю что у вас там получается, но мой знакомы больше 10
> лет занимается дотнетом, и у него всё прекрасно получается.Я видел другие вещи, типа хардкоринга всех вплоть до хедкватеров с топами, пмами и дирами направлений в выхи и/или по ночам. А чего им было делать, если стараниями мс корп софт упал и кастомеры пошли оптом на нерест? И сорян, это не "знакомые" и "фантазии", такое шоу можно только лично увидеть, если звезды так встанут.
> Нет, не видел такого никогда.
Зато это видел я. Без всяких "знакомых". Ну, да, пораньше.
> https://docs.microsoft.com/en-us/visualstudio/profiling/dotn...
К счастью, мне оно на... не уперлось сейчас, вместе с "офигенным" апстримом и их супертулами. Я уже довольно давно чисто линуксное тело, достиг в этом определенных успехов, и ни разу не пожалел о радикальной смене направлений. Это гораздо круче любых мсов и их офигенных тулов.
> https://docs.microsoft.com/en-us/visualstudio/profiling/memo...
Ложка хороша к обеду. Сейчас я от этого всего, к счастью, очень далек. И вообще, понимаешь, в линухе я могу сделать удобно себе, автоматизировать малой кровью рутину, а многие системные операции отрабатывают в разы быстрее. И есть ряд крутых эффективных технологий. Которыми я могу пользоваться без маркетингового булшита и искусственных ограничений. А еще я могу запилить себе системные образы как мне надо. Без ваших бдских кейлогеров, "улучшений", онлайнакаунтов и что там еще за д@рьмо сегодня попало под хвост маркетингомому отделу. Сами это жрите!
Инструменты эти были в дотнете всегда.
Я уже понял, что у вас негативный опыт с горе энтрерпрайзом.
И дотнет вам очень не нравится и вообще ненужен.Мой же знакомый известный ПМ. Его опыту и тому, сколько готовы за его труд платить компании, я доверяю.
> Инструменты эти были в дотнете всегда.Несколько ликов на моей памяти так и остались жить потому что их никто найти не смог, как максимум эпичными костылями и воркэраундами снизили масштаб. Энтерпрайз он такой.
> Я уже понял, что у вас негативный опыт с горе энтрерпрайзом.
С компаниями из топ500, явно не хучшими из. Бывают ли лучше? Может быть.
> И дотнет вам очень не нравится и вообще ненужен.
Он оверинженернутый и MS напихал его везде. Что вызвало много неудачных эффектов. Там инсталл весит почти гиг и час ползет, потому что версия нета должна быть вот такая, там два ребута надо, вон там комп полдня неюзабелен потому что ассембли перегенеряет, там шелл минуту в виртуалке стартует... и идея засунуть это в шелл, ну, мне лично очень так себе: длинные выражения и типизация не то что я от шелла ожидаю, неудобно очень, кроме специфичных вещей.
> Мой же знакомый известный ПМ. Его опыту и тому, сколько готовы за
> его труд платить компании, я доверяю.Я видел эн пмов и покруче, вероятно. Спору нет, в целом кондовые, крутые, но... но MS может временами обломать даже таких.
Как мс баги чинит - это вообще дно. Сейчас немного этого дна можно посмотреть на их гитхабе даже, там немного отсвечивает временами. Я видел баги в дотнете. Баги в виндовом рантайме и либах, баги в хреновой куче редистрибутаблов. И общее у них то - что почти никто и никогда это не чинит, сподвинуть MS на нормальный фикс, устраняющий проблему - эпопея! А если даже и чинят, то тайминги такие что можно от старости случайно помереть. Я просто сравнил с тем как оно у опенсорсников... ну... последний раз когда я мочил core-level баг в кернеле, заняло 2.5 дня, и это был крутой и кайфовый процесс. Вокруг майкрософта просто не бывает ничерта сравнимого. Экосистемой и культурой дева не вышли. Другой мир. Отличающийся, имхо, совсем не в лучшую сторону.
>Не, никто понятия не имеет как его в дотнете вообще дебажить.А сколько уже пытаются то задебажить?
Я могу за 1000$ решить проблему за 1-2 недели.
> А сколько уже пытаются то задебажить?Это несколько раньше было, и, к счастью, я уже совершенно линуксовая рожа, далекая от этого. Чему я несказанно рад, между прочим, это был крутейший апгрейд рабочего окружения, экосистем вокруг, эффективности и просто моего комфорта.
> Я могу за 1000$ решить проблему за 1-2 недели.
Ну, удачи в поиске клиентуры, все такое. А лучшее что в моей жизни было относительно MS и дотнета - развидеть все это наконец, хахаха! Я не спорю, денег там есть, но окружение - унылейший булшит.
Шарп по скорости на уровне сипипи. Иногда может и обгонять в зависимости от опций сборки и погоды на марсе.
На нём успешно хайлоад делают.
медленней, но смотря что, смотря где, шарп настолько неоднороден, что под моно и коре на винде и линуксе может отличаться в разы в разные стороны, но плюсы обычно все-таки по-быстрее, не сильно, но оптимизированный плюсовый код задроченный под специальные инструкции CPU вообще вне конкуренцииа так да, шарп вполне годный в плане производительности, а удельной на час разработчика - так возможно даже один из топа
У toxcore на вики есть пример бота. Полстраницы тривиального си. Собрать можно минут за 10, потребление ресурсов такое что на домашнем роутере можно ботнет из чатботов запустить. Покажите удельную производительность :)
Хайлоад на чём только не делают. Собственно, так оно и превращается в хайлоад. Я видел какие-то бенчмарки для коре, но то, что сейчас в продакшене до сих пор, ни в какое сравнением с плючами поставить невозможно.
Хайлоад это когда выполнение задачи упирается в железо, а собственно код пишется таким образом чтобы не создавать ненужных помех и приближаться к теоретической производительности железа...Шарп в этом плане работает очень хорошо так как позволяет такой код писать относительно легко, в отличии скажем от джавы где от приколов рантайма очень тяжело избавиться (как я слышал).
В крайнем случае вставкой ансейва шарп в С++ и превращается, что позволяет переоптимизировать критические участки кода.
Но это обычно и не требуется. Основной затык это обычно IO, который шарп и так делает очень шустро и довольно просто.
Между нами, я затрудняюсь себе представить на .нете вон то, сабжевое :). Это было бы бессмысленно и беспощадно имхо.
> Шарп по скорости на уровне сипипи. Иногда может и обгонять в зависимости
> от опций сборки и погоды на марсе.
> На нём успешно хайлоад делают.Только в специальых тестах.
А в реальных программах, где вычислительная мощь имеет значение, за единичными исключениями, ситуация обратная.
С другой стороны, с# ненавязчиво подталкивает к определенному стилю программирования, что и оказывает влияние на быстродействие.Как то мне поставили задачу чисто вычислительный модуль на с# переписать, ну я и понаписал, грубо все, что ни есть то статики, выделения памяти в процессе работы строго по минимуму, уродливые глобальные структуры данных, безапасность почти поделил на ноль ...
но с быстродействием вышло действительно на уровне си, при 3х кратном перерасходе ОЗУ.
Только в таком стиле и не пишут, по причине низкой производительности труда и высокого риска ошибок, да и вне спортивного интереса, оно неприятно.
Итого: производительность с# на уровне си, только в специально написанном коде, но не в практичном повседневном.
Гошка для такого подходит.
> лучше бы на java/c# перепилилиНе думаешь же ты что тебе это напишут сишники, растеры и хаскелисты? А если и напишут, новый log4j получится, они же не в курсе ваших best practices...
Альтернативу на хрусте пишут картошкины смузибои пускающие слюни на хрусты французских булок и трамвайчиков за соседней границей.
альтернативу на хрустике пишут либо за деньги либо по глупости. потому что секурность в случае хрустика = 0. достаточно лишь:
1) выяснить кому принадлежит crates.io
2) и вспомнить как быстро улеглись страсти по модераторской команде.. напомню, там было дело об игнорировании своего же кока. это прям как комми и их спецмагазины для номенклатуры на фоне лозунгов о равноправии
Пилят и на расте, и на хаскеле, но медленно и печально. Видимо большинство рекламирующих это добро не пробовало на нем прогать.
Сечас мы вместо того чтобы написать хоть что-то кроме hello world просто будем срать коментами тут. Всё равно на большее мы растоманы не способны.
Так фигня в том, что даже когда пишут, вы бузите:
или "о, такое уже было написано, зачем вы переписываете"
или "о, очередное ненужно от хипстеров, ведь оно ххххх", а дальше какая-то глупая причина вроде "я не смогу собрать его на моей маргинальной платформе".
Так что никогда вам не угодишь))
Чувак, мы сами не можем собрать своё кривое поделье. Оно вообще собирается только на одной машине и то мы не понимаем как. Поэтому больше чем флатошлак мы не осилим.Да и потом. Я тебе честно скажу. Все наши растоманские поделки это обёртки, обклейки, подпорки и затычки. Это не софт вообще. Но увы, вам с этим жить. Мы подрастающее молодое поколение, вам придётся пользоваться нашими кривыми поделками. А виноваты останетесь вы, ваши дырени.
Вот соглашусь.А где вот это всё как софт повседневного пользования? Удобный и простой.
Где вот это вот:
Почтовый клиент на rust - ?
IDE на rust для rust - ?
Просмотр картинок на rust - ?
Читалка/писалка pdf на rust - ?
Браузер на rust - ?
Ну и наконец где ваша хвалёная ОС на rust - ?Где это всё?
А ты мне про поделки двух землекопов.
Это все неважно.
Тут люди стараются ядро сделать зависимым от него, а ты про какую-то мелочевку глаголишь... )
Вы тот протокол видели? Там же сплошное смузи. Куда им работа с памятью да ещё в C
нда, когда говорили что си простой язык, они это восприняли как школьники
Он и есть простой. Точно так-же как школе много простых предметов, но есть и люди второгодники, и просто двоечники-троечники.Так и тут, язык простой, синтаксис простой. Но кто-то даже это осилить не моет. Но могут осилить попугайство про rust. Почему ты думаешь на rust до сих пор ничего толкового нет? А растоос вообще в опе. Вот тут так-же как в школе.
Синтаксис простой.
А его использование очень сложное.
Он реально простой. Даже чем-то на шелл смахивает. Есть правда куча всяких библиотек (OpenSSL), которые абсолютно невменяемое API предоставляют, похожее на пошаговую загрузку линукса, когда мне всё что нужно было - это зашифровать блок данных. Но большинство POSIX функций компактные и удобно используются.
вот и пример подъехал. наверное хруст не такая уж и плохая идея для любителей компактных функций. си очень сильно упрощает работу с память и стеком, вносит миллиард плюшек и батареек вроде аргументов функций, упаковок, макросов и тд. но вся эта поверхностная вакханалия создает впечатление что это очередной петон или жыэс. нет, это не так
> Вы тот протокол видели? Там же сплошное смузи. Куда им работа с памятью да ещё в CПротокол кстати получше чем у многих других. И никакого особого смузи, скорее наоборот, простенько и топорно настолько что расширить иногда проблема. Но это лучше чем XSLT трансформации, безразмерные XML и всякая вебдрянь блокируемая выносом 1 сайтика.
сразу видно, что программисты чсвешники, которые даже калькулятор не писали, а потом говорят зачем писать калькуляторы и базовые хелловорлды
> как "length - 1 + 32 * 2 + 24", что приводило к перезаписи данных в стеке,Но подождите, а где же миллиарды пользователей с валгриндами только и ждущие чего бы затестировать ? Наверное в расте выискивают проблемные участки кода, карго урлы чтоб с хттпс были , заняты оченама
> Но подождите, а где же миллиарды пользователей с валгриндами только и ждущие чего
> бы затестировать ?Один из них как раз и зарепортил это. Сюрприз. Правда у него asan или ubsan, но тоже дело.
Блин,да у них каждый UDP-пакет стэк портил, как оно вообще работало?
Так у меня оно толком и не работало сколько не пробовал.
все работало, вообще без проблем (кроме поиска по истории - жутко тупая вещь)возможно там нихрена в стеке не было больше
мы же не знаем что оно затирало, может ничего
> Блин,да у них каждый UDP-пакет стэк портил, как оно вообще работало?Не каждый а специально подготовленный. И кроме того небольшая порча стэка может оказаться не замеченой без инструментов типа asan/ubsan. Фэйл поймал некто с fuzzer'ом под asan и тут же и зарепортил. Кто хтел миллионы глаз - вы их и получили, это не эксплуатировалось и было исправлено через чуть ли не считаные часы после репорта. Судя по гитхабу и прочему, все причастные хорошо сработали.
Таки походу писать тесты иногда полезно
а в тесте он точно также "протестирует" без скобокили откуда он скопитырит по-твоему код для тестирования?
> Из-за отсутствия скобок ...Это дно какое-то. Со скобками всегда лучше перебдеть, чем недобдеть. А уж в ориентированном на безопасность софте и подавно.
Да и вообще, давно пора отправить этот велосипедный Tox на помойку.
Вместо Tox-а можно использовать тот же Jami, в котором почти не изобретают велосипедов, а адаптируют более-менее продуманные стандартные протоколы.
> Это дно какое-то.Ну, растаманы же путали больше-меньше... Почему бы другим не перепутать плюс-минус?
> Почему бы другим не перепутать плюс-минус?Здесь они ничего не перепутали. И это была не опечатка.
Здесь они не поставили скобки в том месте, где скобки сами просто напрашиваются.
Из-за этого возникают подозрения, что в их коде полным-полно подобного рас-π-здяйства.
SIP в 21-м веке? И у них, блин, хоть где-то описана архитектура?
> SIP в 21-м веке?SIP оформился в качестве стандарта считай в 21-м веке. А мобильные телекомы в постСовдепе прямо сейчас внедряют модно-молодёжный VoLTE, который на SIP-е построен. И в сетях 5G тоже для голоса SIP применяют.
А что, смузянский WebRTC нужно было им применять, что ли? Или опять изобретать свой велосипед?
> И у них, блин, хоть где-то описана архитектура?
Да, описана, в разных местах. Ищи. Но вот я не скажу, что описана она достаточно хорошо и подробно.
Нужно было брать IAX2 из Астериска. Использует один единственный порт UDP и для сигнализации, и для медиа.
> Нужно было брать IAX2 из Астериска.Да ну нафиг, IAX2 уже ДАВНО умер. Про него даже уже не вспоминают.
Это же реальная попытка откопать стюардессу, которая уже давным-давно лежит в могиле. Shame on you!
Именно так. Есть лучше? или ты предлагаешь всё в вебню потому что большее не осилил?
> SIP в 21-м веке? И у них, блин, хоть где-то описана архитектура?Какой SIP? Вы о чем? У вон того какой-то свой протокол для всего. Он может быть на что-то похож, но идея больше всего напоминает "старый" скайп: пытается работать по udp если может, если не может, по tcp релеит.
В отличие от хипстерской дряни блокируемой 1 хостом эти имеют представление как надо было, с скайпа некоторые идеи слизали. Поэтому оно довольно много где работает, протыкая корпам всякие 443/3389 TCP например. А внутри локалки он и без внешки может запуститься, найдя себе подобных броадкастом/мультикастом.
Ну тут нужно именно знать эту особенность чтобы не словить эту ошибку.
Никто в здравом уме не будет писать y = (x*2); или y = (x + x); Это именно тонкий момент с макросами.
Это совсем базовое понимание, что макросы = копипаст в исходники, а не отдельная сущность. Тонкости — это, например, shortcircuit дабы убрать кучу повторяющихся if-error-panic, или цыганские фокусы с namescope дабы юзать одни и те же имена переменных в одной функции, но по факту обращаясь к разным участкам. А скобки в define — это ну прям база. Скажите ещё, что include - это не обычный копипаст объявлений, с которыми потом будет разбираться линковщик
> Никто в здравом уме не будет писать y = (x*2); ...А вот так, например, можно и написать: y = z+(x*2);
Скобки в этом случае как бы и не нужны, но они явно улучшают читаемость кода.
И хуже от этих скобок уж точно не будет.
> Это именно тонкий момент с макросами.Да нет здесь никаких тонких моментов. Во всяком случае для тех, кто имеет хоть какой-то опыт программирования на Си (не helloworld-а, разумеется).
Как только появится хоть одна полностью децентрализованная и шифрованная альтернатива, так сразу. Почему-то пограммисты предпочитают телеграм боты писать вместо нормального мессенджера.
Голодают
Есть Jami
Есть неуловимый Джо. И он есть пока он неуловимый. Как только его кто-то поймает -- Джо становится бесполезным и уловимым. Как и твоё не надо.
Но в репозитории Fedora его нет.
У пользователей Fedora руки не оттуда?
У нас есть Pidgin.
> У нас есть Pidgin.Под него сабж тоже есть. Хоть плагин и заброшеный, но компилится. И даже работает кой-как. Под фиолетового птица почти все что протокол есть, но реализации обычно такие же кривые как и сам птиц. Этот не исключение.
Не используйте макросы. Если вы думаете, что понимаете их, вы ошибаетесь.
Сори бро, мы макросы понимаем
малолетки даже не понимают, что прочитали
малолетки думают что они умнее всех
М-да. Программист сделал ошибку, в интернетах бурления недовольных. Я тоже порой делал ошибки, работал в полусне и засыпал на клавиатуре. На всё желаемое ни сил, ни времени не насрести.
И посмотрю я, как петон-жаба-раст спасут вас от недоставки скобок, ага. Даже математика третьего класса СОШ не спасёт.
Только Lisp спасёт!
Я это гарантирую!
> Только Lisp спасёт!
> Я это гарантирую!Напиши свой вариант протокола на этом. Поугарать над уровнями скобочек сойдет.
К зимней сессии готовься, угаратель.
"Программист сделал ошибку" - а других программистов нет? коммиты принимаются без проверки? code review не делается?
> Программист сделал ошибку, в интернетах бурления недовольных.У опеннетовских растохейтеров подгорает, вот и бурления.
Ох ну нашли же, что за кидание на вентилятор? Хоть один проект без дыр? Всё дырявое и точка.
Ничего нет хуже смартфонов, а всё остальное, десктопное - около дела. Да, не без греха в коде, но всё же не мобильное изделие.
> Ничего нет хуже смартфонов, а всё остальное, десктопное - около дела. Да,
> не без греха в коде, но всё же не мобильное изделие.В смартфоновских месенжерах типа файберов никто вообще в жизни разбираться не будет, была охота в корпоративном крапе на 20 мегов явы или тайпскрипта копаться.
У капиталистов ума не хватает финансировать что-то дельное. Энтузиастам чаще всего не комфортно в современном мире IT.
А зачем тут использовать макрос если можно использовать константу?
Константа - это переменная в памяти, просто компилятор ругается если изменять её. Макрос, лично для меня, в этой ситуации более напрямую выполняет свою функцию - подстановка текста. А константа может и с типами начать проблемы вызывать, или вообще не дай бог скастоваться в непонятно что.
enum здесь чем плох?
Наверное, и constexpr тоже вариант.
constexpr это уже Си++. Там и константы вариант:const int maxarray = 255;
char store_char[maxarray]; // allowed in C++; not allowed in C
Ты уверен?
https://godbolt.org/z/6fe6d6Gvs
Абсолютно. Могли бы сменить версию стандарта, что бы было понятнее, что там на самом деле происходит: ISO C90 forbids array 'store_char' whose size cannot be evaluated (gcc 11.2).
> enum здесь чем плох?Всем, в данном случае! Он вообще был создан совсем не для этого.
>> enum здесь чем плох?
> Всем, в данном случае!Пару конкретных причин?
> Он вообще был создан совсем не для этого.
В смысле, следует ориентироваться не на текущий стандарт, а на цели Кернигана и Ритчи? Зачем-то "в реализации на PDP-11 со всеми перечисляемыми переменными оперируют так, как если бы они имели тип INT".
Покажи код, а я расскажу, почему следует открутить твои @@.
Ссылка на код приведена в новости.
Ну так и покажи, как ты enum-ом хочешь переписать эту строчку кода.
Я хочу? Бремя доказательства утверждения "всем плох" лежит на заявителе.
Ты не петляй, не петляй.Твоё "enum здесь чем плох?" в контексте обсуждения несёт такую смысловую нагрузку, которая подразумевает возможность использования enum-а для описания константы CRYPTO_SIZE.
Т.е., в твоём вопросе уже содержится утверждение.Вот я и прошу показать, как ты собираешься использовать enum в данном конкретном случае.
Но мне уже понятно, что показывать ты ничего не хочешь, ибо понял, наверное, насколько криво оно получается.Что ж, сделаю себе о регистранте n00by соответствующую "пометку на полях".
Из попыток объяснить мне, чем плох в данном случае enum, я понял, что тебе не нравится само слово enum, отсутствие префикса #, обработка после фазы препроцессора, наличие фигурных скобок и ещё масса каких-то факторов. Это прямо следует из обобщения "всем плох". Я хотел увидеть пару претензий к enum не на тему вкусовщины. Не вижу причин, по которым я якобы хочу их сам выдумывать.
> Пару конкретных причин?1) Вообще не присутствует в препроцессоре.
2) Какому типу данных enum вообще соответствует? А, хрен его знает, прямо по стандарту? Удобно, удачи в валидации :)
Спасибо.>> Пару конкретных причин?
> 1) Вообще не присутствует в препроцессоре.Что в данном случае зависит от фазы трансляции?
> 2) Какому типу данных enum вообще соответствует? А, хрен его знает, прямо
> по стандарту?В данном случае все в одной единице трансляции, даже в одном файле. Тип приводится к целому.
> Удобно, удачи в валидации :)
Макрос разве её прошёл? :)
> Что в данном случае зависит от фазы трансляции?Скажем так, невидимость штуки в препроцессоре зарубает многие вещи. Даже просто прочекать что-нибудь на фазе парсинга нельзя.
С #define или -DABCD=3 при компиле потом можно как-то так
#if (ABCD > 2)
...
С enum это не катит. Не существует он там. А в рантайм - уже не то. Это лишние падения, лишние ветки кода и проч.> В данном случае все в одной единице трансляции, даже в одном файле. Тип приводится к целому.
Которому из таковых? У сей вообще странные взгляды на целые числа, можно увидеть если -Wconversion врубить. Проблема enum'а в том что вообще не специфицировано во что это превратится.
Еще интереснее что если сделать typedef на enum {OPTION1, OPTION2} - потом переменной с тем типом можно влегкую назначить 42 и это как бы ок. Правда в gcc11 статический анализер научился такое замечать, но вообще это надо было в стандарте прописать, а не так.
>> Удобно, удачи в валидации :)
> Макрос разве её прошёл? :)Он не прошел sanity check на использование скобок. Впрочем, с типами там не сильно лучше enum, однако это хоть как-то специфицировано стандартами.
>> Что в данном случае зависит от фазы трансляции?
> Скажем так, невидимость штуки в препроцессоре зарубает многие вещи. Даже просто прочекать
> что-нибудь на фазе парсинга нельзя.
> С #define или -DABCD=3 при компиле потом можно как-то так
> #if (ABCD > 2)
> ...
> С enum это не катит. Не существует он там. А в рантайм
> - уже не то. Это лишние падения, лишние ветки кода и
> проч.В общем случае это верно, но к данному частному не относится.
>> В данном случае все в одной единице трансляции, даже в одном файле. Тип приводится к целому.
> Которому из таковых? У сей вообще странные взгляды на целые числа, можно
> увидеть если -Wconversion врубить. Проблема enum'а в том что вообще не
> специфицировано во что это превратится.В данном случае -Wconversion не покажет.
> В общем случае это верно, но к данному частному не относится.Вот в именно данном случае да, можно, но обычно люди хотят хоть какой-то унификации стиля, и вон то может поднапрячь временами.
> В данном случае -Wconversion не покажет.
В данном - не покажет. Но вообще, enum'ы с их "а хрен бы его знает что это за тип" довольно странная зверушка. У сей довольно специфичные идеи насчет работы с целыми, но с enum они смогли сделать это еще более странно. Так то обычно работает, но капканы все же есть. Или можно получить совершенно угарные warning на ровном месте при попытке хорошего анализа кода на фазе компиляции и статического анализа, при том - валидные. Некоторые вещи в стандартах задефайнены не очень хорошо, типизация enum одна из таковых.
Спасибо, единообразие это аргумент. С другой стороны кто-то может захотеть вынести все макросы в заголовочный файл, который включают все подряд, а enum это затруднит.
А если собирать с разными оптимизациями, то компилятор не мог вычислить значение макроса и подставить в код уже его? И результат был бы другим.
Компиляция в Си происходит как минимум четырьмя отдельными программами.1. Макропроцессор. Он изменяет исходный код ТОЛЬКО с помощью своих команд. Он НЕ смотрит в сами исходники и ему в целом по барабану на всё, что не #... На его работу можно посмотреть с помощью флага -E
2. Компилятор. Он обрабатывает уже отредактированный макропроцессором код. Он производит все оптимизации и превращает Си в ассемблерный код, НО ЕЩЁ НЕ В БИНАРЬ. На его работу можно посмотреть флагом -S
3. Ассемблер. Он собирает всё ещё читабельный ассемблерный код в понятный для процессора бинарь. Это ещё не готовая программа, поскольку в бинаре нету всяких данных, даже названия функций к которым делается call не определены, но это уже оптимизированный код, который имеет смысл хранить отдельно, чтобы не заниматься каждый раз компиляцией всего проекта заного. Флаг -c
4. Линковщик. Он превращает все объекты в ИСПОЛНЯЕМЫЙ файл (для линукса и макоси ELF). По сути он собирает из всех .o файлов архив и подставляет всю метадату: откуда брать функцию read, какие библиотеки подгружать из /usr/lib, и т.д. Само собой, этот файл будет работать ТОЛЬКО на системе, которая во первых умеет читать ELF (например, уже рантайм линкером ld-linux-x86-64), и во вторых если после копипаста файлика все пути до библиотек и их версии совпадут (сверяются тупо строки внутри ELF и библиотек, гляньте objdump). Можно собирать статичные файлики, т.е. те, которые весь код берут с собой и в рантайм линковке не нуждаются, но и весить они будут как ваш код + все библиотеки, которые использовались (причём рекурсивно, библиотеки тоже могут использовать библиотеки), в сумме.
да, ответ на вопрос так и не написал. Макросы просто копипастятся в то место, где вы использовали своё define слово. Т.е. для компилятора один и тот же ABC макрос в двух разных местах будет двумя разными участками кода, БУКВАЛЬНО
> Компиляция в Си происходит как минимум четырьмя отдельными программами.Стандарт формально определяет раздельные фазы трансляции (макросы разворачиваются на 4-й), но не обязывает реализовать их в виде отдельных программ (Implementations shall behave as if these separate phases occur, even though many are typically folded together in practice).
Это вообще препроцессор разбирает. И на приоритете операций случился облом. Задумка была правильная, а вот правильно использовать макросы они научились получив CVE. Эффективный стимул RTFM получился.
81.2. Помещайте тело макроса и его аргументы в круглые скобки.Это правило одно из основных, но я обнаружил, что множество людей, пользующихся С ежедневно, его забыли. Вот классическая задача:
#define TWO_K 1024 + 1024Ален И. Голуб, "Веревка достаточной длины, чтобы выстрелить себе в ногу".
> В качестве обходного пути защиты можно отключить использование UDP, оставив поддержку TCP.Все так и делают, иначе TOX через TOR не завернешь.