Опубликованы корректирующие выпуски поддерживаемых веток почтового сервера Postfix 3.x - 3.10.7, 3.9.8, 3.8.14 и 3.7.19. В новых версиях устранена проблема со сборкой из исходного кода, возникающая в новых версиях дистрибутивов Linux, перешедших на набор компиляторов GCC 15, по умолчанию переведённого на использование стандарта С23...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=64393
> Проблема в том, что в стандарте С23 определено новое зарезервированное ключевое слово "bool", которое сопоставлено с типом, имеющим размер 1 байт.Ну наконец-то. Пол века прошло...
> Так как связанное с поддержкой нового типа "bool" изменение охватывает много строк кода, решено не переносить его в стабильные веткиНорм так проблемы на этом поле.
>Пол века прошло...ещё через полвека догадаются на bool один бит потрптить )
Угу, и результат - поцфикс не собирается.Ну зато васянские лефтпады, ну никак не могущие прожить без ненужногоненужна - щасливы.
Думать головами прежде чем пихать в стандарты нужное необходимое и полезное (нет) - у современных тяпляперов не принято.
> Угу, и результат - поцфикс не собирается.Возможно умственно отсталым разработчикам похфикса не нужно было использовать общепринятое ключевое слово?
Сделали бы свой pBool.
ничего что стандарт языка на котором этот постфикс написан тридцать лет назад - не содержит подобных "ключевых слов"?Потому что те кто этот язык придумали - совершенно намеренно не пихали туда абстракций, не имеющих аппаратной поддержки процессором. Предоставив желающим сделать это самостоятельно если тем так хочется называть int - bool. (интересный конечно bool к которому можно добавить ну например... 42? От чего бы и не добавить к true - 42? При этом он останется bool. Ну а что поделать, нет же в процессоре никаких булей.)
А вот модные комитетные работнички - решили поулучшайкать в очередной раз для своих хеловротов.
> От чего бы и не добавить к true - 42?Конечно! Это же абсолютно логично добавлять к булевому типу, который прям по своему определению может иметь всего два значения, целое. А потом удивляться почему софтина работает не так как должна.
> А вот модные комитетные работнички - решили поулучшайкать в очередной
> раз для своих хеловротов.Ну конечно. Нельзя же исправлять то, что сами ДИДЫ выпрограммировали!
А то вдруг сломаешь обратную совместимость, которая делалась для систем, которые сдохли десятилетия назад.
> Конечно! Это же абсолютно логично добавлять к булевому типу,в процессоре НЕТ никаких "булевых типов". Есть jz, и ей ВСЕ РАВНО, 42 в регистре лежит или 41, и совершенно логично добавить к регистру что-нибудь. Он целочисленный. Булевых - не бывает.
Если тебе нужен нескучный йезычок который за тебя будет вытирать слюнки изобретая высокоуровневые абстракции - там уже вон предложили прекрасный algol60. Типы есть, а компиляторов нет. Потому что он вообще был предназначен для эталонного ненужно - "записи алгоритмов". Компиляторы потом написали, конечно, чего б студентам не практиковаться. А вот софта - не написали.
> Есть jz, и ей ВСЕ РАВНО, 42 в регистре лежит или 41Так весь смысл языка в том, чтобы в регистре не оказалось 42, а был напр. 0 или 1.
И нет абсолютно никакого логического объяснения ЗАЧЕМ может понабиться прибавлять 42 к булу.> algol60
> нескучный йезычокНе, это не algol60 нескучный йезычок, а си кусок ... переносимого асма, который был создан для ускоренного 6ыdлокодинга юникса на другие версии PDP.
Но как это часто бывает в этом мире, на нем могла писать даже бебезяни и он стал PHP своего времение, вытеснив нормальные языки. Потому что раньше надо было х-к,х-к и в прод, что сейчас. И мир расхребывает этот недоязык до сих пор.
> Так весь смысл языка в том, чтобы в регистре не оказалось 42, а был напр. 0 или 1.нет. Весь смысл языка Си, во всяком случае, его первоначальной разработки - чтобы не приходилось помнить что у тебя в регистре, что в памяти, и не забыть сохранить одно из второго.
Его задачей было упростить написание кода, а не усложнить в разы.
> И нет абсолютно никакого логического объяснения ЗАЧЕМ может понабиться прибавлять 42 к
> булу.ну раз тебе низачем - вот язык этого и не проверяет. Ты можешь конечно объявить typedef bool, а можешь просто назвать переменную bool_result, и никогда-никогда не прибавлять к ней 42.
Смысл примерно один и тот же.> Не, это не algol60 нескучный йезычок, а си кусок
в третий раз предлагаю подумать, если есть чем - почему на алголе не написано ровно вот нихрена из используемого тобой и вокруг тебя. И даже с компиляторами для хеловротов - полный швах.
Даже на паскале есть отдельные успехи (правда это не системный софт, и это очень специфический паскаль, с кучей низкоуровневых внепаскалевских доделок от которых Вирт бы на двадцать лет раньше окочурился если б увидел). А на нескучном очень-очень правильном - нихренашечки.
> Смысл примерно один и тот же.Смысла как раз нет.
> почему на алголе не написано ровно вот нихрена из используемого тобой и вокруг тебя.
Потому что
а) Pascal заменил алгол где смог.
б) 6ыdloкодеров на сишечке намного больше чем на других языках, как раз потому что можно взять и 6ыdloкодить.> правда это не системный софт
Первая версия GCC была написана на версии паскаля.
Classic Mac OS была написана на паскале, и наличие булевого типа им совсем не мешало.
>> Весь смысл языка Си, во всяком случае, его первоначальной разработки - чтобы не приходилось помнить что у тебя в регистре, что в памяти, и не забыть сохранить одно из второго.Ух ты, а создатели С об этом знают? 😂 А то вот тут в сатье Денис Ричи рассказывает, что Си создавался, чтобы решить проблемы своего еще более дубового предка - B (в котором был только int и char):
http://csapp.cs.cmu.edu/3e/docs/chistory.html
>> Не, это не algol60 нескучный йезычок, а си кусок
> в третий раз предлагаю подумать, если есть чем - почему на алголе не написаноТы лучше сам подумай, почему C и его предшественник B вдозновлялись Алголом 68 (см. статю выше), но при этом тип bool не позаимствовали.
> И мир расхребывает этот недоязык до сих пор.все ЯП - недоязыки ибо наследуют мракобесие от предков. А предком предков мракобесия - математическая нотация, которая такая же мракобесная со времен кризиса оснований и расцвета формализма.
y := f(x); что бл*ть это за запись? О чем она говорит? Сама по себе - ни о чем, ибо надо где-то вверху искать определения (типы, ху*пы и т.д. ересь), вопрос зачем мне эта "акробатика", бегать вверх вниз по тексту - тексту КАРЛ? Всюду используют идентификаторы для переменных, а тип иди ищи вверху где-то, зачем? Нельзя проще - var_name_type - mynumber_int имя и тип переменной всегда явный, зачем заниматься акробатикой?
пс: короче, бл*вать хочется от всех этих ЯП с их мракобесным неявным, не однозначным синтаксисом.
> Не, это не algol60 нескучный йезычок, а си кусок ... переносимого асма, который был создан для ускоренного 6ыdлокодинга юниксаДа забей. Это персонаж даже не в курсе, что С и его предшественник B делались с оглядкой на Algol 68.
> нужное необходимое и полезное (нет)Тут позорище как раз в том, что в этом так называемом "стандарте" bool появился только с С23. С другой стороны, что еще ожидать от переносимого ассемблера, где каждый проект вынужден городить свои bool.
> Тут позорище как раз в том, что в этом так называемом "стандарте"
> bool появился только с С23. С другой стороны, что еще ожидать
> от переносимого ассемблера, где каждый проект вынужден городить свои bool.именно. Потому что такому языку этот бул нахрен был не нужен. В нем все равно нет механизма проверки что ты не пытаешься добавить к нему 42. Это просто синтаксический сахарок - который каждый мог реализовать для себя (и даже реализовали общепринятым образом... спустя лет десять после того как уже БЫЛ написан postfix)
А если в кои-то веки кто-то придумает такой процессор в котором есть аппаратный bool - вероятно, придется придумать к нему какой-то другой язык низкоуровнего программирования. Потому что там еще много чего не будет иметь подходящих механизмов в языке.
> В нем все равно нет механизма проверки что ты не пытаешься добавить к нему 42.Так это недостаток языка, а не его достоинство.
> А если в кои-то веки кто-то придумает такой процессор в котором есть аппаратный bool
А чё тогда прям в машинных кодах не писать? Или на макроасме?
Языки существуют именно для того, чтобы делать валидные абстракции над вещами, которые напр. не поддерживает проц.
>> В нем все равно нет механизма проверки что ты не пытаешься добавить к нему 42.
> Так это недостаток языка, а не его достоинство.Это особенность. Если она не устраивает - ты выбрал не только не тот язык, но и не ту сферу деятельности. Попробуй себя в чем-то еще, может в тебе дремлет художник или повар.
> А чё тогда прям в машинных кодах не писать? Или на макроасме?
А ты как думаешь? При том что в машинных кодах перестали писать из-за упаковки байтиков и использования hex вместо octal, а на ассемблере пишут по сей день весьма немало кода.
> Языки существуют именно для того, чтобы делать валидные абстракции над вещами, которые
> напр. не поддерживает проц.Си - ни разу не был для этого предназначен.
Это тебе вон в пролог. Где программа вообще может только либо вернуть true, либо вернуть false. А Hello, world - это побочный эффект. Удобно на таком почтовый сервер, наверное, писать?
>> Языки существуют именно для того, чтобы делать валидные абстракции над вещами, которые напр. не поддерживает проц.
> Си - ни разу не был для этого предназначен.Да что ты! А Денис Ричи, глупый, об этом не знает и пишет:
“BCPL, B, and C all fit firmly in the traditional procedural family typified by Fortran and Algol 60. [...] their abstractions lie at a sufficiently high level that, with care, portability between machines can be achieved."
http://csapp.cs.cmu.edu/3e/docs/chistory.html
>>> В нем все равно нет механизма проверки что ты не пытаешься добавить к нему 42.
>> Так это недостаток языка, а не его достоинство.
> Это особенность. Если она не устраивает - ты выбрал не только не тот языкЭто именно что недостаток - последствие дизайна на коленке. И, внезапно, те, кого это не устраивало, полвека велосипедили свой bool (сперва ручками, потом через stdbool.h), пока наконец этот недостаток не устранили на уровне самого языка.
> Угу, и результат - поцфикс не собирается.доа? и как же я его собрал? наверное, у меня случайно получилось, мы же по тебе судим?
В книжке BLFS 12.4 инструкция по сборке Postfix с поддержкой GCC 15 еще с сентября прописана.
LFS-ники молодцы, горжусь ими. Сам периодически собираю LFS. Свой Линукс - это круто.
>в стандарте С23 определено новое зарезервированное ключевое слово "bool", которое сопоставлено с типом, имеющим размер 1 байтСие есть кpетинизм
Сие есть стандарт. Ты или поддерживаешь код в соответствии со стандартами, или нет. Если не поддерживаешь, объективно твой код перестает следовать стандарту.Зачем существуют стандарты, надеюсь, объяснять не нужно.
Нет, прошу обьясните нам!
он не знает, что бул еще может быть 8-ми байтовым :)
Чтобы "умные" дядьки из корпов, имён которых никто не знает, дерьмократическим путём решали, что правильно, а что нет.
При сборке нельзя указать стандарт? Нужно обязательно менять код под самый новый gcc?
А последнюю строку прочитать не судьба?
Странно, что ни в postfix ни в gcc нет что-то типа пространства имен, что бы исключить пресечения.
Как вы себе это представляете?
Префиксы, например как в GLib: gchar, gint, gsize, gboolean.
Язык созданный для написания хелловордов, другого пространства имён там нет.
>Язык созданный для написания хелловордов, другого пространства имён там нет.Чёт ты херню несёшь.
Префиксы - понятно, указал, но можно ещё через struct сделать, если уж шибко надо.
Покажи как?
>Странно, что ни в postfix ни в gcc нет что-то типа пространства именСкажите, а пространства имен в пространствах имен должны быть? А то нам слишком просто трассировать проблемы и выявлять закладки.
> В коде Postfix определён собственный тип "bool",нафига? <stdbool.h> с какого года существует? 98-99? поотбивать руки
> нафига? <stdbool.h> с какого года существует? 98-99?Ну как нафига? Уважающие себя сишочники всегда писали код так, чтобы он собирался на воображаемых некросистемах системах с воображаемыми некрокомпиляторми, поддерживающими лишь C89. Ну а потом через десятки лет уже другим людям приходит понимание, что страдать такой глупостью больше нецелесообразно - и приходится выпиливать все эти бесполезные костыли.
ifdef-ам в школе не учили? 25 лет назад можно было добавить
> ifdef-ам в школе не учили?Ты спросил, зачем они добавляли свой bool - я тебе ответил. Вопросы про ifdef-ы задавай уже авторам кода.
ты не ответил, ты написал несвязанный набор слов
> несвязанный набор словОк, в следующий раз буду знать, что текст длиной больше одного твита ты воспринимать не способен.
> Так как связанное с поддержкой нового типа "bool" изменение охватывает много строк кода, решено не переносить его в стабильные ветки, а добавить при вызове gcc и clang флаг компиляции "-std=gnu17" для использования стандарта C17.Они конечно авторы и сами вправе решать, но ума не приложу, почему они просто не переименовали автозаменой bool в boolean.
Смешно.
В fortran добавили LOGICAL еще в 1962 году.
В ALGOL 60 есть BOOLEAN! В Pascal есть Boolean. В куче других языков древнее сишки есть логический тип.Но dыpяшечники они особенные...
В убожестве под названием сишечка stdbool появился только в С99 и не как тип, а как макросовый костыль. А нормальный тип пришлось ждать аж до С23.
> Смешно.
> В fortran добавили LOGICAL еще в 1962 году.
> В ALGOL 60 есть BOOLEAN! В Pascal есть Boolean. В куче другихи сколько операционных систем написано на этих языках? Правильно - ноль.
> и сколько операционных систем написано на этих языках?Ну-ну, а в какой момент посфигс стал ОС?
> Правильно - ноль.
Не правильно. CHAOS OS, PRIMOS, Apollo Domain OS.
>> и сколько операционных систем написано на этих языках?
> Ну-ну, а в какой момент посфигс стал ОС?окей, сколько mta, используемых не в виртуальной реальности, а чью-то почту реально принимающих? Ой, опять ноль?
>> Правильно - ноль.
> Не правильно. CHAOS OS, PRIMOS, Apollo Domain OS.спасибо чатугпт за список эталонного ненужно. Кстати, почему ты еще не поставил себе все три и не выкинул немодные написанные на си? Потому что они - мертвенькими родились, не?
> В убожестве под названием сишечкапотому-что это "типовый кастрат"!
Лучший MTA стал еще лучше - теперь собирается и с gcc15