LINUX.ORG.RU

Всё, поцоны, выкидываем Rust – у Бьярне есть план...

 ,


1

6

…по повышению безопасности в С++

Решение Бьярне Струструпа по повышению безопасности в С++ опирается на концепцию «профилей». Это наборы правил, при соблюдении которых достигаются определенные гарантии безопасности. Профили будут определены в стандарте ISO C++ и будут касаться таких распространенных проблем безопасности, как указатели, диапазоны массивов и т.д.

Идея заключается в том, чтобы использовать сам компилятор языка Си++ в качестве сложного статического анализатора, которому можно поручить выполнение требований профиля. Например, если профиль ориентирован на безопасность памяти, то компилятор может применять правила, предотвращающие такие распространенные ошибки, связанные с памятью, как переполнение буфера или разыменование нулевого указателя.

Струструп подчеркивает, что эти профили не должны создавать значительных накладных расходов во время выполнения. Основное внимание уделяется тому, что может быть сделано во время компиляции с помощью статического анализа, который не только не добавляет значительных накладных расходов, но иногда даже может повысить производительность. Цель состоит в том, чтобы сделать проверки безопасности как можно более эффективными, опираясь на локальный статический анализ, а не на ресурсозатратный глобальный статический анализ.

Профили разработаны таким образом, чтобы быть гибкими. Они могут применяться к различным фрагментам кода, обеспечивая постепенный переход от старого, менее безопасного кода к современному, более безопасному. Это облегчает модернизацию существующих кодовых баз с применением улучшенных мер безопасности без их полного переписывания.

Струструп также отметил, что сообщество может внести свой вклад в доработку этих профилей и формализацию их спецификаций. Для этого он создал репозиторий на GitHub.

https://thenewstack.io/bjarne-stroustrups-plan-for-bringing-safety-to-c/



Последнее исправление: cocucka_B_TECTE (всего исправлений: 2)

Ответ на: комментарий от wandrien

Обычное дело для современных и молодежных.

Вот ещё (даже микроядерная, btw.): https://www.redox-os.org/

Это диды начинали со скромного написания эмуляторов терминалов.

А нынешняя молодежь сразу же пишет готовую ось, чуть ли не конкурента Linux :)

sanyo1234
()
Ответ на: комментарий от sanyo1234

https://www.redox-os.org/

Это я видел. На расте не интересно, потому что уже и так из всех щелей трещят про раст. Скоро в туалете сядешь посрать, а тебе и там из вентиляции: «п-с-с-с, чувак, не хочешь переписать свой код на расте?»

Вообще писать ядра хобби интересное. Я тут на днях по гитхабу поискал, нашел несколько unix-like ОС на Си и Си++ разной степени проработки. Правда из тех, что я пробовал, без бубна по приложенной инструкции не скомпилировалась ни одна.

wandrien ★★
()
Ответ на: комментарий от wandrien

Умер былой дух хакерства. Помню, как в универские времена, мы с корешом, вооружившись учебником Смирнова и баклахами пива с проходной завода им.Степана Разина, за три дня написали свой компилятор для курсовой по ЯПиМТ, причём без всяких lex, yacc и прочих читов. Ему ещё потом втык комендант общаги сделала за диаграмму состояний конечного автомата лексического анализатора, нарисованную маркером на стене в его комнате в общаге. Вот времена были.

cocucka_B_TECTE
() автор топика
Ответ на: комментарий от wandrien

Меня больше всего интересуют оси на базе ядра seL4.

И ведь чего-то готового почти нет, тем более open-source?

KryOS пока даже не релизнулась, вроде?

А Genode - IMHO какая-то довольно странная шляпа.

sanyo1234
()
Ответ на: комментарий от cocucka_B_TECTE

Причём походу метамфетаминовый:

roadmap:

✅mlibc
✅bash
✅gcc/g++
✅V
✅nano
✅storage drivers
✅ext2
X.org
Hypervisor
Wayland
X window manager
V-UI
Networking
Intel HD graphics driver (Linux port)

Нахера этой козе и иксы, и вяленый одновременно?

cocucka_B_TECTE
() автор топика
Ответ на: комментарий от cocucka_B_TECTE

Xorg и Wayland, пипец …

Может быть, он нам и баги в Xorg пофиксит ? LOL

Хотя, если у него кругом автоматика, транспайлеры и т.п., то х.з.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от sanyo1234

Как там сейчас, не знаю. Но раньше был транспилером.

UPD: без изменений. Компилятор, транспиленный на C: https://github.com/vlang/vc

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Reddit – это помойка. Ты бы ещё срач на ЛОРе аргументом привёл.

Я на Reddit-е бываю только в r/cpp и это раздел Reddit-а помойкой назвать никак не могу.

Так, там в комментариях регулярно бывают авторы Boost-овых библиотек, разработчики компиляторов и реализаций STL (например, u/STL, который Stephan T. Lavavej), да и сам Герб Саттер.

eao197 ★★★★★
()
Ответ на: комментарий от cocucka_B_TECTE

Глупо тратить ресурсы профессиональных программистов там, где может справится, наскоро обученная простому языку, обезьяна.

Ну есть же ЯП с нормальным синтаксисом типа VB.NET и C#, или хотя бы Groovy для JVM. Отключайте в них часть функционала и получите ЯП любого самого низкого порога вхождения, но нет, надо еще и чтобы синтаксис ЯП с низким порогом был обязательно испоганен и изгажен, как бы издевательство над кодером.

Т.е. чел, чтобы присоединиться к сообществу кодеров определённой экосистемы, как-бы сначала вынужден подписаться, что он согласен окунуться именно в этот унитаз с синтаксисом крыс и гадюк, этакий обряд посвящения или жертвоприношения своего мозга.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от sanyo1234

Смотри. Гуглу нужно написать кучу кода, быстро и дешево. Потом эту кучу надо поддерживать. Для этого пилится свой убогенький быдлоязычок и пиарится. Набигает куча вайтишников, они говнокодят то, что нужно гуглу и так и остаются в этом болоте, т.к. кроме гугла, эту хтонь особо нигде не применяют и им некуда идти, да и в профессиональном плане трудно развиваться, если ты с утра до ночи перекладываешь жисоны из монги в монгу в микросервисе на го.

cocucka_B_TECTE
() автор топика
Ответ на: комментарий от cocucka_B_TECTE

Для этого пилится свой убогенький быдлоязычок и пиарится.

Прямо 1Це в профиль :(

А Кубер вроде бы неплох и универсален.

Микросервисы можно писать и на Java и на C#.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от cocucka_B_TECTE

Потом добавляются ещё, паразитирующие на гуглохайпе, другие говноконторки. Они пользуются тем, что тот модный язык ассоциируется с гуглом и нанимают ещё обезьян. Так оно и растёт как снежный ком, а мы жжём киловатты на циклы eventloopa браузера, в котором открыты гуглосервисы.

cocucka_B_TECTE
() автор топика
Ответ на: комментарий от cocucka_B_TECTE

Не, ну так-то в результате проги на Golang получаются не хуже, чем на баше или сишке, но ведь среди высокоуровневых языков есть куда более удачные, чем Python и Go.

Возможно проблема была только в том, что раньше JVM и .NET не умели генерить нативный бинарь, способный работать без своего рантайма, т.е. как бы припоздали с полноценным AOT. И Golang хайпанул только лишь на том, что по сути создал свой VBA (по сути уровня примерно 20 летней давности MS Office 97), с единственной разницей, что он умеет в goрутины и компилить бинарник, но при этом с намного более извращённым синтаксисом :(

Этож надо было догадаться сделать подразумеваемые интерфейсы без явного указания. Даже в MS Office VBA 20 лет назад уже был Implements statement для классов, которые тоже не умели наследоваться. IMHO Golang не только искусственно занижает возможности языка, но ещё и как бы издевается над кодером и даже делает его работу сложнее и более склонную к допущению ошибок.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 6)
Ответ на: комментарий от sanyo1234

Тут палка о двух концах – слишком простой язык отключает мозг, но и переусложнённый язык заставляет тебя пропускать очевидные вещи. В результате, и там, и там – баги. Только в первом случае они обычно связаны с отсутствием оптимизации и банальном невежестве в плане алгоритмической сложности. А в другом, это обычно уязвимости из-за переусложнённости.

cocucka_B_TECTE
() автор топика
Ответ на: комментарий от cocucka_B_TECTE

Лично для меня писать проги на VB.NET с полноценным ООП (не офисный VBA) - просто песня, ошибиться намного труднее, чем на Rust или Python.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от cocucka_B_TECTE

Для этого пилится свой убогенький быдлоязычок

А это интересная идея. У гугла, как известно, огромная текучка кадров, индусы перебегают фаанг -> фаанг -> свой стартап как только становится можно продать акции (у этого момента даже свое название есть, вестинг чтоле). Вот гугл и придумал тратить жизни индусов на себя, а не на саморазвитие индусов, чтобы те стагнировали как профессионалы пока работают, а не развивались.

Я однажды в такой конторе работал. У них всё делалось на in-house технологиях. В итоге через 2 года вышел оттуда как по голове ударенный, и яву и плюсы забыл до уровня джуна.

naushniki
()
Последнее исправление: naushniki (всего исправлений: 1)
Ответ на: комментарий от naushniki

Я даже видел упоминания, что фанговцы иногда якобы держат своих спецов в режиме idle на довольно большой зарплате, т.е. пусть лучше бездельничают, лишь бы только не стартапничали и не создавали излишнюю конкуренцию ЗОГ компаниям.

sanyo1234
()
Ответ на: комментарий от sanyo1234

Ха-ха. Я так год однаджы просидел. На проект не берут, зряплату платят. Ну ок, купил мерседес, съездил во францию пару раз отдохнуть, зато стартапничать не пошел :)

naushniki
()
Ответ на: комментарий от cocucka_B_TECTE

Тут как бы 2 версии. По одной это потому что смузихлёбы на гироскутерах пользуются краденым у Царя C.

По другой - синтаксис у C плохой, читать сложно, поэтому как только у авторов языка созревает решение отказаться от совместимости по коду с C так сразу они исправляют синтаксис на человеческий.

Но менять идентификаторы auto на val,

Ты ведь в курсе, что auto было использовано просто как вторсырьё, старое ключевое слово, которое как раз освободилось? Зачем тащить это в другой язык?

бъявлять функцию ключевым словом fn

Чтоб читая объявление слева направо знать, что речь идёт о функции до того как увидишь скобки.

khrundel ★★★★
()
Ответ на: комментарий от khrundel

Чтоб читая объявление слева направо знать, что речь идёт о функции до того как увидишь скобки.

Это было актуально в языках практикующих разделение на процедуры и функции. Если же в языке отсутствует такое разделение, то все эти приставки fn отпадают за ненадобностью как лишний синтаксический мусор.

Dr64h ★★
()

Еще модули не были завезены полноценно, а такие крупные фундаментальные фичи, полностью переворачивающие язык заточенный на «unsafe», при интеграции займут многие года только на согласование комитетом (если его вообще примут), что уж говорить о качественных имплементациях в компиляторах да применении в коде. Бьярне всё же нужно отдать должное, сколько лет бьет по рукам за старые C конструкции и крутые вещи предлагает

ac130kz ★★
()
Ответ на: комментарий от khrundel

Затем, что этот язык метит в замену плюсов. Но, кроме убогого перелопаченного синтаксиса в угоду левой пятки автора, ничего предложить не может.

И что мне предлагается с этой сранью делать? Перелопачивать тонны строк плюсового кода на новый синтаксис?

cocucka_B_TECTE
() автор топика
Ответ на: комментарий от cocucka_B_TECTE

Затем, что этот язык метит в замену плюсов.

А нельзя?

Но, кроме убогого перелопаченного синтаксиса в угоду левой пятки автора,

Понял, скутерасты со смузи одолели. Вопросов больше не имею.

И что мне предлагается с этой сранью делать? Перелопачивать тонны строк плюсового кода на новый синтаксис?

А Раст тем временем пролез в ядро. Видимо можно на таких языках программировать, и необязательно даже переписывать всё

khrundel ★★★★
()
Ответ на: комментарий от khrundel

А Раст тем временем пролез в ядро. Видимо можно на таких языках программировать, и необязательно даже переписывать всё

Сомнительное достижение, если честно. Вот если бы код ядра целиком переписан был на расте, то да. Но это невозможно.

cocucka_B_TECTE
() автор топика