Главной проблемой, по его мнению, является потенциальная возможность “паники ядра” в некоторых ситуациях. Это может быть нехватка памяти, когда операции динамического распределения памяти могут завершаться ошибкой. Торвальдс заявил, что такой подход в ядре принципиально недопустим.
Он говорит не о панике ядра, а о панике Раста. Это поведение функций, выделяющих память на куче в юзерспейсе, в стандартной библиотеке.
При этом довольно очевидно, что стандартная библиотека Раста в ядре и не нужна. Так было бы и с любым другим языком. В Linux не используется стандартная библиотека Си и в частности тот же самый malloc. Там свои специализированные аллокаторы.
Вообще да, если посмотреть на статистику нахождения там багов и уязвимостей, в т.ч. вызванных проблемами небезопасной работы с памятью.
Например, вот относительно недавнее исследование. Оно не блещет полнотой, но достаточно репрезентативно.
В отличие от Си, в Расте аудит UB требуется только в unsafe коде. Которого очень мало — в т.ч. учитывая текущую практику разработки системных компонентов или операционных систем.
Например, в сетевом стеке Fuchsia:
Но это практически не важно в условиях, когда сетевая задержка доминирует над задержкой вывода на дисплей. Задержка от ввода до прихода это как минимум 2 RTT — от 20 мс до, допустим, 150 мс. На 60 Гц уже кадр выводится всего на 16,7 мс.
Учитывая распределённость организации, на эти деньги можно нанимать людей по всему миру. И тогда их хватит далеко не на трёх разработчиков компаний, которые пылесосят перегретый рынок.
Посыл у исходного вашего комментария такой, что мол это документация с сайта и она так себе как книга.
Так вот, это второе издание The Rust Book, которое написано с нуля именно как книга для изучения языка. Первое издание в печатном виде не существовало. И поэтому не стоит смешивать сайт и книгу во избежание путаницы, даже если по факту у них сейчас одинаковое содержимое.
Написать статью для школьников, при прочих равных, потребует в разы больше времени. Почему вы требуете от автора траты этого времени, ничего не предлагая взамен — непонятно.
Тут ведь всё добровольно.
Забавно, что семантика тут такая же, как у оператора? из Rust. А тот является стабилизированной, встроенной в язык версией макроса try!(). Макрос try!() есть в Rust с 1.0 (больше 4 лет), и реализацию из пяти строк.
После этого аргументы в духе "макросы усложняют язык" выглядят смешно. Вместо написания макроса на 5 строк всей экосистемой писали if err != nil, и продолжают писать.
Линус Торвальдс остался недоволен рядом моментов в использовании Rust для Linux
Я думаю, что консервативность кодовой базы линукса недооценена. Сомневаюсь, что в mainline возьмут.
Линус Торвальдс остался недоволен рядом моментов в использовании Rust для Linux
Никто и не предполагал, что в ядре будет "обычный Раст". В Redox тоже "не обычный". И в Fuchsia.
Какой serde в ядре?..
Линус Торвальдс остался недоволен рядом моментов в использовании Rust для Linux
Он говорит не о панике ядра, а о панике Раста. Это поведение функций, выделяющих память на куче в юзерспейсе, в стандартной библиотеке.
При этом довольно очевидно, что стандартная библиотека Раста в ядре и не нужна. Так было бы и с любым другим языком. В Linux не используется стандартная библиотека Си и в частности тот же самый malloc. Там свои специализированные аллокаторы.
Rust включили в список основных языков для разработки платформы Android
Я знаю о нём. Он не на любой кодобазе работает. В частности, в Fuchsia код на Расте без Cargo.toml — такое cargo-geiger не умеет.
Rust включили в список основных языков для разработки платформы Android
Вообще да, если посмотреть на статистику нахождения там багов и уязвимостей, в т.ч. вызванных проблемами небезопасной работы с памятью.
Например, вот относительно недавнее исследование. Оно не блещет полнотой, но достаточно репрезентативно.
Rust включили в список основных языков для разработки платформы Android
В отличие от Си, в Расте аудит UB требуется только в unsafe коде. Которого очень мало — в т.ч. учитывая текущую практику разработки системных компонентов или операционных систем.
Например, в сетевом стеке Fuchsia:
К сожалению, именно число строк посчитать уже сложно. Но порядок и так видно, если на 300 тысяч строк кода 300 мест, где могут быть проблемы.
Полку сервисов облачных игр прибыло: оцениваем My.Games Cloud и SberPlay
Но это практически не важно в условиях, когда сетевая задержка доминирует над задержкой вывода на дисплей. Задержка от ввода до прихода это как минимум 2 RTT — от 20 мс до, допустим, 150 мс. На 60 Гц уже кадр выводится всего на 16,7 мс.
Rust Foundation
На мой взгляд это неадекватно. Такие разговоры допустимы на кухне в кругу друзей, а не в публичном пространстве, когда у тебя тысячи подписчиков.
Rust Foundation
Ты почитал что она твитила?
Rust Foundation
Ого, не знал такого про Эшли.
Rust Foundation
Спасибо за перевод. Одно место резануло глаз.
Я думаю, всё-таки не
а что-то типа "колбасить без страха". Hack — быстро писать код, ломая всё вокруг.
Rust Foundation
Учитывая распределённость организации, на эти деньги можно нанимать людей по всему миру. И тогда их хватит далеко не на трёх разработчиков компаний, которые пылесосят перегретый рынок.
Хостим Bitwarden — open-source менеджер паролей
Про какую ты реализацию в итоге?
Хостим Bitwarden — open-source менеджер паролей
Я считаю, для менеджера паролей критично прохождение независимоого аудита безопасности. Для официального сервера его делали дважды, а тут нет
Хостим Bitwarden — open-source менеджер паролей
Да, и в статье это сказано.
Разбор протокола World of Tanks
То, что вы разобрали — это аутентификация, а не авторизация.
Книга «Программирование на Rust»
Посыл у исходного вашего комментария такой, что мол это документация с сайта и она так себе как книга.
Так вот, это второе издание The Rust Book, которое написано с нуля именно как книга для изучения языка. Первое издание в печатном виде не существовало. И поэтому не стоит смешивать сайт и книгу во избежание путаницы, даже если по факту у них сейчас одинаковое содержимое.
C++ быстрее и безопаснее Rust, Yandex сделала замеры
Роман, спасибо за статью.
Динамическая память в системах жёсткого реального времени
Написать статью для школьников, при прочих равных, потребует в разы больше времени. Почему вы требуете от автора траты этого времени, ничего не предлагая взамен — непонятно.
Тут ведь всё добровольно.
Proposal: try — встроенная функция проверки ошибок
Забавно, что семантика тут такая же, как у оператора? из Rust. А тот является стабилизированной, встроенной в язык версией макроса try!(). Макрос try!() есть в Rust с 1.0 (больше 4 лет), и реализацию из пяти строк.
После этого аргументы в духе "макросы усложняют язык" выглядят смешно. Вместо написания макроса на 5 строк всей экосистемой писали if err != nil, и продолжают писать.