После года разработки опубликован релиз свободного набора компиляторов GCC 12.1, первый значительный выпуск в новой ветке GCC 12.x. В соответствии с новой схемой нумерации выпусков, версия 12.0 использовалась в процессе разработки, а незадолго до выхода GCC 12.1 уже ответвилась ветка GCC 13.0, на базе которой будет сформирован следующий значительный релиз GCC 13.1. 23 мая проект будет отмечать 35 лет с момента формирования первого выпуска GCC...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=57145
ну Rust то использует llvm
Вообще есть минимум 2 фронтэнда хруста под gcc. Этот рак и туда добрался своими метастазами.
Ты прав раст давно пора отовсюду выкорчевать, это как раз тот самый случай когда сон разума порождает чудовищ.
От существования пачки языков в комбайне GCC вроде бы никто не страдает. И ассемблер есть и фортран и много чего еще. Никто же не воняет по поводу ассемблерных вставок в код на Си по большому счету. Пусть пишут на любых языках. Напишут на плюсах лучше в плане стабильности и скорости можно будет с радостью переключиться на программу реализованную на плюсах. Ежели Си задавит скоростью и стабильностью, то никто не против. Равно как никто не против ассамблера в чистом виде с максимальной скоростью и стабильностью. Ну переписали LibreOffice с Java на плюсы, а толку не особо прибавилось. До сих пор иероглифы в названиях шрифтов корявые. Нам то пофиг, а китайцы с японцами вряд ли в восторге. Скорость не прибавилась. Так что если кто лучше напишет на Rust, то лучше так.
>От существования пачки языков в комбайне GCC вроде бы никто не страдает.У вас неправильное мышление. Языки C, C++, Go, D, Object C, Fortran - это фронтэнды. Бекэнд - это низкоуровневый язык GNU assembler. То есть синтаксисы всех этих языков с помощью лексического и синтаксичнского анализатора превращаются в листинги ассемблера с синтаксисом AT&T. А далее код ассемблера превращается в машинный код.
То же самое творится с Растом. Раст - это фронтэнд, а бинарный код для него делает LLVM. А в первые годы существования языка С++ (в Bel Labs, 1980 гг.) он фактически был синтаксической надстройкой над языком Си. Страуструп тогда не умел делать транслятор в бинарный код. Транслятор умели делать только Ритчи и Томпсон.
> От существования пачки языков в комбайне GCC вроде бы никто не страдает. И ассемблер есть и фортран и много чего еще.По-моему всё-так ассемблер немного не к комбайне GCC, а вовсе даже и в binutils.
> Добавлена поддержка расширения __builtin_shufflevector(vec1, vec2, index1, index2, ...), ранее добавленного в Clang и предлагающего единый вызов для выполнения общих векторных операций перестановки и перетасовки.Раньше Clang шел за GCC, теперь наоборот... Стареют..
Яркий пример того, чем хороша конкуренция - стандарты не развиваются сами по себе, непонятно куда, а развивают и дополняют друг друга.
Вранье от корпорастов типа мелкософта, ага.
В итоге снежный ком летит с горы в пропасть.
> В итоге снежный ком летит с горы в пропасть.Вообще libllvm собираемый в монолитный 60-меговый (!!!) .so неплохо под это описание подходит. Это ж надо допереть либу на 60 метров кода одним куском?!
Утверждение не соответствует действительности. gcc значительно более полно поддерживает современные стандарты С++, clang отстает.
> Объявлена устаревшей поддержка форматаО нет, как они посмели! Что же будут делать все те, кому оно еще нужно??
Продолжать пользоваться тем, что у них на рабочих машинах не обновлялось с 80х?
Использовать старый формат и старый компилятор?
Врядли они GCC12 используют.
Форкать и поддерживать.
Подскажите, какой актуальный ЯВУ максимально редко обновляется, максимально стабильный (во всех смыслах), который не поразили метастазы sjw, смузихлёбства и политического мракобесия? Желательно, сообщество со средним возрастом 40+. СИшечку не предлагать.
си
Чем тебе сишечка не нравится? Минорные улучшения качества жизни раз в ~10 лет. Судя по описанию тебе нужен фортран, ну успехов написать тебе на нём любое приложение сложнее скрипта для сложения матриц.
> Чем тебе сишечка не нравится?Потому что я её уже затёр до дыр, хочется расширить кругозор.
Форт. Лучше все равно ничего нет.)
Лисп лучше.
В Лиспе сплошная диктатура.А форт, он про свободу)
Как там может быть диктатура, если существует куча Лисп-диалектов?
A Форт еще жив?))))
Если в 21-ом веке под него процы новые делают, значит, жив.
Это какие, например?
Загугли, например, GA144-F18A - 144-ядерный форт-проц.
> Загугли, например, GA144-F18A - 144-ядерный форт-проц.Фирма кукиш - нигде не купишь. А если купишь то не продашь. Изучать это - еще маргинальнее чем латынь какую. При таких замахах есть смысл изучать FPGA и теорию компиляторов - чтобы научиться самому делать железо и языки, коли ничего не нравится.
Похоже на транспьютеры.
Форт, конечно, прикольный. Но вот только в дикой природе в виде готовых программ на нем почему то почти не встречается. Только дома поиграться, индустрии не особо нужно.
Довольно скоро индустрия, которой Forth таки очень нужен, окончательно прифигев от дикой природы, улетит всем составом осваивать новый глобус. А ты так и останешься в террариуме хрустящих жаб и вебнявых питонов.
> Довольно скоро индустрия, которой Forth таки очень нужен, окончательно прифигев от дикой
> природы, улетит всем составом осваивать новый глобус. А ты так и
> останешься в террариуме хрустящих жаб и вебнявых питонов.Нетормозящие жабы и питоны с хвостиком в узел шагу не могут ступить без софта на си :). А так у корабля элонмаска морда таки с жабоскрипом. Хоть и дублированая хардварными кнопками, ибо доверять вебмакакам в вопросах межпланетных перелетов сами понимаете....
> межпланетных перелетовПока только на орбиту вышел.
> Потому что я её уже затёр до дыр, хочется расширить кругозор.Тогда можно более углубленно изучить сишечку, очень полезно для кругозора. Открываем kernel.org и вперед
Ди-шечку можем предложить. Хороший, годный язык. Ну, или swift compiler сам собери в своём арчике и поиграйся, тоже годный язык, прям свежий воздух после раста
После раста и питон может свежим воздухом показаться.
Свежим вакуумом скорее :)
даже вакуум свежее раста.
Посмотрел я на то, как реализован парсинг json на этом самом swift. Ну и выходит так же, как iOS vs любой линух: красиво, удобно, но прибито гвоздями на наиболее популярным кейсам. Что-то нестандартное - иди лесом, проси бэкендеров поправить, угости их смузи, что как неродной. Тогда как на расте через serde можно парсить вообще что угодно (и не только json). Плюс маловато батареек пригодных для чего-то, кроме мобилок. Как язык он неплох, но глоток свежего воздуха тут скорее раст, а swift, это детская комната с набором лего и закрытыми окнами, чтоб не продуло.Что касается дишечки, то в его нужности вообще большие сомнения. К примеру, разработка openmw тронулась с места только после отказа от неё в пользу сей. То есть, это не тот язык, увидев классный проект на котором все сразу захотели его изучать, скорее наоборот, он мешал. С растом таких фейлов нет, многие начинают его осваивать, присоединяясь к проектам вроде veloren.
У json столько фич что полностью их понимает в произвольном сочетании почти никто. Можно и похуже конечно - как в XML, кто вообще помнит про XSLT? А он есть.
Forth
Скриптовые: tcl, perl5.Прочие: C, fortran, ada.
Лучшие: форт.
> Скриптовые: tclНа тикль писал в своё время несложные даемоны для решения насущных задач. Интересно, жив ли он ещё (с практической точки зрения)? Или питон скриптовые заместил?
Жив и обновляется. Естественно с сохранением совместимости.
Дружелюбное сообщество. В нормальном смысле дружелюбное, а не "нетоксичное"
САПР ментор графикс написан на связке tcl-c.
Лучшие: форт. Вот только никому лучший на практике не нужен. Лучшее - враг хорошему.)))
Конечно, комму нужна на практике эта польская обратная бесскобочная арифметика?
> Конечно, комму нужна на практике эта польская обратная бесскобочная арифметика?Чем-то отдаленно напоминает ассемблер. Иных достоинств не имеет. Но если уж хочется прогать в таком стиле лучше взять ассемблел, какого-нибудь максимально похабного проца. Ну там x86-16 например.
Obj-C теперь наверное мало будет обновляться
> ЯВУбуква У как бы подразумевает
> метастазы sjw, смузихлёбства и политического мракобесия
яву яву взял я на халяву
Эммм... эрланг?
> Эммм... эрланг?Кстати, интересный язык с уклоном на сферу телекоммуникаций. А что у него с сообществом? SJW и политота присутствуют?
Если судить по рассылке erlang-questions, то там этим не страдают (ну, вроде бы, было так, когда я её регулярно читал).
Сабжи про него не знают)
>язык с уклоном на сферу телекоммуникацийВот ты и показал, что ничего не знаешь. Стыдно, стыдно должнл быть тебе!
Elixir тогда уж
Будете истерично смеяться и кататься по полу, но когда закончите - Pascal.
> Будете истерично смеяться и кататься по полу, но когда закончите - Pascal.Проходил почти 30 лет назад :) А что, на паскале есть проекты, которые сейчас имеют практическую ценность?
Lazarus IDE написан на Паскале и имеет практическую ценность для тех, кто пишет на Паскале. ;)
Есть и довольно много, тот же тотал командер или фрутилупс, например
> фрутилупсС 8 версии переписан на C++
> С 8 версии переписан на C++Можно вот его и изучить. Си++ конечно а не фрутилупс. Может быть и почти си, а может и чем-то другим. Некоторые разгоняются до очень мощных абстракций - сохраняя низкоуровневый контроль. Так можно стать крутым геймдевом или алгоритмистом например. Или там движки симуляторов научиться делать. Даже профессиональных например. Но это большое приключение для сильных духом.
Обрати внимание уже на сундук с инструментами под названием Ada. Скоро новый стандарт собрались принимать. После него на ржавый будешь смотреть как на детский помёт.
Может меня и заклюют, но осмелюсь посоветовать С++. Легко изучать после С и существенно понижается вероятность (хоть и не исключается) устроить segfault или чего похуже. Новые стандарты языка выходят раз в 3 года и нововведений поменьше будет чем, например, в Расте, Го, Яве или С#. По сути, последний "прорыв" был в 2011, писать на С++11 и выше стало гораздо приятней, чем на С++98. Дальше - лучше, но после С++11 было скорее поступательное развитие.
> но осмелюсь посоветовать С++Его ломают каждые три года...
> С++Почему-то за многие годы он так и не стал убийцей Си. Чисто субъективно – не язык, а салат из всего и вся. Да и проблем не мало, которые тянутся из года в год. В своё время решил подучить его, но душа не легла.
А зачем ему быть убийцей С ? Да и обычно народ программирует на этаком суржике С/С++
> на этаком суржике С/С++Только кодеры с маздайным бэкграундом, у них в маздайстудио си был настолько плох что даже 99-ю версию не умел. Они и юзали от плюсов аж //коменты и что там еще по мелочи. Но с таким софтом дел лучше вообще не иметь, и таких кодеров слать в пешее. Маздайцы - маздай.
Язык под задачу выбирают же.Но я писал немного на Fortran, и он ничего. Классы, объекты, мультитрединг, ffi, всё более-менее есть, но не так адски, как С++.
Но мну больше всего пишет на bash.
Учи Haskell. Среди его евангелистов в Богоспасаемой, помнится, был (а может и есть ещё) даже один натуральный белый расист, целый сениор и внедренец технологий, с личной страничкой, где половина разделов - статьи по Haskell и даже годный учебник, а другая половина - лютая куклуксклановщина. Тебе бы понравился. Жаль, ссылку не сохранил - а видел я её года три назад.
Ada
>Подскажите, какой актуальный ЯВУ ... который не поразили метастазы sjw, смузихлёбства и политического мракобесия?Пустое множество языков.
Мёртвый
10 дней тому назад вышла статья с примерами
"New C++ features in GCC 12"
https://developers.redhat.com/articles/2022/04/25/new-c-feat...
4 дня т.н. было содержательное обсуждение
https://news.ycombinator.com/item?id=31224707
и чё, здесь можно рекламировать секту укомбинатора?
сегодня релиз, про который новость
продолжаем наблюдение
Я просто оставлю это здесь, для поковырять:
https://github.com/michaelforney/cproc
А в чем его фича?
Такие вопросы можно только под кодом на расте задавать.
C11 и в GCC поддерживается.
> Добавлена поддержка отладочного формата CTFСолярис жив!
Начиная с этой версии в GDC (D compiler in GCC) догнал текущий фронт-энд DMD.
Теперь там актуальная версия 2.100, реализованная на D.Анонс от автора GDC:
https://forum.dlang.org/post/nqfdvvvaznfafgqpmwlf@forum...
Вот это дело. А фобос собрать и использовать получилось ?
Пока что не пробовал
Но на форуме писали, что работает всё хорошо
Хочется сказать разработчикам стандарта для плюсов - остановитесь ради здоровых людей. Зачем же они мозг им ломают?Язык должен быть простым как пять копеек.
Можно лапшу и по старому делать, просто на новых фичах легче и моднее творить месево. Собственно хороший критерий для оценки качества кода.
Надо же как-то собирать донаты на усложнение ради усложнения, а то народ подумает что язык мёртв раз "не развивается".
Унылый FUD пишешь.Чем выше стандарт С++ - тем легче на нём писать. Новые фичи упрощают жизнь. А ты всё со старой хейтерской методичкой ходишь.
Особенно порадовали эллиптические интегралы в стандартной библиотеке))). А вот работы с сетью в стандартной библиотеке нет. Видно программисты в своей практике чаще с эллиптическими интегралами встречаются чем с сетью))). Последние стандарты С++ явно не для людей делались. А для своего междусобойчика разработчиков стандартов.
Не пойму логики - поддержки сети в стандартной библиотеке нет, но стандарт апдейтить не надо, а надо "остановиться ради здоровых людей" и "не ломать мозг"?
Boost.Asio была ещё до выхода C++11
Когда-то Буст выполняла роль "песочницы", наиболее полезные и устоявшиеся библиотеки оттуда переезжали в стандарт. Что потом случилось, не знаю, не следил.
Сейчас ASIO отдельная библиотека.
Когда-то и std::string была отдельна от STL Степанова и Ли, не говоря про iostreams. Кто-то написал proposal и их объединили. Другие предложения по различным причинам отклоняют. На каждое такое действие комитет выпускает в pdf особый документ, который можно почитать. Наверное, где-то написано, почему не захотели включить пространство имен asio в std:: - для этого не пришлось бы менять язык, и библиотека уже готова. То есть в этом плане противоречий в #115 нет.
А ты почитай #143 и узнаешь, в чём противоречие.
Не угадали, не узнал. И это должно быть очевидно, поскольку я читал то сообщение до совета почитать.
> В бэкенде для архитектуры RISC-V добавлена поддержка новых расширений архитектуры набора команд zba, zbb, zbc и zbsзбс
>збсЗаиБиСь?
> збсЗато смотри какая оптимизация, теперь всего 1 командой проца :)
Давайте всем программам выделим по команде!
> Давайте всем программам выделим по команде!Да легко, если это будет call XXXX или jmp XXXX и дофига памяти :)
Неделю назад пытался собрать GCC 12 при помощи GCC 4.8. Упало при сборке gcc-ada (лог могу скинуть, если надо). Сегодня смотрю - в SPEC-файле подняли требование к компилятору до GCC 7. Понятно теперь, из-за чего не собиралось.Хотя GCC 11 и со старым компилятором собрался без проблем
Зачем тебе ада?
Отключи поддержку
А как ты будешь для американской оборонки кодить?
Чё платят ?
70k$ в год до налогов. https://www.indeed.com/jobs?q=Ada%20Programming&l=Calif...Понимаю, мало, но это «госы» что тут поделать не пых.
смешной прайс, вот лучше подлечусь немного и пойду щебенку раскидывать
> 70k$ в год до налогов. https://www.indeed.com/jobs?q=Ada%20Programming&l=Calif...
> Понимаю, мало, но это «госы» что тут поделать не пых.По амеровским меркам не больно дофига, почти как джуну какому.
Реальность там сильно отличается от того, что рассказывают заманухеры.
Свечку держал, болезный?
> Реальность там сильно отличается от того, что рассказывают заманухеры.Про реальность я могу узнать из первых рук, без твоих соплей. Облом, да?
Для американской оборонки кодить не нужно. Разве что бэкдоры.)))
Система gentoo amd-x86_64 plasma-desktop-wayland-amdgpu -march=native -O2. Cpu-FX9590 ram16gb,zswap-16gb ssd-samsung-850pro-4Tb.Собрано gcc-12.0.1.pre20220430
Все собрано из 1100 исходных текстов.Остановок сборки нет.Насчет регрессий по скорости выполнения ключевых программ системы не проверял очень трудоемко забезплатно.Падений в работе программ продакшен системы нет.Также в игрулях wine-staging-7.7 воркает стабильно.Мигрировал на gcc-12.1 c gcc-11.3.
Скучные флаги, фу таким быть. Обычно косяки лезут на всех этих -fipa-pta и -fdevirtualize-at-ltrans, смотри у каких пакетов юзы с lto/pgo, какие пакеты стрипают/заменяют какие флаги, и так далее.
Вот кстати ссылка по теме, часть информации весьма релевантна https://github.com/InBetweenNames/gentooLTO экшен начинается когда у тебя libz или libcurses/libreadline оказываются нерабочими после сборки и установки их в систему.
> экшен начинается когда у тебя libz или libcurses/libreadline оказываются нерабочими после
> сборки и установки их в систему.Давно не проверял, остались ли проблемы, но вот что есть:
$ egrep 'curses|readline|libz' /etc/portage/package.env/lto
sys-libs/ncurses no-lto
А какой смысл в -O2? Какая всем разница про твердотельник? Тут чтобы улучшить скорость процессора делают забеги процессора в Gentoo. Фишка в том, что несовсем готовые пакеты могут не собраться новым компилятором в стабильный вариант при использовании агрессивных флагов компиляции. И не так уж и дорого даунвольтнуть процессор чтобы он жрал 1,1 вольт или даже меньше. 1,1 это я делал с fx-6100 у которого родное напряжение сильно выше. Так что понт перед гентушниками не засчитан. Чтобы считаться гентушником ты должен изучать систему и тебе должно быть интересно выжать из нее максимум или практически максимум если система нестабильна на максимально агрессивных флагах компиляции.
Забеги давно закончились падениями откатами бэкапами и не возможностью нормального обновления.За 15 лет использования gentoo накушался я этого сполна.Во первых я ни кому ни чего не должен.Во вторых философия gentoo это не только разгон флагами компилятора а гибкость настройки системы под себя поэтому как хочу так и ворочу.В третьих твой троллинг про понты не засчитан.В четвертых ssd потому что 850pro версии samsunгов не убиваемые при постоянных компиляциях и перезаписях файлов.В пятых и последних жирный тролль если ты мне будешь платить зарплату то я с удовольствием протестирую на твоем оборудовании нестабильную систему на максимально агрессивных флагах компиляции.Так что изучай лучше ubuntu linux а про компиляторы не рассуждай это не волшебная пуля.А грамотно написаный и протестированый код но ты об этом конечно не знаеш.
Ты просто не осилил, соболезную. Но это правда, что счастье вовсе не в оптимизированном коде. Однако, самые необходимые компоненты иногда всё же есть смысл собрать так, чтобы они работали максимально эффективно. Всё же есть разница ждать исполнения ты будешь 30 секунд или 10.
С питоном, кстати, тоже довольно забавно получилось, я специально протестировал производительность различных билдов (достаточно полноценно, с рядом интересных флагов очень ощутимо быстрее выходит, печально, что в генту вики об этом не расскажут -- в тех же федоре и убунте ребята в курсе).
Что? Любой жесткий диск справится с этим компилянием, хоть тихий на 5400 оборотов. 4 терабайта дорогого самсуна это не просто фэил, а тотальный фэил. За эти деньги можно было взять 16 ядерный процессор, который во много раз будет быстрее этого FX. Зарплата кому? Компам? Чувак ты с какой планеты? Давай выдыхай. ЧТобы написать как я надо иметь мозги и несколько лет опыта на Gentoo. Если у тебя корявые мозги можешь и дальше орать как Gentoo для тех кому охренеть как надо гибкость в том месте, который давно сто раз отлажен в том же виде людьми в каком-нибудь Devuan. А может у тебя собрать из исходников раз это офигеть какое дело. Главное же ресурс твердотельника! Я такого бреда давно не читал.
Что? Любой жесткий диск справится с этим компилянием, хоть тихий на 5400 оборотов. 4 терабайта дорогого самсуна это не просто фэил, а тотальный фэил. За эти деньги можно было взять 16 ядерный процессор
Ну скажи проще тебе просто завидно.Что ты докопался до твердотельника.Мне его подарил друган который живет в токио если что.Да и заметь я тебя не осуждаю что у тебя жесткий диск как я тебя понял.У меня он тоже работает под файлопомойку.Если ты не пробывал ssd в linux на ext4 то видимо и не знаеш ни чего.Узпакойся уже выдохни.А процессор меня и FX9590 устраивает вот погорит материнка тогда и возьму как ты советуеш 16 ядерник.Не надо мне указывать что мне делать.Вот видно что ты не линуксоид и не уважаеш свободу опенсорса раз так агресивно сыплеш и давиш приказами типичный проприетарщик.Насчет опыта не тебе мне говорить у меня его уже 15 лет работы с gentoo linux.Насчет корявых мозгов отвечу так похоже что ты жирный троль с украины извини если я не прав.Да и извини за панибратство ты первый начал хамить.
> ssd потому что 850pro версии samsunгов не убиваемые
> при постоянных компиляциях и перезаписях файлов.А зачем вообще ssd для сборки? Есть же ZRAM - вот для этого её и придумали (а не для подкачки, как полагают некоторые). Или ssd имеется ввиду под ccache?
Для gcc -O2 ощутимо быстрее в среднем, по моему опыту. Чтобы собирать с интересными оптимизациями надо компилировать с профилированием, соответственно должна быть стадия где софт после компиляции запускается и прогоняются хотя бы тесты, а потом компилируется ещё раз. Это валидный способ ускорить некоторые программы в несколько раз (например, я активно использую jq, и он ускоряется раза в 3 в результате такой оптимизации, компиляция же с уровнями, отличными от -O2, приносит только замедление в полтора-два раза, время запуска тоже страдает). Хотя куда чаще профит производительности в пределах 30%. И -O2 универсально хороший уровень, не вызывающий замедления. Когда разработчики уверены в профите от 3 уровня, они на этом настаивают сами.
Вот с этим категорически согласен.Python MozFirefox и некоторые другие программы собираю с PGO профилированием на gcc-12.1.Plasma-kde вся собрана с LTO.Ядро linux-5.17.5-liquorix под Fx-9590 собрано с Clang-14.0.3 и Thin-lto оптимизацией и планировщиком PDS от альфреда чена.Все это дает профит на быстрых минимальных тестах ну в игрульках тоже заметно при контроле fps через dxvk overlay.Я же говорил не надо завидовать и тролить не по делу не осилятор это ты а у меня своя правда.
А вот на расте…
А на расте нет в системе полезного кода. И хорошо что не появится.
> А какой смысл в -O2?А что предлагается то? -O3 например может сильно раздуть код а выигрыш иногда того стоит а иногда даже проигрыш бывает, да еще некоторый алгоритмический код глюкает на этом уровне оптимизации.
> улучшить скорость процессора делают забеги процессора в Gentoo.
Возможно вы имели в виду запрыги на грабли? :)
> Фишка в том, что несовсем готовые пакеты могут не собраться новым компилятором в стабильный
> вариант при использовании агрессивных флагов компиляции.Еще лучше если оно собралось но потом - опа, глюк! Понимаешь, некоторым не хочется долбаться ради еще 2% перфоманса, и гарантированность результата - может перевесить эти 2% и сопутствующие глюки.
> нее максимум или практически максимум если система нестабильна на максимально агрессивных
> флагах компиляции.Кажется он начинает о чем-то догадываться. Задаунвольтить - а потом тест стабильности и корректности работы проца сравнимый с фабричным ты конечно же умеешь? Во всех краевых случаях? Или тебя бонусом к глюкам мегаоптимизнутого кода начнут по@бывать еще и глюки процыка раз в пару часов - и ты вообще никогда не поймешь что в этом месиве глюкает? :)
-Os хватит всем.
> -OsДля gcc существенно не отличается от -O2. Вообще не понятно для чего нужен.
На процессорах с небольшим кешем инструкций может оказаться быстрее. Во времена Целеронов было особенно заметно, потому Интел рекомендовала оптимизировать по скорости - надо же как-то объяснить цену кукурузных Пней.
> bash $ diff -u <(gcc -O2 -Q --help=optimizers) <(gcc -Os -Q --help=optimizers)Посмотри вывод. Разница только в выравнивании блоков (функций, циклов, меток для перехода и тп). На размер кода это практически не влияет, так как всё мелкое заинлайнится, а большое - разница не больше погрешности измерений.
Когда я это смотрел, использовал профилировщик и замерял время исполнения. Выравнивание как раз и делает погоду. При большом кеше получаем минимальный выигрыш за счёт перехода на выровненный блок, а при маленьком кеше эти "оптимизированные" кусочки начинают вытеснять из кеша друг друга, поскольку в сумме их помещается более чем вчетверо меньше (и это без учёта -faggressive-loop-optimizations). Но отчасти Вы правы, поскольку я проверял на MSVC (GCC в то время сливал по скорости сгенерированного кода), а оптимизации различаются.
>> gcc
> поскольку я проверял на MSVCОтлично!
>>> gcc
>> поскольку я проверял на MSVC
> Отлично!Будем разбирать, в чем отличия в плане выравнивания и почему у меня написано "***может*** оказаться"? Допустим, гранулярность 16 байт. Выравниваются кусочки в 8 байт. В среднем перерасход памяти вдвое, вытеснения вдвое чаще при том же объёме кеша. А он у Целеронов вчетверо меньше. И это без учёта ассоциативности.
Почему именно MSVC. Он генерирует pdb. Это надо не только для отладки. Тогда был профилировщик AMD CodeAnalyst - он проводил симуляцию конвейера и строил диаграмму исполнения команд по стадиям. То есть все промахи кеша показывал наглядно в графическом виде. uProf сейчас такое не показывает.
> Для gcc существенно не отличается от -O2. Вообще не понятно для чего нужен.Вообще-то отличается. Особенно на микроконтроллерах. Код заметно меньше. Затем и нужен. А так прикольно, приперся какой-то некомпетент с маргинальным бэкграундом и выдал свое сверхценное мнение о (не)нужности фичи.
Мораль сей басни такова: чем безапелляционнее заявы тем некомпетентнее заявляющий.
> Особенно на микроконтроллерах.Где максимум gcc4. Там да, '-Os' достаточно сильно отличается от '-O2'.
Начиная с gcc5 сильно поменялась оптимизация по размеру.Есть `clang -Oz`, вот он пытается.
> Мораль сей басни такова: чем безапелляционнее заявы тем некомпетентнее заявляющий.
На себя посмотри.
> Где максимум gcc4.Так, что я там про некомпетентность говорил? Прости, тезка, но LAMERS MUST DIE.
- Самый винтажный GCC который я у себя нашел на эту тему был GCC 5.4 для avr'ок. Есть и более новые, они не моя основная платформа и я не парюсь особо.
- Самый винтажный GCC для ARM'ов в моих системах был 8. Но даже текущий релиз билдится для них влет.Cortex-M и AVR по-моему достаточно микроконтроллерно уже, не? Но где же gcc4? В музее? :)
> Там да, '-Os' достаточно сильно отличается от '-O2'.
Да оно так то везде отличается. И хотя ты частично прав в том что оно в чем-то похоже, в целом разнца такова что -Os предпочитает более медленные но компактные варианты, а -O2 более быстрые даже если код жирнее. Запрос компактного размера заставляет оптимизер делать более компактный код даже если это будет заметно медленнее.
Как оно на конкретный алгоритм разложится - на самом деле очень отдельный вопрос. Особенно в паре с LTO каким-нибудь. Возможны варианты. В конечном итоге вон то - общая "усредненная" идея, но всегда возможны забавные частные случаи. Окончательный вердикт выносит бенч, и в энном случае совсем не обязано быть как написано. Но целом идея - вон та.
> Начиная с gcc5 сильно поменялась оптимизация по размеру.
Там еше LTO где-то в процессе появился, в 5 уже вроде был но довольно глючный. При правильном подходе может еще добрую четверть бинаря удалить вникуда, не теряя в скорости, что и делает его эпик вином.
> Есть `clang -Oz`, вот он пытается.
Я не пользуюсь шлангом, мне он не интересен, так что не в курсе про его приколы. GCC поддерживает больше платформ и мне это удобно.
> На себя посмотри.
Посмотрел, даже поделился наблюдениями насчет версий GCC. Доволен?
> Продолжена работа по расширению поддержки будущих стандартов C2X и C++23 для языков C и C++. Например, добавлена поддержка выражения "if consteval"Возникает мысль, оправданы ли эти специфические конструкции? Не есть ли это отклик на упрощение мыслительной деятельности программистов?
Нет, давайте будем писать на ассемблере.
Мыслительная деятельность программиста состоит не в том, чтобы бороться с языком.
для отключенного-отсутствия мозга уже есть яваскрипт, питон и раст
Продолжайте доказывать себе мощь своего интеллекта. Правда, проектов на ассемблере что-то не видно.
Плохо смотришь.
Так ткните же носом. Только не в утилитку на 50 Кб, и не в фае-проекты типа KolibriOS.
Не знаю, как ткнуть носом в сорцы Линукс и прочие ffmpeg-и, так и не научился программировать утилиту find.Но вот сайт https://2ton.com.au/Products/ крутится на вебсервере, который автор умудряется продавать. Наверное, потому что в Австралии вверх ногами ходят?
FFmpeg:
C 91.6%, Assembly 6.4%Linux kernel:
C 98.4%, Assembly 0.9%Про упомянутый веб-сервер впервые слышу, это скорее к фан-проектам. Что-нибудь более-менее известное бы.
> FFmpeg:
> C 91.6%, Assembly 6.4%
> Linux kernel:
> C 98.4%, Assembly 0.9%Ну вот, совсем ничего. Значит можно выкинуть, ничего же не изменится!
> Про упомянутый веб-сервер впервые слышу, это скорее к фан-проектам. Что-нибудь более-менее
> известное бы.Автор его продаёт и на вырученные средства даже немного спонсировал конкурс по случаю 20-ти летия flat assembler. И, кстати, на форуме последнего можно пообщаться с разработчиком для Boeing, позадавать ему вопросы, безопасно ли летать. ;)
> Ну вот, совсем ничего. Значит можно выкинуть, ничего же не изменится!Здесь ассемблер используется по необходимости. Никто же в здравом уме не собирается остальные 98% ядра на нём переписывать.
> Автор его продаёт
Фае-проект вполне может приносить деньги.
>> Ну вот, совсем ничего. Значит можно выкинуть, ничего же не изменится!
> Здесь ассемблер используется по необходимости.Там Си используется по необходимости поддержки различных платформ. Керниганн и Риччи именно для этого и заменили мнемоники PDP абстракцией.
> Никто же в здравом уме не собирается
> остальные 98% ядра на нём переписывать.Ну не знаю. Для доказательства потребуется Миелофон и комиссия психиатров.
>> Автор его продаёт
> Фае-проект вполне может приносить деньги.Каждый может пообщаться с автором и спросить у него.
На ассемблере не надо бороться с языком. Чем проще и примитивнее программист, тем проще ему писать на простых и примитивных языках.
И переписывать под каждую архитектуру.
> Возникает мысль, оправданы ли эти специфические конструкции? Не есть ли это отклик
> на упрощение мыслительной деятельности программистов?Как ты себе представляешь static assert как упрощение? :)
Все новомодные добавления в стандарты С++ сделаны не для конечных разработчиков прикладников, а больше для самих разработчиков этих стандартов. Междусобойчик для себя. Каждый член тащит в стандарт нужное лично ему. Страшно далеки они от народа и простых программистов. Конкретный пример: эллиптические интегралы в стандартной библиотеке есть, а вот поддержки сети нет. Что нужнее простым программистам в их повседневной деятельности ответ очевидный. Явно не эллиптические интегралы. А про наркоманские модные нововведения я уже и не говорю.
> Каждый член тащит в стандарт нужное лично емуТипичная имитация бурной деятельности. Особенно под прикрытием НКО и массой донатов, за которые не надо отчитываться.
>Каждый член тащит в стандарт нужное лично емуДля языка Си я бы запретил участие в нём компании Майкрософт.
>а вот поддержки сети нет.
В языке программирования поддержка Сети? Вы наркоман?
>Что нужнее простым программистам в их повседневной деятельности ответ очевидный. Явно не эллиптические интегралы
Кто тут кукарекал, что прогрраммисту нужна математика?! Прошёл школьный курс математики - этого на достаточно.
> Для языка Си я бы запретил участие в нём компании Майкрософт.Майкрософт так то к счастью почти устранился оттуда. В основном гадили свой дотнет, его не жалко, правда, ща добрались до хруста и плюсоты малость.
> Кто тут кукарекал, что прогрраммисту нужна математика?! Прошёл школьный курс математики
> - этого на достаточно.Смотря что делать. Попробуй с школьным курсом накодить декодер рида-соломона, я на это посмотреть. Просто посмотреть как тебе абстракции порвет на юнион джек.
>Майкрософт так то к счастью почти устранился оттуда.В стандарте 2011 года "раздел K" они делали. Когда им надо они втягиваются, и это плохо. Сам по себе "раздел K" не плох, просто не хочется чтобы проклятая компания лезла своими грязными руками в стандарт чистого Си. Майкрософт - это проклятая компания.
>Попробуй с школьным курсом накодить декодер рида-соломона, я на это посмотреть
Школьный курс математики достаточен, местами даже избыточен. Кодирование и Линейную алгебру можно на двумесячных курсах пройти. И при этом не нужно будет терять свего драгоценного времени на университетской высшей математике.
>Просто посмотреть как тебе абстракции порвет на юнион джек.
Ты серъёзно? Да после университетской математики человек может запросто попасть в психушку.
> В стандарте 2011 года "раздел K" они делали. Когда им надо они
> втягиваются, и это плохо. Сам по себе "раздел K" не
> плох, просто не хочется чтобы проклятая компания лезла своими грязными руками
> в стандарт чистого Си. Майкрософт - это проклятая компания.Сям вообще так то по уму next gen нехило бы. Все же плюсота и хруст по уровню контроля немного не оно. Вот всякие зиги и харикришны и плодятся. Идея витает в воздухе, только я не понимаю почему это должны быть наколенщики и хипстеры от хруста, которые это все не умеют.
>>Попробуй с школьным курсом накодить декодер рида-соломона, я на это посмотреть
> Школьный курс математики достаточен, местами даже избыточен.Я бы посмотрел на таблище школия когда сложение и вычитание дают одинаковый результат, потому что абстракция такая :)
> Кодирование и Линейную алгебру можно на двумесячных курсах пройти.
А таки не школа уже. Да и после 2-месячных курсов тяжко, имхо, будет.
> И при этом не нужно будет терять свего драгоценного времени на университетской
> высшей математике.В принципе оно избыточно - и даже не факт что даст всю специфику применительно к цифровым машинам с удобными операциями вокруг 2^N.
А можно и с другого бока. Ну вот например "программный источник питания". Суть проста: проц рулит PWM сам, а алгоритм может быть весьма кастомный. Самый очевидный пример: MPPT для солнечных батарей, особенно если с продвинутостями типа управления зарядом аккумулятора. Это тоже софт (фирмваре). Но писать его совсем уж без знания физики процессов будет довольно так себе - с знаниями только школьной математики оно будет стабильно выносить силовую часть, которую и безопасные лимиты которой школьник не посчитает, внезапно.
> Ты серъёзно? Да после университетской математики человек может запросто попасть в психушку.
А в вон том еще забавная смесь этсамого и app-specifics вокруг 2^N удобного цифровым машинам. Попытавшись это вкурить только со школьным багажом - реально загреметь в дурку от разрыва шаблона. Очень уж далеко оно от обычной арифметики.
> эллиптические интегралы в стандартной библиотеке есть, а вот поддержки сети нетЛожное противопоставление. Поддержка эллиптических интегралов никак не мешает поддержке сети.
А поддержку сети пока что не добавили, потому что она зависит от экзекьюторов. Но ты можешь использовать для поддержки сети библиотеку Asio, даже если она не является частью стандартной библиотеки.
>> эллиптические интегралы в стандартной библиотеке есть, а вот поддержки сети нет
> Ложное противопоставление. Поддержка эллиптических интегралов никак не мешает поддержке
> сети.Вот только поддержка плавающей арифметики в реализации стандартной библиотеки накладывает ряд ограничений на сценарии использования библиотеки и, соответственно, языка.
Если убрать из стандартной библиотеки эллиптические интегралы - сеть там волшебным образом не появится.
Я не знаю что будет, если ждать, пока дядя что-то выкинет. Если попробовать самому написать реализацию стандартной библиотеки, тогда станет понятно: если нет интегралов, всё остальное делать немножко проще.Впрочем, сеть волшебным образом была и есть задолго до интегралов, но почему-то не стандартизована. "Экзекьюторы" мне не о чём ни говорят, новый стандарт читать лениво, раньше отсутствие этого слова в стандарте не мешало, а детали реализации типа APC для стандартизации не важны.
Экзекьюторы нужны для асинхронного выполнения кода. И стандартизаторам С++ хочется сделать универсальные экзекьюторы, общего назначения, которые подойдут и для Asio, и для других целей. И потом стандартизировать сеть на базе Asio и тех экзекьюторов.Сейчас в Asio роль экзекьютора выполняет io_context. Проблема с ним в том, что он не универсален, а специфичен для Asio.
> Экзекьюторы нужны для асинхронного выполнения кода.Это со стороны дизайна. А что бы можно было написать рабочую реализацию, достаточно поддержки операционной системой completion routines или аналога. Ну и немножко времени. И при этом не надо думать про округление в математическом сопроцессоре, когда настраивать соотв. флаг и как это учитывать в arbitrary thread context (в котором, внезапно, может исполняться этот "экзекьютор") -- но это если нет интегралов.
> И стандартизаторам С++ хочется сделать
> универсальные экзекьюторы, общего назначения, которые подойдут и для Asio, и для
> других целей. И потом стандартизировать сеть на базе Asio и тех
> экзекьюторов.Так вот о том и речь, что комитет что-то очень долго хочет и оторвался от реальности. За это время сменился не один стандарт, я уже успел забыть плюсы и я такой не один.
> Сейчас в Asio роль экзекьютора выполняет io_context. Проблема с ним в том,
> что он не универсален, а специфичен для Asio.proposed - предложено к стандартизации.
Boost.Asio provides a complete implementation of the proposed standard executors, as described in P0443r13, P1348r0, and P1393r0.|
Страшно далеки от народа и простых программистов прикладников все эти разработчики стандартов со своими наркоманскими нововведениями
Какой там C++23, до сих пор нормальную поддержку модулей из C++20 не завезли
Зачем вообще каждые 3 года рожать новый стандарт, местами ломая совместимость с предыдущим?!
Причём тенденция, чем новее продукт - тем чаще его ломают.
А в Яве каждые полгода рожают.
см. мой коммент выше, плюсы - 83, жаба - 95
Ты наверное на другой коммент хотел ответить.
Ты просто повторил то, что я сказал выше. Читай внимательно.
Перечитал, не увидел повторения. Не мог бы ты перестать говорить загадками и объяснить поподробней? Коммента 83 вообще не существует, кстати.
А коммент 95 не про жабу.
Не тупи, если не знаешь, кто в каких годах появился.
> Коммента 83 вообще не существуетДа... Давай я тебе в разговоре про время более подробно напишу, чтоб до тебя дошло: 1983.
Хорошо, ты привёл года, а что сказать то хотел? Из тебя мысли как будто клещами вытаскивать нужно. И твоё высокомерие видимо тоже мешает тебе высказываться ясно.
Для языков C и C++ добавлена встроенная функция __builtin_dynamic_object_size для определения размера объекта, совместимая с аналогичной функцией из Clang.Пропал Калабуховский дом.
Издеваешься? У gcc builtin'ов как у собаки блох, clang их большую часть тоже собезьянил. И они так то на двоих и задают тон в "нестандартных" фичах. А почему шланг из gcc это передирать может, а из шланга удачный builtin содрать нельзя?