The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Набор POSIX-утилит и декодировщик AV1, написанные на Rust

22.09.2024 08:26

Опубликован выпуск проекта posixutils-rs 0.2.1, нацеленного на разработку на языке Rust коллекции утилит командной строки, упоминаемых в стандарте POSIX и соответствующих его требованиям (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed и т.п.). При разработке по возможности используются уже существующие crate-пакеты. Код posixutils-rs распространяется под лицензией MIT.

Проект сосредоточен главным образом на достижении соответствия требованиям спецификации POSIX.2024 и не планирует обеспечивать совместимость с утилитами GNU, функциональность которых воспринимается авторами как необоснованно раздутая. Тем не менее, в posixutils-rs планируется реализовать наиболее популярные расширенные опции утилит GNU, встречающиеся в существующих скриптах.

Из отличий от проекта uutils, развивающего реализацию GNU Coreutils на Rust, упоминается более широкий охват утилит, включающий, среди прочего, создание таких упоминаемых в POSIX компонентов системы, как vi, awk, bc, m4, cron и компилятора c99, а также минималистичный подход, подразумевающий предоставление только минимально необходимого набора опций, определённых в спецификации POSIX или без которых проблематично обойтись. Программы в наборе posixutils-rs изначально поставляются в виде самодостаточного кода, который можно использовать в других проектах.

В настоящее время 55 развиваемых проектом утилит соответствуют POSIX и находятся на стадии покрытия тестами, в 22 утилитах обеспечена необходимая функциональность (но пока не реализовано покрытие тестами), 20 находятся на стадии чернового варианта, а работа над 44 утилитами ещё не начата. Среди утилит c реализованной функциональностью: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Среди утилит, работа над которыми не начиналась: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi.

Из изменений в новом выпуске отмечается добавление реализаций утилит awk, m4, ps, realpath, join, time, fuser и gencat, а также начальная поддержка работы в окружениях на базе Си-библиотеки musl и предоставление библиотеки ftw для обхода дерева каталогов с защитой от состояний гонки.

Дополнительно можно отметить анонс проекта rav1d, развивающего высокопроизводительный декодировщик формата кодирования видео AV1, написанный с использованием языка Rust. Разработка ведётся через портирование на Rust кода декодировщика библиотеки dav1d, отличающейся высокой производительностью. Подготовленный порт полностью совместим с API библиотеки dav1d. Выбор в пользу портирования существующей библиотеки вместо написания собственного варианта объясняется желанием использовать в качестве основы уже проверенный и протестированый декодировщик, чтобы избежать возможных проблем с совместимостью и учесть все тонкости работы с форматом AV1.

В текущем виде подготовленная реализация rav1d на 6% отстаёт по производительности от dav1d, но в дальнейшем после оптимизации кода планируется добиться паритета в производительности. Для достижения высокой производительности использован подход при котором базовые функции декодирования примитивных значений реализованы на ассемблере в виде unsafe-блоков (задействован ассемблерный код из dav1d), данные в которые поступают после проверки написанными на Rust функциями разбора потока (прошлый опыт выявления уязвимостей в декодировщиках видео показывает, что проблемы в основном возникают в высокоуровневом коде разбора формата, а не в низкоуровневых операциях с данными).

  1. Главная ссылка к новости (https://github.com/rustcoreuti...)
  2. OpenNews: Выпуск набора утилит GNU Coreutils 9.5 и его варианта на языке Rust
  3. OpenNews: Первый стабильный выпуск sudo-rs, реализации утилит sudo и su на языке Rust
  4. OpenNews: Подготовлен вариант GNU Coreutils, переписанный на языке Rust
  5. OpenNews: Адаптация Debian для использования реализации coreutils на языке Rust
  6. OpenNews: Эксперимент по переводу Gentoo на использование варианта Coreutils на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61908-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (268) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Walker (??), 09:11, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +22 +/
    Количество звездочек на GitHub свидетельствует о том, что это не вызывает большого интереса у пользователей.


     
     
  • 2.3, Аноним (3), 09:18, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +20 +/
    Это всё потому что вы ставите мало лайков и не подписыватесь на канал во время пулреквеста. Алгоритмы гитхаба не продвигают проект! Все ссылки и куаркоды в описании!
     
     
  • 3.59, 12yoexpert (ok), 14:25, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +21 +/
    нажал на колокольчик и рассказал всем в соцсетях

    я даже начал ходить по квартирам с Rust Book и рассказывать людям о Rust

     
     
  • 4.68, Аноним (68), 14:53, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    А как книжка называется, не "Сторожевая башня Rust"?
     
     
  • 5.97, OpenEcho (?), 17:44, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > А как книжка называется, не "Сторожевая башня Rust"?

    Да нет же, зачем мешать кирилицу с латиницей?, - "Ржавая сторожевая башня"

     
  • 2.17, Аноним (17), 10:19, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так эта шляпа только опубликовалась. У uutils 17k звёзд, например.
     
     
  • 3.265, Аноним (265), 22:30, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так мы узнали примерное количество адептов Раста с аккаунтом на GitHub.
     
  • 2.22, Facemaker (?), 10:27, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >Количество звездочек на GitHub свидетельствует о том, что это не вызывает большого интереса у пользователей.

    Спасибо за напоминание, добавил звезду.

     
     
  • 3.257, Аноним (257), 17:01, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чему именно добавили?
     

  • 1.5, Аноним (5), 09:28, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    как там, cargo уже дотягивает до conan или хотя бы до vcpkg?
     
     
  • 2.137, Прохожий (??), 22:32, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Давно превзошёл.
     
     
  • 3.266, Аноним (265), 22:33, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В раздутости разве что.
     
     
  • 4.277, Прохожий (??), 23:14, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    По функциональности, конечно.
     
  • 2.304, Александр (??), 15:45, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Conan2 та ещё жесть. Причём первая версия была огонь: простая, легко интегрировалась куда угодно. Чего у авторов руки зачесались - не понятно. Хоть я и адепт плюсов, но эту тенденцию в комьюнити не понимаю: чем больше страдаешь, тем лучше. Это я о CMake и Conan2, которые чуть ли не негласные стандарты
     

  • 1.7, Аноним (7), 09:31, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +14 +/
    Поясните, каким образом эти новости связаны? Связь в том, что оба проекта -- едва рабочая шляпа?
     
     
  • 2.138, Прохожий (??), 22:33, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет. Подсказка находится в названии новости.
     

  • 1.10, Аноним (10), 09:34, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >не планирует обеспечивать совместимость с утилитами GNU, функциональность которых воспринимается авторами как необоснованно раздутая.

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

     
     
  • 2.66, Аноним (-), 14:52, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Рекомендую авторам хотябы недельку поюзать солярку без гнутых утилит, а
    > потом говорить о раздутой функциональности.

    Они видите ли будут юзать - какое нибудь putty.exe, а вон то - для других, типа кушайте их безопасный код.

     
     
  • 3.225, ryoken (ok), 10:10, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>putty.exe

    Вообще говоря, в 10-ю венду с какого-то апдейта уже встроен клиент SSH. Это ваше пусси устарело.

     
     
  • 4.324, Аноним (-), 20:49, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>>putty.exe
    > Вообще говоря, в 10-ю венду с какого-то апдейта уже встроен клиент SSH.
    > Это ваше пусси устарело.

    Оно уж совершенно точно не мое. Ибо нахрен это в линухе вперлось? Оно там страшное и кривое, так что его популярность в районе плинтуса.

    Ну и это, когда уже ядро то на Linux заменят? Вроде уж все слагаемые на месте :). Что они, GDI на Linux Kernel портануть не могут? Пусть вайн возьмут, во!

     
  • 2.173, мяв (?), 00:13, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    alpine юзаю не один год.
    все замечательно.
    единственное достоинство гнутых утилит - меньше в конечном итоге будет пайпов, а следовательно, форков.
    но оно невелируется тем, что в консоли Вы разницу во времени просто не заметите. а в скриптах, что посикс-совместимые, что не посикс-совместимы утилиты использовать - крайне сомнительно, ибо один черт все тормозить будет, за исключением ситуаций, когда Вы, например mv/cp/mkdir/etc в сабшелле пускаете; обойтись легко можно средставми даже исклюяительно посикс-шелла(в плане обработки текста), что уж говорить о ash-подобных.
     

  • 1.13, Аноним (13), 09:45, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А что, пусть люди тренируются. Всяко лучше, чем заниматся всякими ...
     
  • 1.14, Fracta1L (ok), 09:54, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Вчера я попробовал собрать amdgpu_top, написанный на расте. Оно по зависимостям скачало адову тучу крейтов (на мелкую утилитку, ага), среди которых была пачка чего-то там для windows.

    Сдаётся мне, в лице растаманов мир увидит такое цунами дерьмокодинга, какого не видел даже в лице джаваскрипто- и питоноприматов.

     
     
  • 2.36, Аноним (36), 12:18, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Оно по зависимостям скачало адову тучу крейтов (на мелкую утилитку, ага), среди которых была пачка чего-то там для windows.

    И запихало все в один бинарник

     
  • 2.46, Аноним (-), 12:53, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Adding windows v0.52.0 (latest: v0.58.0)
    Если про эту строчку так это просто добавление в зависимости от winit

    https://github.com/rust-windowing/winit/blob/dfea49f48850670cdfe3dc91949a9f8f2
    Вы не не увидили фразы downloading/compiling windows

     
  • 2.65, Аноним (-), 14:49, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Вчера я попробовал собрать amdgpu_top, написанный на расте. Оно по зависимостям
    > скачало адову тучу крейтов (на мелкую утилитку, ага), среди которых была пачка
    > чего-то там для windows.

    А помните, дети, какой-то академ нахваливал WinNT? А потом он его на свое горе еще и попробовал... да... :)

    > Сдаётся мне, в лице растаманов мир увидит такое цунами дерьмокодинга, какого не
    > видел даже в лице джаваскрипто- и питоноприматов.

    Надо же, фракталушка стал догадываться кто в основном ведется на хайп и во что имнено это ему отольется :)
      

     
  • 2.159, Прохожий (??), 23:25, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > на мелкую утилитку, ага

    Эта "мелкая утилитка" на самом деле умеет довольно многое. Не находишь? Поэтому совсем не удивительно, что ей надо много чего для своей работы.

    > среди которых была пачка чего-то там для windows

    Слышал звон, да не знаю, где он. Windows - это всегда операционная система? Или это может быть элементом интерфейса? Утилитка, которую ты решил собрать, она в двух режимах работать умеет: текстовом и графическом. Попробуй поразмышлять над этим на досуге.

    > Сдаётся мне, в лице растаманов мир увидит такое цунами дерьмокодинга, какого не видел даже в лице джаваскрипто- и питоноприматов.

    Кто-то здесь говорил про токсичное Rust-сообщество. Похоже, ему есть чему поучиться в этом плане у ненавистников этого языка программирования.

     
     
  • 3.171, Аноним (-), 00:06, 23/09/2024 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 3.216, Аноним (216), 09:31, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Слышал звон, да не знаю, где он. Windows - это всегда операционная система? Или это может быть элементом интерфейса?

    ну я тоже только слышал звон, да и компиляцией не занимаюсь
    https://github.com/Umio-Yasuno/amdgpu_top/blob/03d7c87bd66c233cb38e99243e8bc1f
    https://crates.io/crates/windows/0.52.0
    Это точно элемент интерфейса?

     
     
  • 4.233, farewell (ok), 11:22, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Через этот crate можно отрисовать виндовый GUI
     
     
  • 5.235, Аноним (216), 11:36, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    круто
    1. таки получается, что это все таки "пачка чего-то там для windows". И оно не только для GUI
    2. зачем там виндовый GUI? оно от libdrm зависит и на винде работать не может
     
  • 3.267, Аноним (265), 22:39, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >токсичное Rust-сообщество

    Все так и есть.

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

    Типичное лицемерие растовщиков "а нас то за що???". Типа когда они тут токсят против другиях ЯП это норм, а их ни-ни.

     
     
  • 4.278, Прохожий (??), 23:17, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Растовики косят языки (всегда называя конкретные аргументы, а не типа вот этого "синтаксис не такой"). Но речь вышла шла не о языках, всё же.
     
  • 2.258, Аноним (-), 17:07, 23/09/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     

     ....ответы скрыты (11)

  • 1.15, n00by (ok), 10:06, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    6% производительность вроде бы немного -- такую разницу иногда можно получить, просто сменив транслятор. Но это потеря на обёртке над оптимизированным асмом. Если в первом приближении принять, что работа обёртки занимает 10% времени, то получается новый код медленнее на 60%?
     
     
  • 2.207, Андрей (??), 08:12, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    тут главный вопрос - зачем ? Ибо во-первых 20 человекомесяцев это дофига, а во-вторых - зачем это нужно, если AV1 на расте уже был и называется на 80% также "rav1e", причём ещё и находится в репозиториях "xiph", т.е. той же тусовки, что развивает ogg и пр.
     
     
  • 3.213, n00by (ok), 09:20, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Этот вопрос сложнее, чем прикинуть цифры. Если с POSIX-утилитами очевидно -- меняют лицензию и уходят от GNU, то тут теряюсь в догадках.
     
  • 3.230, Аноним (-), 10:54, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > тут главный вопрос - зачем ?

    Странный вопрос. Но еще более странная аргументация, в которой есть собственно ответы))

    Вот смотри: rav1e - AV1 encoder. ENCODER.
    А rav1d это что? AV1 decoder. DECODER.
    Видишь как просто?

    А теперь попробуй осознать насколько тупо звучит твое во-вторых - "Зачем же нужен декодер, если у нас уже есть энкодер?"

    А вообще можно было зайти на страницу проекта, благо ссылка есть прямо в новости, и прочитать его цели.
    Основные: выкинуть сишку на мороз и при этом использовать тот же асм-код что dav1d и оставить совместимость интерфейсов.

    - librav1d is designed to be a drop-in replacement for libdav1d
    - Move dav1d's C code to Rust for memory safety
    - Reuse the assembly code from dav1d and make it easy to frequently synchronize it

     

  • 1.18, Аноним (18), 10:19, 22/09/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +3 +/
     

     ....ответы скрыты (2)

  • 1.24, Аноним (24), 10:43, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Код posixutils-rs распространяется под лицензией MIT.

    Опять корпорациям помогают.

     
     
  • 2.37, Аноним (37), 12:24, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Код posixutils-rs распространяется под лицензией MIT.
    > Опять неправильным корпорациям помогают.

    Во-во, а нужно чтоб только у Гугла, Амазона, Клаудфляра и прочих SaaS халява была. Тогда да, тогда наступит светлое гпл-будущее!!!


     
  • 2.39, Аноним (17), 12:27, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    То ли дело линукс под жипиель, который разрабатывают корпы. Двойные стандарты - во!
     
     
  • 3.52, Аноним (52), 13:53, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так конечно за них же никто не разработал бзд или мит версию.
     
  • 3.131, Анониссимус (?), 21:42, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Корпы разрабатывают линукс под жипиель --> корпы помогают юзерам
    Растеры разрабатывают под бздёй --> растеры помогают корпам
     
     
  • 4.166, Аноним (166), 23:36, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > растеры помогают корпам

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


     
  • 3.135, Аноним (135), 22:26, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > То ли дело линукс под жипиель, который разрабатывают корпы. Двойные стандарты - во!

    Расскажи какие корпы dav1d делали? :). И вот GPL кстати помогает конверсии оных в тягловую силу, а не тех кто растаскивает проект по норкам.

     
     
  • 4.239, Аноним (-), 12:47, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так dav1d как раз под BSD.
    Потому что выпускать декодер под гнураком - это нужно быть ну очень особо одаренным.
    Его же никто использовать не сможет, ни в одну железку не засунешь.
     
     
  • 5.326, Аноним (-), 20:54, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Так dav1d как раз под BSD.

    Ну он и был ни жив ни мертв фиг знает сколько.

    > Потому что выпускать декодер под гнураком - это нужно быть ну очень особо одаренным.

    Ну вот именно декодер - таки, пожалуй, да.

    > Его же никто использовать не сможет, ни в одну железку не засунешь.

    Крутая идея - устроить халяву железячникам, получив с них - фигу. Впрочем они могут просто взять модуль HW декодера так то.

     
  • 2.75, Аноним (75), 15:09, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты наверное не в курсе, что 90% ядра пилят программисты на зарплатах в корпорациях, а не Вася Пупкин из Усть-Подпивасинска???
     
     
  • 3.79, Аноним (79), 15:32, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Они и пилят благодаря гпл. Или почему ты думаешь они фряху не пилят подумай на досуге.
     
     
  • 4.136, Аноним (135), 22:27, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Они и пилят благодаря гпл. Или почему ты думаешь они фряху не
    > пилят подумай на досуге.

    Вон там success story от всяких ластиков и редисок - как корпы у них нашару надергали кода, вернули фигу - все еще хотите им пермиссивную халяву устраивать? :)

     
     
  • 5.198, Аноним (79), 08:01, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Отличный пример вреда лицензий bsd и apache для своих авторов.
     
  • 4.167, Аноним (166), 23:38, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Или почему ты думаешь они фряху не пилят

    Кроме лицензий есть ещё модели разработки

     
     
  • 5.200, Аноним (79), 08:02, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Модель разработки меняется в зависимости от задач и не выбита в камне.
     
  • 4.226, Советский инженер (ok), 10:33, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Или почему ты думаешь они фряху не пилят подумай на досуге.

    фряху не пилят, а LLVM пилят. LLVM не маленький проект.

    почему так? подумай на досуге.

     
     
  • 5.240, Аноним (-), 12:49, 23/09/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.242, Аноним (242), 12:57, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что на зарплате или на прикорме у Яббла. И нужно, в первую очередь, огрызку.
     
  • 5.321, Аноним (5), 20:08, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    потому что нужно подсадить всех на подконтрольный корпорастам llvm с несвободной лицензией, после чего закрутить гайки и грести бабло лопатой
     

  • 1.25, Аноним (36), 10:46, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    > rav1d
    > написанный на языке Rust.

    Assembly 65.3%
    Rust 17.1%
    C 16.1%

     
     
  • 2.29, Я (??), 11:26, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    на 17.1% безопаснее по памяти и лучше алгоритмы, чем остальные
     
     
  • 3.33, Аноним (79), 12:11, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В чем безопасТность заключается в ансейф блоках?
     
     
     
    Часть нити удалена модератором

  • 5.42, Аноним (79), 12:32, 22/09/2024 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
  • 4.140, Прохожий (??), 22:38, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В том, что они выделены этим самым unsafe. То есть, их сразу видно.
     
     
  • 5.174, мяв (?), 00:23, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    когда весь проект - сплошной unsafe-блок, смысла в этом маловато :)
    суть их в том, чтобы пару раз заморочиться, описать условия применения, а потом в safe-коде их зафорсить. и дергать уже безопасное апи.
    но в кодеке, очевидно, никто таким заниматься не будет из за требуемой скорости. следовательно, толку с раста в нем - ноль.
     
     
  • 6.202, Аноним (79), 08:03, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Недоброжелатель всегда может в ансейф блок внедрить небезопасный код. И никто этого не найдет.
     
  • 6.279, Прохожий (??), 23:19, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я думаю, это будет продолжаться до тех пор, пока будут внешние зависимости от библиотек на других языках. Как только и эти библиотеки перепишут, количество unsafe-блоков заметно поуменьшится. Кроме того, будет довольно просто заменять unsafe, на обычный код, потому что, как я уже выше заметил, такие блоки сразу видны, их легко искать.
     
     
  • 7.293, мяв (?), 00:49, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    что изменится?
    должно быть так:
    unsafe -> абстракция -> safe.
    а имеем черт-те что.
    и если Вы unsafe из extern'ов передвините в unsafe-блоки, это будет не более, чем перестановка кроватей.
     
  • 5.201, Аноним (79), 08:02, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это как жёлтая ленточка безопасности в ней нуль и всем на неё плевать.
     
  • 4.192, Аноним (192), 03:56, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В том, что ты новость непонятно как читаешь Особенно сложно для тебя понять то ... большой текст свёрнут, показать
     
  • 3.211, Андрей (??), 08:18, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых есть более каноничный для rav1e, который более растоманский, чем данный протест против здравого смысла с очередным переписыванием сишного софта, а во-вторых не на 17%, а на куда меньше, ибо распределение потенциальных ошибок для упомянутых языков не пропорционально доле кода, так например в ассемблере вообще могут не выделять память, а только обрабатывать, да и не очевидно какая доля работы с памятью осталась на си, а какая перетекла и стала "безопаснее" на расте.
     
     
  • 4.281, Прохожий (??), 23:33, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Во-первых, rav1e - это ENCODER, тогда как rav1d - DECODER.
     
  • 2.44, Аноним (37), 12:43, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/

    > Assembly 65.3%
    > Rust 17.1%
    > C 16.1%

    То ли дело
    > dav1d
    > написанный на языке Си.
    > Assembly 79.8%
    > C 19.7%

     
     
  • 3.45, Аноним (45), 12:52, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > То ли дело
    >> dav1d
    >> написанный на языке Си.

    Пруфы будут?

     
     
  • 4.123, Аноним (37), 20:29, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Пруфы будут?

    Пруфы чего тебе нужны, дорогой?
    Посмотри в код что ли, ну или открой какую нибудь новость о dav1d:
    > Код проекта написан на языке C (C99)
    >

     
  • 3.50, commiethebeastie (ok), 13:37, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    .v_w8_loop:
        vpbroadcastq        xm1, [srcq+ssq*1]
        lea                srcq, [srcq+ssq*2]
        vpblendd            xm2, xm1, xm0, 0x03 ; 0 1
        vpbroadcastq        xm0, [srcq+ssq*0]
        vpblendd            xm1, xm1, xm0, 0x0c ; 1 2
        punpcklbw           xm3, xm1, xm2
        punpckhbw           xm1, xm2
        pmaddubsw           xm3, xm6
        pmaddubsw           xm1, xm6
        pmulhrsw            xm3, xm7
        pmulhrsw            xm1, xm7
        packuswb            xm3, xm1
        movq       [dstq+dsq*0], xm3
        movhps     [dstq+dsq*1], xm3
        lea                dstq, [dstq+dsq*2]
        sub                  hd, 2
        jg .v_w8_loop
        RET

    Нахера и зачем, когда это делается интринсиками?

     
     
  • 4.58, Аноним (45), 14:15, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > это делается интринсиками

    Для какого компилятора и какой версии?
    Скорее всего асм-код генерируют (закрытой тулзой из закрытых исходников). Щас бы нетривиальные алгоритмы писать на асме миллионами строк кода.

     
     
  • 5.93, Аноним (93), 17:08, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это ты ещё скажи спасибо что этот асм код не из проприетари выдрали.
     
  • 4.219, n00by (ok), 09:37, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >     RET
    > Нахера и зачем, когда это делается интринсиками?

    Что бы помешать транслятору заинлайнить, очевидно.

     

  • 1.28, мяв (?), 11:18, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    зачем оно надо, если rust - не в POSIX? было б куда интереснее увидеть это все на с99.
     
     
  • 2.32, Rust Foundation (?), 11:52, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > rust - не в POSIX

    Это досадное недоразумение. Скоро исправим.

     
     
  • 3.34, Аноним (79), 12:12, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Каким образом?
     
  • 2.73, Аноним (75), 15:07, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Твой posix давно почил в бозе так же как и вся идеология юникс. Один только сустемд чего стоит.
     
     
  • 3.85, Аноним (-), 15:54, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Твой posix давно почил в бозе так же как и вся идеология юникс. Один только сустемд чего стоит.

    POSIX как таковой ортогонален идеологиям unix и прочим systemd.

     
  • 3.168, мяв (?), 23:54, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    все, кому нужно написать портабельный софт, как в соответствии со стандартом писали, так и пишут. ибо альтернатив в этом поле нет.
     
  • 2.86, Аноним (86), 16:16, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >зачем оно надо?

    наверное для Redox'а это надо, чтобы была POSIX-совместимость.

     
     
  • 3.169, мяв (?), 23:56, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    хм.. ну если они прослойку сделают, то, может, оно даже жить будет.
    вон, как в fuchsia
     
  • 3.322, Аноним (5), 20:10, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    скорее для винды
     

  • 1.31, Аноним (31), 11:49, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    То есть, они переписали их на rust не один раз, а два?
     
     
  • 2.41, Аноним (17), 12:29, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кто они? Это две разных команды людей.
     
     
  • 3.43, Аноним (79), 12:33, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Задачка сколько раз две разных команды людей перепишут один и тот же код.
     
     
  • 4.268, Аноним (265), 22:46, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Задачка со звездочкой - во сколько раз при этом повысится безопасность.
     
  • 2.105, Аноним (37), 18:29, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > То есть, они переписали их на rust не один раз, а два?

    А сколько раз будет с учетом bsdutils, gnu coreutils, toybox, busybox, sbase?
    Хотя не, это ведь си, значит другое!


     
  • 2.188, Аниним (?), 01:49, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А почему бы и нет? Тебе-то что?
     
  • 2.246, freehck (ok), 14:10, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > То есть, они переписали их на rust не один раз, а два?

    Да нет, побольше уже. Это как минимум третья попытка.
    О предыдущих двух на опеннете уже писали, можете поискать.

     

  • 1.35, Аноним (35), 12:12, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >и компилятора c99

    Ну всё, теперь и компилятор си перепишут на расте!

     
     
  • 2.53, Аноним (52), 13:55, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А безопасно нет будет.  
     

  • 1.48, Аноним (48), 13:27, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    За пару месяцев освоил раст более или менее. Пилю на нем проект, пока написал около 5к строк всего. Очень мне нравится язык и экосистема. Недостатков в языке я особо не заметил, а вот в среде разработки они есть пока что, но не сильные. В итоге все очень нравится, свои проекты хоббийные я только на нем пилить далее буду, он прям хорошо подходит.
     
     
  • 2.70, Аноним (75), 15:04, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > 5к строк всего

    Ничоси "всего". Большинство любителей шлепать формочки и прочие джаваскриптеры такого за всю жизнь не пишут.

     
     
  • 3.96, Аноним (7), 17:20, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Откуда такие познания? Я просто напомню тебе, что это 5KLOC. Средний проект _начинающих_ любителей клепать формочки и джаваскриптеров в 10-20 раз больше (считая только собственный код ессно). Это буквально проект уровня привет мир. Справедливости ради, мои привет миры на расте в пределах 1000 строк. Мои сишные привет миры были на десятки тысяч строк. Ну, тут главное не задумываться о низкой эффективности разработки с растом (и последующей необходимости переписывать всё на плюсы). Некоторые утилиты вполне неплохо себя ощущают и на расте, если забыть про высокую ресрсоёмкость и странные проблемы с тулчейном. Главное тут, чтобы было приятно использовать и обновлять компоненты.
     
     
  • 4.102, zk (?), 18:18, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это хело ворлд на 1000 строк? Врешь собака, код в студию!
     
     
  • 5.106, Аноним (7), 18:33, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Моя первая программа (самая первая) использовала curl с openssl, libxml2 и pcre2, висела в кроне и буквально печатала строку в лог в зависимости от ситуации. Плюс разбор аргументов, вывод сообщений и код, чтобы не падала в минимально нештатных ситуациях. Это уже тысячи строк. Ты какой-то странный.
     
  • 5.107, Аноним (7), 18:41, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кстати, ознакомься с gnu hello.
     
     
  • 6.111, Аноним (111), 18:56, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Коммент дня! :D
     
     
  • 7.125, Аноним (7), 20:54, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не уверен, что ты хотел этим сообщить, но вот то, что местные писатели операционок в последний раз видели си в школе (и то, это был какой-нибудь борланд, с реальным общего имеющий достаточно мало), вполне вероятно. Им не помешало бы освежить в памяти, что такое си, и как он выглядит.
     
     
  • 8.156, Прохожий (??), 23:06, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С давным-давно морально устаревшим языком программирования Си интересно ознакамл... текст свёрнут, показать
     
     
  • 9.194, Проходил мимо (?), 07:43, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот не надо про морально устаревший и про антропологов Всякому языку свое мес... текст свёрнут, показать
     
     
  • 10.227, Аноним (-), 10:35, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Абсолютно верно Напр место на свалке истории Или в клубах по интересам, как ... текст свёрнут, показать
     
  • 10.280, Прохожий (??), 23:28, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Почему ж не надо Эти языки объективно не справляются с многократно возросшей сл... большой текст свёрнут, показать
     
     
  • 11.299, Проходил мимо (?), 07:31, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Уважаемый Прохожий, лично по моим ощущениям Rust намного превосходит по сложност... большой текст свёрнут, показать
     
     
  • 12.334, Аноним (334), 22:07, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А что насчёт возможных вариантов условной компиляции Которая просто необходимо ... текст свёрнут, показать
     
  • 12.359, Аноним (-), 13:17, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не, как писать программы на C я так и не смог понять Сколько я не читал литер... большой текст свёрнут, показать
     
     
  • 13.365, Проходил мимо (?), 14:28, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кривые байты целенаправленно попадают, например, в прямые логи, которые надо про... текст свёрнут, показать
     
  • 9.259, _ (??), 17:56, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А ещё интереснее смотреть на собачек Павлова от программирования Оне тяффкают... текст свёрнут, показать
     
     
  • 10.262, Аноним (-), 18:14, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хм ну так не тяфкай Никто же тебя не заставляет Если тебя взяли в плен и пы... текст свёрнут, показать
     
  • 4.109, Наноним (?), 18:51, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Справедливости ради, мои привет миры на расте в пределах 1000 строк.

    Лет 20 назад я операционку свою писал на Си и она уместилась в чуть менее 300 строк. Могла в менеджмент памяти и даже tcp ip. Что ты там такого нaгoвнoкoдил на 1000 строк?

     
     
  • 5.112, Аноним (7), 18:57, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это как раз дело не хитрое. А ты вот пробовал писать корректный код? Или там хотя бы конкатенировать строки.
     
  • 5.220, Аноним (220), 09:47, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А у меня все программы уместились в одну строку! Правда она довольно длинная...
     
  • 4.152, Прохожий (??), 23:03, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Это буквально проект уровня привет мир.

    Эту оценку, конечно, нельзя назвать сколь-либо объективной. Потому что кроме собственных 5 тыс. строк может быть задействовано библиотек на 100 тыс. строк. И это уже очень далеко от проекта уровня "Привет, мир".

     
  • 2.87, Аноним (86), 16:18, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >он прям хорошо подходит

    а для чего он хорошо подходит, если не секрет?

     
     
  • 3.141, Прохожий (??), 22:44, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, в общем, для всего практически, кроме узкоспециализированных областей, конечно (типа запросов к реляционным базам данных, например). Это язык программирования универсального назначения.
     
  • 3.151, Аноним (48), 23:03, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У меня два хоббийных проекта. 1. Это один децентрализованный веб сервис. 2. Это транслятор одного вида специализированных текстов в другой.
     
     
  • 4.165, Аноним (165), 23:34, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Достаточно серьёзные программы
     
     
  • 5.323, Аноним (5), 20:12, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    снимите себе номер
     

     ....большая нить свёрнута, показать (26)

  • 1.49, Аноним (-), 13:28, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Проект сосредоточен главным образом на достижении соответствия требованиям спецификации POSIX.2024 и не планирует обеспечивать совместимость с утилитами GNU

    Ясно понятно. Враги Свободы.

     
     
  • 2.54, Вы забыли заполнить поле Name (?), 14:04, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тьфу, даже переписать нормально не могут. Казалось бы держи-обводи, слабо связанный код, но нет. Никуда не годится, позор.
     
  • 2.76, Аноним (75), 15:10, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Свобода это отсутствие лицензии вообще. В остальном это не свобода, но ТЕ или ИНЫЕ ограничения.
     
     
  • 3.103, zk (?), 18:20, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Свобода противоречивое слово.
     
  • 3.197, Аноним (197), 07:59, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не, если лицензии нет, то код вообще использовать нельзя.
     
  • 3.218, Аноним (-), 09:34, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Копилефт ограничивает самоупроавство и произвол проприетарщиков и прочих копирастов. Это означает свободу для простыч программистов и пользователей.
     
     
  • 4.234, Аноним (-), 11:25, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Копилефт ограничивает самоупроавство и произвол проприетарщиков и прочих копирастов.

    Да, то-то же оно ограничило самоуправство всяких Гуглов, Амазонов и прочих SaaS провайдеров.
    "облачные провайдеры создают производные коммерческие продукты и занимаются перепродаже в виде облачных сервисов, но не принимают участия в жизни сообщества и не помогают в разработке."

    > Это означает свободу для простыч программистов и пользователей.

    Мы же говорим про ЖоПЛь рак который запрещает программисту зарабатывать на продаже кода?
    Мозолеед в своем манифесте отлично показал свое отношение к программистам, предложениями запретить высокие зарплаты и отправить разработчиков ходить с протянутой рукой.
    ИЧСХ украсть емакс и продать, ему это не помешало.

     
     
  • 5.269, Аноним (265), 22:50, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    GPL не запрещает программисту зарабатывать на продаже СВОЕГО кода.
    GPL запрещает программисту зарабатывать на продаже ЧУЖОГО кода.
     
  • 3.221, Аноним (220), 09:52, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Свобода это отсутствие лицензии вообще.

    Нет, если лицензии нет то по закону вроде все права принадлежат написавшему код. То есть его нельзя использовать никак, только смотреть. Для свободы есть передача в общественное достояние (public domain), но оно существует не везде, поэтому есть всякие лицензии типа CC0 или Unlicense: https://en.wikipedia.org/wiki/Public_domain_equivalent_license

     

  • 1.61, Аноним (-), 14:34, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > реализованы на ассемблере в виде unsafe-блоков
    > (задействован ассемблерный код из dav1d)

    Вот такое вот хреновое лето^W Rust :D

     
  • 1.63, Аноним (63), 14:35, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спам и DDoS - это превышение полномочий (abuse). Предлагаю перевод всего и вся на rust расмстаривать как аналогичное действие.
     
  • 1.67, Аноним (75), 14:52, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Со всеми этими нейросетями могли бы просто сразу переписать в машинные коды. Зачем посредник в лице яп?
     
     
  • 2.241, а (?), 12:49, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    сразу в машинные коды любой компилятор может, а вот на раст - тут думать надо
     
  • 2.270, Аноним (265), 22:51, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда ЗП получит тоже нейросеть.
     

  • 1.80, Аноним (80), 15:32, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Опять новость, что на расте что-то ПЕРЕписывают давно и успешно работающее.

    Это симптомчик, потому что, как по мне, у нормального программиста есть куча идей что свое новое написать. Но видимо с нуля кодить на расте слишком сложно...

     
     
  • 2.99, Аноним (37), 17:57, 22/09/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.189, Продавец (?), 01:58, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Дело не только в этом. Примеры чего-то сложного написанные на расти 10 лет назад сейчас уже не компилятся, и поди ещё там разбери без пол литра что в куске безсмысленного врапа там не нравится новому компилюсу. Я лично не особо по алкахе, наверно по этой причине и забросил адаптироваиь
     
     
  • 3.271, Аноним (265), 22:53, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Зато нет UB" говорили они.
    Потому что если нет стандарта, то нет и UB.
     
  • 2.199, Аноним (197), 08:01, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это проблема тех, кто постит новости, а не раста. Например, про Nushell я на опеннете вообще ниразу не видел, а это - самый крутой шелл и язык программирования на замену баша и его выпускают уже несколько лет.
     
     
  • 3.222, Аноним (222), 09:53, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Например, про Nushell я на опеннете вообще ниразу не видел,

    А это https://www.opennet.ru/51375-shell что?

     
     
  • 4.298, Аноним (197), 05:30, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Один раз 5 лет назад? О чём и речь. Зато про переписывание каких-то утилит постоянно сообщают.
     

  • 1.82, Аноним (82), 15:33, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Разве они уже не переписаны на zig?
     
     
  • 2.190, Продавец (?), 01:59, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну допустим, и что?
     

  • 1.83, Аноним (83), 15:48, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Дополнительно можно отметить анонс проекта rav1d, развивающего высокопроизводительный декодировщик формата кодирования видео AV1, написанный на языке Rust. Разработка ведётся через портирование на Rust кода декодировщика библиотеки dav1d, отличающейся высокой производительностью

    Отлично, как допишут - можно будет обратно на си переписать. Будет безопасно: всё проверено растовым borrow-checkerом.

     
     
  • 2.114, Аноним (-), 19:03, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Отлично, как допишут - можно будет обратно на си переписать. Будет безопасно:
    > всё проверено растовым borrow-checkerом.

    Сиплюсплюсеры в соседней новости уже о чем-то догадываются :)

     
  • 2.160, Аноним (-), 23:28, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Отлично, как допишут - можно будет обратно на си переписать. Будет безопасно: всё проверено растовым borrow-checkerом.

    Было бы интересно посмотреть.
    И посчитать сколько CVE средний сишник модет сделать, при переписывании готового кода)

     
     
  • 3.191, Продавец (?), 02:00, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну посмотри если интересно
     
  • 3.272, Аноним (265), 22:57, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, сколько при этом исправит, ведь CVE это не только ошибки памяти и гарантий от них Раст не дает. https://github.com/Speykious/cve-rs
     

  • 1.89, Аноним (86), 16:27, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    интересная фраза - "проблемы в основном возникают в высокоуровневом коде разбора формата, а не в низкоуровневых операциях с данными". Получается, что низкоуровневые язык ассемблера и С гораздо надёжнее высокоуровневых языков?
     
     
  • 2.90, Аноним (7), 16:52, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >язык ассемблера и С

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

     
     
  • 3.206, Аноним (79), 08:11, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Просто в низкоуровневом коде проблем никто найти не смог.
     
  • 3.249, Аноним (249), 14:52, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Тоже высокоуровневые.

    Только C.

     
     
  • 4.252, Аноним (7), 16:02, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Макроассемблеры довольно высокоуровневые. Но и современные наборы инструкций процессоров тоже, сложно сравнивать с программированием, как оно выглядело раньше.
     
  • 2.91, Аноним (-), 16:53, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Получается, что низкоуровневые язык ассемблера и С гораздо надёжнее высокоуровневых языков?

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


     
  • 2.108, Наноним (?), 18:46, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    От квалификации зависит. Понятие надёжность слишком расплывчатое.
     
     
  • 3.148, Прохожий (??), 23:01, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Не всё зависит от квалификации. Часто надёжность зависит от используемых инструментов, потому что человеческий мозг не может не ошибаться, каким бы квалифицированным не был его носитель.
     
     
  • 4.208, Аноним (79), 08:13, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Инструмент никогда не может гарантировать безопасность. Это как безопасная бензопила, концептуальна невозможна.
     
     
  • 5.243, Аноним (-), 13:04, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Но может ее существенно улучшить.
    Например в упомянутой бензопиле есть кнопка-стопор, которую нужно выжимать, чтобы она работала.
    Отпустил - сработал цепной тормоз.
    Плюс вторая рукоятка, которая тормозит пилу при обратном ударе.

    И это еще не все!
    Для работы нужны щиток и наушники, а если дело происходит в местах, где человеческая жизнь ценится - то еще и специальные защитные костюмы от порезов (EN 381 или аналог).
    Но такое конечно только для профи.

     
     
  • 6.273, Аноним (265), 23:00, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Можно и маникюр в бронекостюме делать, а то вдруг пилочкой уколешся.
     
     
  • 7.282, Прохожий (??), 23:37, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если палочка отравлена смертельным ядом - вполне разумно. Хотя речь не о маникюре в таком случае будет идти, разумеется.
     
  • 7.307, Аноним (-), 16:23, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > а то вдруг пилочкой уколешся.

    Разумеется)) А еще можно требовать нормальной стерилизации инструментов. Кто ценит свое здоровье и свою жизнь.
    Не всем же нравится делать маникюр или тату  в какой-то рыгаловке, где инструмент в лучшем случаем помоют под краном после предыдущего клиента. Ну а ты можешь продолжать))

     
  • 3.170, Аноним (-), 00:00, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > От квалификации зависит.

    Не только. Инструмент тоже решает.
    Вот в ядре линукс есть некий Theodore Ts'o, который лабает ext4. Пишет линукс с 90х. Просто море опыта у кадра.

    И что? В 2013 году он закоммитил вот такую портянку github.com/torvalds/linux/commit/dc6982ff4db1f47da73b1967ef5302d6721e5b95.
    Через 9 лет (2022 год) тысячи глаз наконец-то рассмотрели там уязвимость CVE-2022-1184.
    Которую смогли исправить только со второй попытки.

    > Понятие надёжность слишком расплывчатое.

    Разумеется. Но назвать кучу повторяющих из года в год однотипных дыреней нельзя назвать надежность ни в какой ситуации))

     
     
  • 4.303, Серб (ok), 13:37, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Через 9 лет (2022 год) тысячи глаз наконец-то рассмотрели там уязвимость CVE-2022-1184.

    Зачем ты с этим CVE везде носишься?

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

    Добавили проверку на правильность данных перед добавлением новых блоков.

    К чему ты это привел? В расте нельзя считать данные с файла и не проверить их достоверность?

     
     
  • 5.309, Аноним (-), 16:59, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > К чему ты это привел?

    Это прекрасный пример отличной квалификации ядрописак и шикарных инструментов. Просто близкий к эталону.
    Таких примеров конечно море, но именно Тсэ один из тех, кто копротивляется внедрению раста и заявил "вы не заставите учить раст".
    Хотя он шикарный сишник и какой-то анон кидал список его CVE за последние пару лет.
    И там типичные сишные дырени - use-after-free, выход за границы буфера, double free, переполнение.

    > В расте нельзя считать данные с файла и не проверить их достоверность?

    Разумеется можно. А вот что будет дальше - вопрос))
    Вот будет ли use-after-free, а?

     
     
  • 6.314, Серб (ok), 18:30, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> К чему ты это привел?
    > Это прекрасный пример отличной квалификации ядрописак и шикарных инструментов. Просто
    > близкий к эталону.
    > Таких примеров конечно море, но именно Тсэ один из тех, кто копротивляется
    > внедрению раста и заявил "вы не заставите учить раст".
    > Хотя он шикарный сишник и какой-то анон кидал список его CVE за
    > последние пару лет.
    > И там типичные сишные дырени - use-after-free, выход за границы буфера, double
    > free, переполнение.

    И таки да. Он является отличным примером. Его слушают и слышат. В отличии от тебя.

    >> В расте нельзя считать данные с файла и не проверить их достоверность?
    > Разумеется можно. А вот что будет дальше - вопрос))
    > Вот будет ли use-after-free, а?

    В расте можно хранить данные и и макроданные описывающие эти данные отдельно? В разных коллекциях?

    Что произойдет, когда макроданные будут показывать одно а данные будут другими? Паника?

    И чем паника в ядре лучше use-after-free?

     
     
  • 7.316, Аноним (-), 18:34, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Что произойдет, когда макроданные будут показывать одно а данные будут другими? Паника?
    > И чем паника в ядре лучше use-after-free?

    Тем что у тебя просто упадет ядро.
    И это будет видно! И ты увидишь трейс и возможно починишь.
    А не "у нас тут 10 лет жил бекдор, с получением рута.. всем конечно было плевать".

    Явная проблема всегда лучше, чем неявная.

     
     
  • 8.327, Аноним (334), 20:54, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А чего она вдруг явная Для ее срабатывания надо заранее сформировать файловую с... текст свёрнут, показать
     
  • 7.319, Аноним (319), 18:57, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Он является отличным примером

    Необучаемого и не хотящего учиться?
    Который годами повторяет одни и те же ошибки?
    И в состоянии только давить авторитетом?
    Да, он отличный пример)) Именно поэтому его и привел.

    > Его слушают и слышат.

    А это мы еще посмотрим, т.к. история пока не закончилась.
    Сейчас придет лесник и поставит на место зарвавшегося дида.
    Незаменимых людей нет.

    > И чем паника в ядре лучше use-after-free?

    Там выше уже ответили, но и я повторюсь.
    Чтобы не заметить панику нужно очень-очень постараться. Это будет явная проблема.
    Более того, в логе должно будет указано что и где запаниковало.
    А так у вас уязвимости живут годами (вот эта - 9 лет) и никто ничего не видел))

     
     
  • 8.328, Аноним (334), 20:58, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Поэтому он и разработал файловые системы А те кто на расте пишут делают каждый ... текст свёрнут, показать
     
     
  • 9.329, Аноним (-), 21:08, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Обычно да, потому чаще всего это логические ошибки Но сейчас, к сожалению, еще ... большой текст свёрнут, показать
     
     
  • 10.330, Аноним (334), 21:47, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Шедевр Каждый раз разные ошибки Вы столько не придумаете Некомпетентность во ... большой текст свёрнут, показать
     

  • 1.115, Вы забыли заполнить поле Name (?), 19:11, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > В настоящее время 55 развиваемых проектом утилит соответствуют POSIX и находятся на стадии покрытия тестами, в 22 утилитах обеспечена необходимая функциональность (но пока не реализовано покрытие тестами), 20 находятся на стадии чернового варианта, а работа над 44 утилитами ещё не начата.

    И эти люди в ядро лезут...

     
     
  • 2.163, Аноним (-), 23:30, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > И эти люди в ядро лезут...

    ̶Н̶у̶р̶г̶а̶л̶и̶е̶в̶ Торвальдс разрешил (с)
    И вообще, разве кого-то нужно спрашивать куда можна лезть или нет?
    Ядро это помойка, в которой даже базовый менеджмент памяти без ошибок сделать не смогли.
    Бедный Линус в прошлом интервью жаловался.

     
     
  • 3.172, Вы забыли заполнить поле Name (?), 00:13, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ядро это помойка, в которой даже базовый менеджмент памяти без ошибок сделать
    > не смогли.
    > Бедный Линус в прошлом интервью жаловался.

    Вопрос остается. Ну и зачем тогда лезть туда?) Взяли бы да рядом сделали как надо. Но видимо есть нюанс...

     
     
  • 4.195, мяв (?), 07:50, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    так делают ведь.
    вон, есть монолитная kerla.
    очень даже ничего, как по мне. проект развивается, заинтересованные есть.
    если б мне были интересны ядрописание с растом, скорее всего, тоже б туда пошла.
    хотя, черт его знает, как они код там пишут, прошлась только беглым взглядом.
     
  • 4.228, Аноним (228), 10:42, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Может людям не нравится когда намусарено и нарыгано, вот они решили убраться Яд... большой текст свёрнут, показать
     
     
  • 5.290, Вы забыли заполнить поле Name (?), 00:14, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Сильные утверждения Но проверять я их, конечно, не буду с Ну Дрю Деволт тоже... большой текст свёрнут, показать
     
  • 4.231, Советский инженер (ok), 10:58, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Но видимо есть нюанс...

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

     
     
  • 5.291, Вы забыли заполнить поле Name (?), 00:15, 24/09/2024 Скрыто ботом-модератором     [к модератору]
  • +3 +/
     
     
  • 6.311, Аноним (-), 17:01, 24/09/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 7.313, Вы забыли заполнить поле Name (?), 18:23, 24/09/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 8.318, Аноним (-), 18:45, 24/09/2024 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 9.325, Вы забыли заполнить поле Name (?), 20:53, 24/09/2024 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     

     ....ответы скрыты (11)

  • 1.124, Аноним (-), 20:53, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Они тоже оценили pest, я вижу, bc и awk на нём. И прально, лучший генератор парсеров. Меня чёт понесло последнее время в написание интерпретаторов, и pest это что-то.
     
     
  • 2.139, Аноним (-), 22:34, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Они тоже оценили pest, я вижу, bc и awk на нём. И
    > прально, лучший генератор парсеров. Меня чёт понесло последнее время в написание
    > интерпретаторов, и pest это что-то.

    Как вы яхту назовете... название больно уж говорящее, не обижайтесь когда дустом спрыснут :))

     
  • 2.275, Аноним (265), 23:05, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Некоторым нравится оригинальничать и переизобретать велосипеды из уже хорошо работающих вещей.
     
     
  • 3.317, Аноним (-), 18:38, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что ты называешь "хорошо работающими вещами"? Скажи, пожалуйста, что ты имеешь в виду flex/bison, чтобы я мог над тобой поглумиться.
     

  • 1.128, nume (ok), 21:13, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Подобные проекты и испортили репутацию языка...
     
     
  • 2.143, Аноним (-), 22:51, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Репутацию конкретно этого языка портит его сообщество. Оно настолько таксичное, что подобное поведение некоторых товарищей среди апологетов других языков ещё нужно поискать.
     
     
  • 3.145, Прохожий (??), 22:56, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –8 +/
    Причём здесь сообщество или отдельные его представители? Заслуга языка не в сообществе, а в его возможностях.
     
     
  • 4.146, Аноним (-), 22:58, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Заслуга языка не в сообществе, а в его возможностях.

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

     
     
  • 5.162, Прохожий (??), 23:30, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Гм. Амазон, Гугл, Клаудфлэр пишут что-то боолее серьёзное. И что-то не слышал от них, чтобы они чем-то были недовольны. Дашь ссылку на их недовольство на этот счёт?
     
     
  • 6.209, Аноним (79), 08:14, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ничего серьёзного там не написано только раздутый фанатиками хайп.
     
     
  • 7.283, Прохожий (??), 23:40, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Дай определение слову "серьёзный". Например, в моём понимании, прокси-сервер, которым ежедневно пользуются сотни миллионов людей по всему миру - вполне себе серьёзный софт. Или ОС, которая установлена на примерно миллиарде смартфонов (на самом деле, пока цифра намного меньше, но через несколько лет  порядок будет примерно таким).
     
  • 7.292, Вы забыли заполнить поле Name (?), 00:17, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ничего серьёзного там не написано только раздутый фанатиками хайп.

    Этот эксперт в каждой новости про раст упоминает эти конторки.

     
     
  • 8.310, Аноним (-), 17:00, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Щито поделаешь десу с 175 _ 12484 _ 175 Если Воины супротив Раста в к... текст свёрнут, показать
     
     
     
     
     
    Часть нити удалена модератором

  • 12.335, Аноним (-), 22:13, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    О очередной свидетель 14 лет Учитывая что раст 1 0 вышел в 2015, а сейчас 2024... большой текст свёрнут, показать
     
  • 6.297, Продавец (?), 02:47, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Строгости ради, эти конторы поднялись не на расте. Да и на чем там только не пишут. И ведроид далеко не на расте написан. Ни гугл движок ни прочее
     
     
  • 7.306, Аноним (-), 16:20, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Строгости ради, эти конторы поднялись не на расте.

    Эм... разумеется, они все старше раста.
    Но почему-то они признали его пригодным для себя.

    > Да и на чем там только не пишут.

    Тоже верно. Вот гугл целый Го придумал

    > И ведроид далеко не на расте написан.

    Но тем не менее новый код они пишут в том числе на расте, а также активно переписывают старый (в основном с си)

     
     
  • 8.320, Продавец (?), 20:00, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я думаю там всё эволюционно, они пробуют всё подряд а потом смотрят - покатило н... текст свёрнут, показать
     
  • 3.164, Аноним (-), 23:33, 22/09/2024 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
  • 2.144, Прохожий (??), 22:55, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > испортили репутацию языка

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

    А так, если говорить о мире, то до сих пор Rust - один из самых любимых языков на том же StackOverflow, судя по последнему опросу. То есть, его репутация в мире по-прежнему высока, кто бы что здесь не утверждал.

     
     
  • 3.263, _ (??), 18:15, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Rust - один из самых любимых языков на том же StackOverflow

    Ржака :) Детишки, вам уж за 25 небось, а своих мозгов всё ещё нет :) Взрослейте!
    Ну и как говорят сами SoF - 'есть "любимые" языки, а есть языки на которых и в правду пишут...' (С) :-р

     
     
  • 4.264, Аноним (-), 18:36, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну и как говорят сами SoF - 'есть "любимые" языки, а есть языки на которых и в правду пишут...' (С) :-р

    Срочно беги к гуглу, рассказывай что они з̶а̶б̶ы̶л̶и̶ ̶п̶р̶о̶ ̶к̶о̶с̶м̶и̶ч̶е̶с̶к̶у̶ю̶ ̶р̶а̶д̶и̶а̶ц̶и̶ю̶ совершиаю непоправимую ошибку!
    И к редхату с нвидией и драйвером Nova.
    В обьщем настало время тебе показать свою кекспертность!


     
  • 4.286, Прохожий (??), 23:57, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мне уже за 50 Так, к слову И я давно уже своей головой думаю, хотя, бывает, к ... большой текст свёрнут, показать
     
  • 3.276, Аноним (265), 23:07, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Rust - один из самых любимых языков на том же StackOverflow

    Так мы узнали, что StackOverflow не умеет боротся с накрутками.

     
     
  • 4.285, Прохожий (??), 23:51, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ладно, популярность политика накручивать, или какой-нибудь певички. Но языка программирования?!
     

  • 1.134, Аноним (134), 22:07, 22/09/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +2 +/
     

  • 1.203, мяв (?), 08:04, 23/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    кстати, аноним, вон, выше написал про нейронки.
    а ведь действительно, если подумать, то кучу вещей в С проверить можно статически. я вот недавно столкнулось с некорректным поведением при сборке с -О3 на кланге(в gcc окей все было).
    дело было в выходе за пределы массива. только функция не сегфолтилась, а возвращала 3.
    чатгпт помог, кинула код, сказала, что черт-те что происходит и он сказал вместо <=, влепить <.
    и если так задумать - нет ведь сложного ничего делать это оффлайн.
    условно, в качестве процедуры тестирования, собираешь парой уомпиляторов с -О{1..3}, запускаешь тесты и если что-то не то - показываешь анализатору, который нащупает у тебя, например, выход за пределы массива(в моем случае это легко было, ибо просто не та проверка в while(). если происхождение аргумента неизвестно - то просто юзеру ткнуть туды) и там уж починить.
    или, еще проще: -fsanitize=undefined в компиляторах, поддерживающих это + тесты.
    я сейчас оба варианта и использую, но с нейронкой, ибо пока такого магического анализатора не подвезли.
    можно сказать "а зачем все это, если rust?", но ведь:
    1. С99 в POSIX
    2. раст ничего предложить кроме паники в UB не может. а паниковать не проблема и в С, да еще и код мой работать везде будет.
    более того, с -fsanitize=undefined, gcc точно так же сует везде проверок. поэтому для обеспечения определенного поведения, в целом, достаточно обычного юнит-тестирования  всвязке со сборкой парой компиляторов.

    мне вот писал кто-то здесь не так давно про UB в С и то шо задетектить нереально, приводя в качестве примера переполнение signed номеров.
    но, честно сказать, так и не дошло, на кой их пользовать где-то за пределами четко известных ретерн-кодов и тд.
    я себе typedef с long unsigned int на uint сделала и проблем вроде пока не вижу.

     
     
  • 2.223, Аноним (220), 09:54, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Откройте для себя статические анализаторы.
     
  • 2.224, n00by (ok), 10:02, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Часть таких ошибок ловятся запретом применять < и >, когда достаточно == или !=.
     
     
  • 3.250, мяв (?), 15:24, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    в контексте выхода за границы массива как это поможет?
    в любом случае нужно делать ++Iter и сравнивать с размером.
    иль я туплю?
     
     
  • 4.254, Аноним (254), 16:27, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    насколько я знаю, в современных высокоуровневых языках предлагается вообще не использовать индексы и итераторы. Обрабатывать коллекции предикатом, строить конвейеры данных и т.д.
     
     
  • 5.294, мяв (?), 00:56, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    было б неплохо, если бы "современные высокоуровневые языки" предложили что-то bash'евских массивов и for.
    написал for Name in "${ArrName[@]}" и делаешь с Name шо угодно.
    и проще, и довольно гибко.
     
     
  • 6.302, n00by (ok), 09:22, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    for_each есть в Си++ со времён библиотеки "Степанов и Ли". Но и итераторы там вроде бы не считаются дурным тоном.
     
  • 5.343, Аноним (343), 00:00, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот именно! Например, в СОВРЕМЕННОМ языке D:

    foreach (index, flag; flags)

    Это цикл по флагам, где каждый флаг появляется в flag + дополнительно имеем значение индекса в index! Вообще никаких гемороев по отслеживанию конца массива!
    Но нет, все как сcыклuвые лемминги повторяют ахинею про "Ди не устоялся", зато на Ржу бегут толпами! *facepalm*

     
  • 4.301, n00by (ok), 09:17, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > в контексте выхода за границы массива как это поможет?
    > в любом случае нужно делать ++Iter и сравнивать с размером.
    > иль я туплю?

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

    Прединкремент - это давнее требование к стилю в Си++, что бы в общем случае избежать лишней копии итератора. Оттуда же и ограничение на operator==().

    Если с индексами, то и там в общем случае достаточно проверить граничное условие, т.е. !=. В том случае можно ведь заменить < на != ? В остальных зависит от конструкции цикла, иногда приходится потратить 5 минут на переоформление, но в сумме это экономнее по времени, чем позже ловить ошибки.

     
  • 3.341, Аноним (343), 23:50, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Довольно тупой рулез. У меня как раз такой хардкодинг с == != нещадно вырезается!!
    Пример: функция возвращает -1 при ошибке или 0...индекс. Вызывающий код - если его писал зелёный салага, то будет так:

    if (fn() == -1) паника!

    Но что если завтра я добавлю -2 в качестве индикатора ДРУГОЙ ошибки?! Тут его недальновидный код и сел в лужу (и ни один стат.анализатор это не отловит, т.к. по сути для него возвращаемое целое просто стравнивается с другим целым). Умный код будет такой:

    if (fn() < 0) паника!

     
     
  • 4.346, мяв (?), 05:21, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    тут Вы в лужу сели - для этого есть errno.
     
  • 4.353, n00by (ok), 10:49, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Довольно тупой рулез.

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

    > У меня как раз такой хардкодинг с == != нещадно вырезается!!

    Как видно, моё предложение делает даже больше заявленного. Отшить левых от проекта - задача необходимая для выживания.

     
  • 2.232, Аноним (-), 11:10, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В общем случае - не поможет Возможно у тебя код проще А может ты просто пишешь... большой текст свёрнут, показать
     
     
  • 3.251, мяв (?), 15:55, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    из ссылки, как я поняла, основную опасность представляет какой-то косяк с типами... большой текст свёрнут, показать
     
     
  • 4.255, Аноним (254), 16:35, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    конечно, если всё делать аккуратно, то никаких ошибок и не будет. Но, видимо, не все люди одинаково ответственные и дисциплинированные.
     
  • 4.261, Аноним (-), 18:12, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но если оно не обязательно, то можно же не делать Мы ж тут профи, это зеленые ... большой текст свёрнут, показать
     
     
  • 5.287, мяв (?), 23:58, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а как мне надо posix y следовать, ни раст, ни с не катят это откуда инфа в ... большой текст свёрнут, показать
     
     
  • 6.296, мяв (?), 02:38, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >это откуда инфа?

    не то в цитату выделила, подумала, что речь о "установка на NULL и проверка - UB".

     
  • 6.305, Аноним (-), 16:17, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это улучшения в С23 Жить стало лучше, жить стало веселей с Причем мотивация ... большой текст свёрнут, показать
     
     
  • 7.347, мяв (?), 05:27, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    жесть.
    в коммитете забыли, что posiх их дальше 99й версии не признает?
    >любое взаимойдействие с A будет UB

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

     
  • 6.308, Аноним (-), 16:46, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мне кажется, что по причине мы уверенны в своем коде и своем опыте Ну и в том... большой текст свёрнут, показать
     
     
  • 7.348, мяв (?), 05:50, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >К сожалению нет.

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

    так нет ведь.
    в POSIX с UB/ID куда осторожнее, любая неопределенность(как правило, довольно некритичная) решается обычной проверкой этого состояния в бойлерплейте.
    ну и там уж делать что-то на свое усмотрение.
    если же реализация стандарту не следует, или реализует другой - то это уже и не моя проблема, ибо работа была заявлена в окружении, реализующем конкретный стандарт конкретной версии.

    >Плюсы вообще делались как надстройка над СИ.

    так а раст?
    только там даже не над С, а во многом над кишками llvm.

     
     
  • 8.354, Аноним (-), 11:29, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Даже POSIX имеет много версий И меня терзают смутные сомнения, что код для ISO ... большой текст свёрнут, показать
     
     
  • 9.361, мяв (?), 13:27, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    у него, как правило, define _POSIX_C_SOURCЕ на таргет-версию и времени на пере... текст свёрнут, показать
     
     
  • 10.369, Аноним (369), 20:35, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    https blog rust-lang org 2016 04 19 MIR html Вроде как компилятор Rust перевод... текст свёрнут, показать
     
  • 4.336, Аноним (-), 22:13, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    errno сам по себе привносит возможностей наступить на грабли, поскольку это стат... большой текст свёрнут, показать
     
     
  • 5.349, мяв (?), 06:29, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >errno сам по себе привносит возможностей наступить на грабли

    об этом в разделе NOTES в мане написано описан правильный путь обхода.
    я так делаю:
    Call1();
    catch {
      catchExact(EINVAL){
        printf("%s\n", "EINVAL!");
        exit(3);
      }
      exit(1);
    }

    catch - сохраняет errno в локальную переменную, ставит на 0, потом проверяет локальную.
    catchExact - так
    же смотрит в локальную.
    поэтому достаточно просто catch совать сразу после вызова, а там уж делать, что угодно.
    ставится errno через throw(Code, FailReturn), но он и завершение сразу дергает, поэтому ситуаций, когда отправленный код кто-то перебьет, не возникает.

    >Вот тут занулили, free вызвали, а там указатель остался ждать, когда какой-нибудь код наступит на use-after-free.

    ну, во-первых, вызвали не free, а бойлерплейт, который сразу все занулит.
    во-вторых, перед использованием "левого" указателя(того, который передал вызывающий, например), дергаем уже другой бойлерплейт, который указатель проверит и запаникует в случае чего.
    <...>PointVerify(point1, point2) {
      // Process point1, point2
    }

    но тут важно: бойлерплейт должен дергать if и взаимодействовать с указателем только если все окей, вещи вроде  
    if (!<...>) { exit(1); }
    не пойдут, т.к. компилятор может спокойно порядок исполнение поменять.

    >из функции указателя на локальный массив.

    это обычно компилятор контроллирует, без примера я тут мало что скажу.

    >Это отстой же.

    это цена портабельности же.
    никто, опять же, не мешает вокруг стандартных функций добавить бойлерплейт для авто-отлова. я так и делаю сейчас. в голове в итоге держать приходится не очень мнрго, ибо знаю, что в случае чего будет паника и я это увижу в любом случае.
    > ли дело Maybe/Option/Result

    ну будет Maybe/Option/Result в общепринятом стандарте - тогда и будет "то ли дело".
    я момент с posix'ом специально выделила. не было б такой задачи - я б и дальше на cs писала.

    >Загляни в

    мне в каждый файл в репе заглянуть?
    по ссылке - summary репозитория.

     
     
  • 6.352, Аноним (-), 09:45, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мало ли что там написано, язык доверяет программисту, что тот не забудет это сде... большой текст свёрнут, показать
     
     
  • 7.363, мяв (?), 14:12, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Ты о чём сейчас?

    о том, что негоже напрямую все кишки вываливать. проще, безопаснее все в define'е/функции спрятать.

    >И допустим, я делаю так:

    пример, как абстрактным был, так таковым и остался. ибо Вы проблемную функцию спрятали.
    я не поняла ничего, честно сказать, все так же не могу ничего ответить, ибо не вижу, что у Вас там в log().
    мне так же не ясно, зачем Вы логгеру передаете  FILE* ?
    он в него писать будет?
    почему тогда открывает вызывающий, а не глав. поток логгирования?
    и почему он как vararg передается?
    шо вообще там происходит?

    >longest_string_of_two

    #include <stdio.h>

    char *getLongestStr(char *str1, char *str2){
      if (strlen(str1)>strlen(str2)){
        return str1;
      }
      else {
        return str2;
      }
    }

    char *foo(char *in) {
        char *local_str = "1234";
        return getLongestStr(in, local_str);
    }

    int main(void){
      printf("%s\n", foo("12"));
    }

    вот с реализацией.
    UB нет. или я поняла Вас неверно?
    >Плевал я на портабельность

    держете в курсе? ладно. надо было с этого начать.
    >И всё, и нет никакого позикс

    действительно. ведь Вы реализовали черт-те что на нестандартизированном языке.
    если бы "POSIX-совместимость" предполагала "реализовать функции из POSIХ libc на любом языке", я бы это все не писала :)

    >errno это legacy из 80-х.

    я Вам выше про него написала.
    Вы ничего "по факту" не сказали, только про легаси.
    > даже если это posix, то это не пример для подражания, более того зашквар этим пользоваться для современного программиста

    ну, уж извините, IEEE в этом мире больше решает, чем мнение анонима на опеннете.

    касаемо Линусовского кода - мое заявление было скорее про случаи, когда "по 2 значения в переменную пихают", на NULL ставить указатели бояться, экономя "такты процессора".

     
     
  • 8.368, Аноним (-), 17:12, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Пфф Например она может выглядеть так static InterThreadChannel log_channel ... большой текст свёрнут, показать
     
  • 5.351, Аноним (-), 09:41, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, насколько это увеличивает вероятность ошибки И как оно потом выгляди... большой текст свёрнут, показать
     
     
  • 6.360, Аноним (-), 13:26, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это уменьшает допустимые размеры для токенов, там поля типа size вовсе не u64, и... большой текст свёрнут, показать
     
     
  • 7.366, Аноним (-), 14:33, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, без проблем У меня познания в настолько низкоуровневом программинге не слиш... большой текст свёрнут, показать
     
  • 4.344, Аноним (343), 00:05, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > по поводу работы с памятью, ошибки *alloc'ов - это всегда не более, чем проверка errno

    Господи, 21 век на дворе! Проверка errno :)) (скупая слеза пробежала по лицу сишаописта)

    Почему ты не пишешь на C#? Отличный язык, громаднейшая библиотека, корпорация за плечами, признание рынка... это ж мечта! Но нет, луддиты нихьт! Будут сипипискать, растаманить, даже пестонить, но на неправославном C# писать не будут! :))

     
     
  • 5.350, мяв (?), 09:11, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    зпочему ты так уверен в своих экстрасенсорных способностях?
    проект изначально на cs и был)
    но, как, надеюсь, сишарпист, понимаешь, clr нигде, кроме винды, макоси и линукса не пашет.
    стояла задача следовать POSIX'у.
     
  • 2.238, Аноним (238), 12:35, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    $cat test.cc
    int main(int argc, char **argv) {
      int k = 0x7fffffff;
      k += argc;
      return 0;
    }
    $clang++ -fsanitize=undefined test.cc
    ./a.out
    test.cc:3:5: runtime error: signed integer overflow: 2147483647 + 1 cannot be represented in type 'int'

    Проект Clang также делает статический анализатор, наверное в нём этот самый пресловутый искусственный интеллект уже есть.

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


     
     
  • 3.253, мяв (?), 16:07, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    статический - это когда Вы файл кидаете и он Вам тыкает сразу.
    а тут - скомпиль, запусти и молись еще, что на свою ошибку наткнешься.
    иногда довольно сложно это все отлавливать, даже с ubsan'ами
     
     
  • 4.256, Аноним (254), 16:44, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может тогда лучше использовать не С, а С++ ? С++ настолько ненадёжный , что валится от любой ошибки. Программа на С++ строится на невидимом каркасе обработки исключений (даже если в программе нет кода выброса и ловли исключений). этот каркас очень хрупкий, и ломается почти от любой ошибки, хоть с памятью, хоть с потоками. Ошибку будет невозможно не заметить, потому что выдаст странное исключение или abort. Если что, можно и valgrind'ом проверить.
     
     
  • 5.274, мяв (?), 23:01, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    так тогда б я раст предпочла.
    стоит задача posiх'у следовать
     

     ....большая нить свёрнута, показать (38)

  • 1.229, Анониматор (?), 10:53, 23/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    uucp, m4... некрофилия какая-то
     
     
  • 2.340, Аноним (343), 23:45, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зато это родные трупы! :)) На них завязаны какие-нть перделки (на m4 точно). Хотя мне слабо верится, что с 70-го года рынок юникса настолько остался тухлым. Вернее, сама ИТ отрасль! Появилась мультимедия - звук, видосы, всякая биг дата, блокчейны, сошиал-сервисы... а линynсисты всё текст по пайпам гоняют! Это же глупо и устарело лет 30 назад. Набор утилит уже давно должен быть другой, с переосмыслением под современность.
     

  • 1.245, freehck (ok), 14:07, 23/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > не планирует обеспечивать совместимость с утилитами GNU, функциональность которых воспринимается авторами как необоснованно раздутая

    мало ли, что они и как воспринимают
    если не обеспечат полную совместимость, то пользователи сами не поменяют один инструмент на другой
    и если нет административного ресурса в лице red hat, то не светит им нифига

     
     
  • 2.247, Фнон (-), 14:31, 23/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > если не обеспечат полную совместимость, то пользователи сами не поменяют один инструмент на другой

    Если их не будет устраивать новый.
    Например - они не работают с некрософтом.

    > и если нет административного ресурса в лице red hat, то не светит им нифига

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

     
     
  • 3.288, мяв (?), 00:04, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    так-то POSIX'овая реализация старше гнутой.
     
  • 2.289, мяв (?), 00:05, 24/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    полную совместимость обеспечивают со стандарнтом, а не с докой левой реализации.
     
     
  • 3.355, Аноним (-), 11:38, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А почему тогда у нас есть POSIX-certified и Formerly POSIX-certified (хотя автотесты эти ʼбывшиеʼ проходят) ?
    Но еще есть Mostly POSIX-compliant - наверное 'POSIX на полшишечки'.
    Причем в последних вполне распространенные системы типа Android, Darwin и тадам Linux (кроме нескольких дистрибутивов).

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

     
     
  • 4.358, мяв (?), 13:08, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    потому что у одних есть сомвместимость и бумажка, а у других - бумажки нет.
    >наверное 'POSIX на полшишечки'.

    "POSIX на 90+% шышечки" в основном.
    зависет от реализации.
    вообще, я к тому вела, что не ясно, чем и как реализовывать GNU-расширения: ни стандарта, ни процедуры принятия, ничерта. только доки от авторов, не гарантирующие и не принятые формально никем.

     
     
  • 5.362, Аноним (-), 13:28, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > вообще, я к тому вела, что не ясно, чем и как реализовывать
    > GNU-расширения: ни стандарта, ни процедуры принятия, ничерта. только доки от авторов,  не гарантирующие и не принятые формально никем.

    Здорово, правда! (с)

    От так и живем.
    Но если вернуться к сабжу - то на фоне всего остального "отсутствие совмести с ГНУ" это будут проблемы ГНУшников)
    А кому надо - тот будет использоватью


     
  • 3.356, freehck (ok), 12:01, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > полную совместимость обеспечивают со стандарнтом, а не с докой левой реализации.

    очевидно, что Вы никогда не задумывались о том, откуда появляются стандарты
    почитайте на досуге, Вас ждёт много интересных открытий

     
     
  • 4.357, мяв (?), 13:02, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    как, очевидно, и 100500 систем, реализующих POSIX.
    поэтому совершенно наплевать.
     

  • 1.364, мяв (?), 14:19, 25/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    потратила только что 30 мин на написание 2х комментариев.
    ве, короче,ухожу с опеннета, ловите на слове!
     
     
  • 2.367, Аноним (-), 14:35, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > потратила только что 30 мин на написание 2х комментариев.
    > ве, короче,ухожу с опеннета, ловите на слове!

    Ну с тобой хотя бы поговорить как с человеком можно.
    Напоминает темы на ЛОРʼе где могут 10 страниц обсуждать особенность UB в С++.

    Но работать тоже приходится))

     
  • 2.370, Аноним (369), 21:21, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Женщины так всегда, сначала ворвутся в душу ... то есть, я хотел сказать, в чат, а потом убегут, оставив в недоумении: что это было?
     

  • 1.371, Аноним (-), 07:48, 26/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как быстро это работает на Raspberry Pi?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру