1.1, Аноним (1), 13:14, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +14 +/– |
А визгу то стояло на опеннете что сишка небезопасная, а всего то надо было сделать безопасную сишку и никакой раст больше никогда никому не необходим.
| |
|
2.2, Alladin (?), 13:24, 17/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
да, всего-то.. на расте это гарантируется типами и маркерами, а на этом..
| |
|
3.4, Аноним (1), 13:33, 17/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Да гарантируется что боров запрещает объектам мутировать и делает так что программирование превращается в борьбу с этим самым боровом, а не в получение работающего продукта.
| |
|
4.7, Alladin (?), 13:37, 17/11/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
борров это про мувинг семантику и заимствование структур
если вы называете рабочий продукт в котором двойное освобождение и утечки памяти то пожалуйста
другие вещи борров не решает
| |
|
5.14, Аноним (1), 13:46, 17/11/2024 [^] [^^] [^^^] [ответить]
| +5 +/– |
Это тоже самое что построить такой город в котором на входе и выходе каждого здания и в общественном транспорте поставить рамки, рентген и проверять каждого жителя не мутировал ли он после выхода из дома. А если по ходу надел шапку или сходил в туалет считать что он мутировал и собирать его гарбедж коллектором вместе во всеми связанными объектами. А вдруг он мутировал получив бомбу. Причём если он сразу вышел из дома с бомбой к нему вопросов нет. Сколько раз уже пытались построить такой город с названием то Серво, то Редокс получается ерунда, не выходить каменный цветок.
| |
|
6.37, Аноним (-), 14:36, 17/11/2024 [^] [^^] [^^^] [ответить] | +/– | Хм ты ж только, что описал Город-СИ Где вышедший из дома гражданин, может че... большой текст свёрнут, показать | |
|
7.63, Аноним (1), 15:15, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Дум даже на калькуляторе без ОС играется. А все остальное это называется свобода передвижения в конституции даже такое записано. Если мне нужно соседу в голову я просто иду к соседу в голову. И его на это согласие это очень опционально штука. И в такой город ты найдешь очень много программистов и строителей, которые тебе отстроят и запрограммируют.
| |
|
|
|
4.12, Аноним (-), 13:42, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Да гарантируется что боров запрещает объектам мутировать и делает так что
> программирование превращается в борьбу с этим самым боровом, а не в
> получение работающего продукта.
С другой стороны это гарантирует что не попробуют освободить еще используемое получив dangling pointer или не сделают освобождение дважды, и тому подобне факапы. Так то нормальная идея вполне. С основной ее прелестью - zero cost как таковое, в рантайме.
| |
|
|
6.64, Аноним (1), 15:16, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Zero только в случае если программируешь и запускаешь этот код не ты)
| |
|
|
|
|
2.3, laindono (ok), 13:28, 17/11/2024 [^] [^^] [^^^] [ответить]
| +4 +/– |
На Rust всё вышеперечисленное либо дешевле, либо zero-cost, либо compile time.
То есть да, сишечку можно превратить в жалкое подобие, но ценой производительности.
| |
|
3.5, Аноним (1), 13:34, 17/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Это что за магия такая или трава, про зеро кост? Ты надеюсь сам понимаешь что так не может быть и ты пересказываешь маркетинговые сказки.
| |
|
4.8, Alladin (?), 13:38, 17/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
зероконст, если вы считаете что весь мир обкурился травой то это ваши проблемы, а не мира
| |
4.19, laindono (ok), 13:51, 17/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Например вместо 128-битных указателей и прочей подобной фигни есть сильная типизация.
В сишечке malloc/free имеют такую сигнатуру:
malloc(size) -> pointer
free(pointer) -> void
В расте аналоги такие:
alloc(size, align) -> pointer
dealloc(pointer, size, align) -> void
Но явно хранить size/align надо только для динамических типов (вроде вектора или там хешмапы). Для типов, не меняющих свой размер, ничего держать в RAM не требуется, всё известно на этапе компиляции. Вот и получается zero-cost.
Опять же сырые указатели вообще говоря весьма умные внутри: https://doc.rust-lang.org/std/ptr/index.html (особенно про provenance читни)
На ссылки накладываются дополнительные ограничения. Например они не могут быть null, что автоматически означает, что нет вообще никаких проверок на null для ссылок. Плюс borrow-checker, который можно рассматривать как compile-time garbage collector.
Это в качестве иллюстрации, там куча всего ещё есть.
| |
|
5.26, Аноним (1), 14:13, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Предлагаю тебе зайти на сайт https://godbolt.org/ написать одинаковый код на расте и сишке и плюсплюске без llvm и пересчитать количество команд. Я конечно понимаю что для вас 10 км не круг и ты может быть найдешь пример где на расте будет меньше инструкция, но среднее количество команд сможешь оценить и ты.
| |
|
6.31, Фнон (-), 14:21, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Я конечно понимаю что для вас 10 км не круг
Я конечно понимаю, что для вас "ну подумаешь сделали double free и подарили root" это не проблема, но другие не хотят писать такой код.
Если вопрос в кол-ве команд - то можно на ассемблере все фигачить (в надежде что пряморукость будет больше чему у оптимизирующего компилятора).
| |
6.32, laindono (ok), 14:26, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
https://godbolt.org/z/Pv9E74Wan
Окей, простой пример. Одинаковое количество инструкций. Придумай более сложный пример.
Предположу, что ты, когда сам тестил, забыл добавить -C opt-level=3 компилятору Rust. По умолчанию rustc собирает в дебаг режиме.
| |
|
7.36, Аноним (36), 14:35, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Я не хейтер раста или плюсов, но у тебя получился слишком примитивный пример, который не показывает различий в подходе у этих ЯП.
| |
|
8.55, Аноним (55), 14:53, 17/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Я вообще другой аноним, но считаю для ответа доказательства моей правоты на... текст свёрнут, показать | |
|
9.66, Аноним (1), 15:21, 17/11/2024 [^] [^^] [^^^] [ответить] | +/– | Явно видно как деградирует уровень аргументации у адептов раста Раньше было бол... текст свёрнут, показать | |
|
|
7.65, Аноним (1), 15:18, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Вот и я говорю нашел едж кейс и пытаешься им что-то себе доказать. Но это лишь доказывает бессмысленность существования раста.
| |
|
|
5.30, Ан (??), 14:21, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Для типов, не меняющих свой размер, ничего держать в RAM не требуется, всё известно на этапе компиляции.
поэтому чтобы код был безопасным надо чтобы всё было написано на раст, один внедряла в ядро уже сдулсо..
| |
|
6.42, Аноним (-), 14:40, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> один внедряла в ядро уже сдулсо..
из-за дидов-"вы не заставите миня учить раст, ррряяя!!!1"-неосиляторов.
Перешел туда, где его умения ценятся. И правильно сделал.
Пусть лучше меньше дырений будет в андроиде, хроме, винде. А ядро... типа кому оно нужно.
| |
|
7.50, Ан (??), 14:48, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Пусть лучше меньше дырений будет в андроиде, хроме, винде. А ядро... типа кому оно нужно.
просто мир так устроен - что-то делается если есть заинтересованность, в космос запусти процессор и он весь будет в дыренях из-за радиации - все вычисления проверяются в рантайме
| |
|
|
|
|
|
2.11, Аноним (11), 13:41, 17/11/2024 [^] [^^] [^^^] [ответить]
| +4 +/– |
Справедливости ради, отлов ошибки во время компиляции гораздо лучше аварийного завершения во время выполнения.
| |
|
3.53, _kp (ok), 14:51, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ну, так поставил ловушку, перехватывай и обрабатывай, кто ж запретит..
А если именно бросать неосвобожденные объекты на самотек, то вполне вариант.
| |
|
2.33, Аноним (-), 14:29, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> а всего то надо было сделать безопасную сишку
Так это и не сишка, а какой-то кадавр с си-синтаксисом.
В соседних темах люди не хотят использовать раст из-за просадки производительности на 1-2% по сравнению с чистой сишкой.
А тут просадка в "1.5-5 раз" (ПЯТЬ!!!) и вы называете это заменой сишки??
Лучше уже на шарпе или свифте писать вместо этого недоразумения.
| |
|
3.41, Аноним (41), 14:39, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Там не 1-2%. Всё, что во время компиляции не вычислить, не бесплатно.
| |
|
2.35, Аноним (55), 14:33, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> А визгу то стояло на опеннете что сишка небезопасная, а всего то
> надо было сделать безопасную сишку и никакой раст больше никогда никому
> не необходим.
О, опять перепись не умеющих читать опеннетных Экспердов^W Военов Супротив Раста ...
> Защита от проблем с памятью обеспечивается благодаря применению 128-разрядных указателей MonoCaps с метаданными для проверки типов и отслеживания границ буферов, а также задействованию сборщика мусора FUGC
> При каждом обращении к памяти по указателю осуществляется проверка границ и типа (например, в память с типом "ptr" не могут быть записаны данные с типом "int" и наоборот).
> собираемые в Fil-C программы медленнее примерно в 1.5-5 раз, по сравнению со сборкой обычными компиляторами
> | |
2.54, Аноним (-), 14:53, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ахаха, какое молниеносное переобувание. От "сишка быстрее раста на 5 процентов" до "замедление в 5 раз это норм" и "GC рулит".
| |
|
1.6, Аноним (1), 13:36, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Конечно не мешало бы более подробно расписать чем сабж лучше zig, но в первом приближении ничем.
| |
|
2.21, Аноним (-), 13:57, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
zig если и иожно сравнивать - то с СИ.
До плюсов ему еще расти и расти.
(Если он вообще дорастет до чего-то внятного).
А сабж, как заявляется, поддерживает С++ - вот уже причем "чем лучше".
Как в анекдоте
"- Ну чем он лучше?
-- Чем Zig!"
| |
2.25, Анонимусс (-), 14:10, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
А чем вообще зиг лучше чем си в плане безопасности?
Как сделать use-after-free на "безопасном" zig'e демонстрировали не раз и не два
opennet.ru/openforum/vsluhforumID3/132732.html#71
opennet.ru/openforum/vsluhforumID3/134833.html#48
У зига есть свой unsafe для рантайма @setRuntimeSafety(false), что те же зиганутые и сишники указывали недостатком раста.
В общем когда это васяноподелие дорастет хотя бы до версии 1.0 - тогда и поговорим.
| |
|
3.27, Аноним (1), 14:15, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Так если на сабжевом языке начать снимать штаны через голову тоже можно что-нибудь словить. Так что в этом плане паритет.
| |
|
4.29, Анонимусс (-), 14:20, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Так если на сабжевом языке начать снимать штаны через голову тоже можно что-нибудь словить.
Та ну. Это просто максимально упрощенный пример.
В сишке тоже такие примеры выглядят смешно "Да кто так вообще может писать??".
И при этом use-after-free попадает в тройку самых популярных причин дыреней.
> Так что в этом плане паритет.
Теорема Эскобара в действии))
Ну и зачем оно тогда нужен. Особенно с такими ограничениями как жырнючие указатели и ломание ABI.
| |
|
|
2.40, Аноним (36), 14:39, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Тем что не нужно переписывать код и сишки? И там что заявлена поддержка механизмов "безопасного" программирования?
Каким местом ты вообще сюда zig приплёл?
| |
|
3.47, Аноним (-), 14:46, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Тем что не нужно переписывать код и сишки?
Что значит не нужно?
Прямо в новости написано:
Другим ограничением Fil-C является принципиальный отказ от сохранения совместимости на уровне ABI для кода на C/C++, что не позволяет связывать собираемый в Fil-C код с библиотеками и объектными файлами, собранными другими компиляторами.
Это значит, что для взаимодействия с другими либами тебе придется переписывать все или почти все.
А учитывая просадки в производительности - то нафига оно вообще надо?
| |
|
|
|
2.45, Аноним (36), 14:43, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Нет, это не внешняя тулза для поиска "сишных дыреней" при выполнении.
А встроенная система для поиска "сишных дыреней" при выполнении.
То есть скорее на минималках, чтобы его можно было в рантайме с меньшими издержками применять. И нельзя было просто выключить извне.
| |
|
1.10, Аноним (-), 13:40, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> - All allocations are *garbage collected* using
Ну, блин, да... яву можно и из сишки сделать. Я так то и -fsanituze=address,undefined могу вхреначить с тем же успехом.
| |
|
2.23, Аноним (-), 14:00, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
А поможет?
Тут на форуме кидали ссылку на "очередную сишную дырень" в проекте обмазанному санитайзерами.
Искать лениво, но там оно не помогло.
| |
|
3.48, Аноним (36), 14:47, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Потому что не было покрыто тестами, очевидно.
И фаззинг не выполняется, или неправильно прикручен.
Если бы релиз распространялся бы с санитайзерами, то твоя "дырень" бы просто не выстрелила, так как программа бы скоропостижно скончалась. И работала бы в 10 раз медленнее.
| |
|
2.28, Фнон (-), 14:17, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Не поможет.
Вот хрестоматийный пример из такой "ненужной" SSL либы:
Целая куча дыреней в OpenSSL/LibreSSL - https://www.opennet.ru/opennews/art.shtml?num=58622
- чтение из области вне границ буфера
- Use-after-free
- двойное освобождение памяти
- некорректное разыменование указателя
- разыменование указателя NULL (x2)
ну и еще одна логическая проблема, которая решается нормальными типами
При этом ворнинги включены, оба проекта обмазаны санитайзерами по самое немогу - и memory, и thread, и еще куча других
https://github.com/openssl/openssl/actions/runs/4124496105
Там даже фаззинг какой-то есть.
Так что санитайзеры и анализаторы это как "мертвому припарки".
Да может что-то найдется из элементарного, но скорее для самоуспокоения "я сделал все что мог"))
| |
|
1.13, Аноним (-), 13:45, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Хаха, сколько лет дµряшечники рассказывали "да не нужны никакие дополнительные проверки, нормальный программист не совершает таких глупых ошибок!".
А тут бац - парад мутантов, то TrapCʼы, то Circleʼы и вот новый, с применением 16-байтовых указателей и отказом от сохранения совместимости на уровне ABI для кода на C/C++ и сборщиком мусора/.
Наверное что-то случилось))
| |
1.16, Stanislavvv (?), 13:51, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> С незначительными модификациями поддерживается сборка OpenSSH
Интересно, это как когда-то в дебиане, где вырезали нужное?
| |
|
2.38, Аноним (-), 14:37, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> С незначительными модификациями поддерживается сборка OpenSSH
> Интересно, это как когда-то в дебиане, где вырезали нужное?
Жирный набросю. В дебиане ничего нужного не вырезали.
Это просто вы почему-то считаете ненужное нужным.
| |
|
1.22, Аноним (22), 14:00, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А он то этот компелятор новый совместим полностью со старым кодом? Или это новое слово в науке, типа Раста.
| |
|
2.24, Фнон (-), 14:07, 17/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Ты вообще статью читал? Ну вот честно?
"Другим ограничением Fil-C является принципиальный отказ от сохранения совместимости на уровне ABI для кода на C/C++, что не позволяет связывать собираемый в Fil-C код с библиотеками и объектными файлами, собранными другими компиляторами."
Ответ - нет, придется пересобирать-перекомпилять.
| |
|
3.56, Аноним (36), 14:55, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Ответ - нет, придется пересобирать-перекомпилять.
Ого, чтобы программа была собрана новым компилятором, оказывается её нужно пересобрать новым компилятором!
| |
|
|
1.34, Аноним (-), 14:29, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Лол, история Раста это прямо как в цитате
"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой, а потом" ... начинают лепить корявые велосипеды из костылей
Видно последние заявления АНБ и прочих про "дырявые языки" слишком много пятых точек подожгло.
| |
|
2.43, Аноним (22), 14:41, 17/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Rust уже вытеснил Си, поэтому Сишники подсуетились и выпустили костыль...
| |
2.46, Аноним (55), 14:45, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> собираемые в Fil-C программы медленнее примерно в 1.5-5 раз
> Язык Rust занервничал?
Скорее, питоны с жабками - конкурент, понимаешь, появился ...
| |
|
3.52, Аноним (-), 14:51, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Какой конкурент?
Если нужно побыстрому накидать кода - например прототип сделать, то этот описанный монстр не подойдет.
Потому что где ты будешь искать кучу сишников и плюсовиков, которые еще и эту шнягу выучили?
Обычно мозгов среднестатистичного СИшника шаватает на С99.
А питонистов с жаваскриптерами - много.
| |
|
4.58, Аноним (55), 15:00, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Какой конкурент?
По жору ресурсов, вестимо - там же "луДьшее" из обоих миров: куча бойлерплейта и прочего "заката солнца вручную" от сишки и производительность от питона!
На самом деле, сабж имеет смысл для определенной ниши применения - пересобрать то, что "больно" или дорого переписывать (или делать серьезный аудит) так, чтобы дырени не торчали приглашающе наружу, в тырьнет.
| |
|
5.62, Аноним (-), 15:12, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> На самом деле, сабж имеет смысл для определенной ниши применения - пересобрать
> то, что "больно" или дорого переписывать (или делать серьезный аудит) так, чтобы дырени не торчали приглашающе наружу, в тырьнет.
Меня терзают смутные сомнения (с)
А не выйдет ли что переписать проще, чем прикостыливать этого монстра?
| |
|
|
|
|
1.51, Аноним (51), 14:48, 17/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Еще раз повторяю. Это просто противоречит причинам, по которым создавался Си. Посмотрите сурцы Win 3.1 SDK. Там все на голом асме. Вот чтобы не писать на нем, но иметь те же преимущества по размеру и производительности - изобрели Си. Если Си завернуть в виртуальную машину или что то типа того - от него не будет никакого толку. Просто нынешнее поколение проггеров это не понимает. Они уже привыкли писать ОС на питоне. После этого уже ничего не страшно.
| |
|
2.57, Аноним (-), 14:55, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да, ты полностью прав.
СИ - это переносимый ассемблер *
И его делали, чтобы даже самые тупые прогаммеры (не осилившие фортран) могли наовнячить по быстрому какой-то код. Типа ПХП из 70х.
Про корректность или безопасность вообще никто не думал.
Как и про "архитектуру языка". Об этом начали думать примерно когда сочиняли АДУ.
* но придется обмазаться ifdef'ами. и подобрать нужную версию компилятора.
И надеяться, что создатели компилятора обработали UB и твой код не сделает тебе больно.
И молиться, что при переходе на след версию языка поведение не поменяется.
А так, в общем вполне переносимый))
| |
|
|