что это? какое ядро? это так на 6.7 перешел? у меня void прекрасно работает даже на пне, собственно с пня все и началось это уже потом стал на другие машины его ставить, но я не обновляю ядра пока система сама этого не захочет.
Иногда программы должны паниковать, потому что обрабатывать можно и нужно не все ошибки. Да и странное тут противопоставление, будто код на С свалиться не может. Раст по своему дизайну наоборот снижает вероятность ошибки со стороны разработчика, хоть и не исключает её.
Дано: в ядре linux 10 миллионов строк.
Вопрос: на сколько мегабайт оно распухнет (за счёт информации о строках исходников), если его целиком переписать на раст?
Вспомнилось недавнее письмо Линуса с вопросом, как некомпилируемый код попал ему на ревью. Код от интело-макак, если не ошибаюсь, в такой корпорации должен быть отточенный процесс, чтобы не обосраться при посылке патчей на всё сообщество. А вы до раста докопались.
в расте этот unwrap на каждый чих. Это типичный стиль обработки ошибок: просто сделай unwrap.
Ну это не проблема, это просто проброс ошибки уровнем выше.
К тому же в сишке типичный стиль обработки ошибок - проигнорировать нахер их существование. И ничего, нормально ядро работает, все пользуемся.
В общем я это к тому, что не важно, насколько просто писать плохой код. Важно, насколько сложно писать хороший код.
А это вообще даже не ядерный модуль, насколько я понял. И поведение проги абсолютно нормальное. Ей нужна rw /tmp, т.к. она в неё должна писать. Прога писать не может и завершается с сообщением об ошибке.
Всё, что нужно знать об ошибке тебе сказано. Оформление не очень? Ну всяко лучше чем sigsegv core dumped.
Ну да, а в C практика вообще забывать, что можно в чужую память насрать. А там - дело случая - может упадёт, а может и логины отправить к Пупкину. unwrap упадёт всегда.
В интеле может и макаки, но Линус сам читать сообщения компилятора не умеет и решил, что .c включается в .h, потому что он задом наперёд прочитал что куда включается.
Ты путаешь. Unwrap это не проброс ошибки. Это panic в случае ошибки.
Да, согласен. Но панику можно перехватить, так что технически это тоже проброс ошибки. Ну а если ошибка фатальная, то можно и не перехватывать. Вызывать unwrap совсем на каждый чих конечно плохо, но вызывать unwrap в случае ошибок, которые никак не обработать (как в данном случае) вполне нормально.
Дано: в ядре linux 10 миллионов строк. Вопрос: на сколько мегабайт оно распухнет (за счёт информации о строках исходников), если его целиком переписать на раст?
А по ссылке в твой профиль — макака, не умеющая отличать «панику» в программе на расте от kernel panic.
В его словах есть вполне разумное зерно. От количества .unwrap() в коде на Rust у меня глаза на лоб лезут. Нахрен все эти Result или Option нужны, если на них болт кладётся? Для сравнения, в хачкелле я вживую fromJust или fromRight (аналоги растового unwrap() для разных типов) вообще не встречал, только в каком-нибудь тестовом коде.
Нахрен все эти Result или Option нужны, если на них болт кладётся
Как минимум, чтобы падало в предсказуемых местах, а не срало в память?
Там выше правильно написали — грязный код можно написать на любом языке (и иногда это даже норма, когда пишется прототип), вопрос лишь в том, насколько сложно написать чистый код и чем ограничен ущерб от грязного кода.
в хачкелле
Ну ты сравнил жопу с пальцем (или палец с жопой, в зависимости от твоих предпочтений). Когда у тебя мир сферических в вакууме структур данных и чистых вычислений, fromJust/Left/Right не нужен, да.
Как минимум, чтобы падало в предсказуемых местах, а не срало в память?
Как это связано со сраньём в память? Здесь тупо игнорирование ошибок при возврате из функций. Работа с памятью вообще ортогональна.
Там выше правильно написали — грязный код можно написать на любом языке (и иногда это даже норма, когда пишется прототип), вопрос лишь в том, насколько сложно написать чистый код и чем ограничен ущерб от грязного кода.
Ну вот на Rust я пока вижу гораздо больше грязного кода. Большинство библиотек из crates.io – лютейший кал, от которого плеваться хочется. Вроде есть библиотечка, даже решает какую-то из твоих проблем, но смотришь внутрь – хочется сразу руки помыть.
Это даже не то чтобы свойство самого языка, но его сообщества. С ним лучше просто не контактировать. Хотя стандартная библиотека Rust тоже местами поражает своей неадекватностью.
Не знаю готов ли я к драйверам, а вот к программам от растомакак я уже с ОСОБЫМ вниманием отношусь. Тот же zellij(tmux на стероидах) со старта может жрать по 150-300 мб и со временем протекать до 2-4 Гб. И даже если не учитывать утечки, то все равно не понятно почему оно так много жрет. На эту память я могу емакс запустить, но в емаксе целая ОС, а не просто терминальный мультиплексор, а если мне понадобится консольный минимализм, то того же tmux-a с его 4-10мб за глаза хватит.
Не мне говорить, конечно, но такое чувство, что бОльшинство растософта пишут люди, которые пришли из питона или ЖС, т.е. сотни лефтпадов для маленького проекта - это норма, отсутствие архитектуры - норма, забота о памяти - да кому она нужна? Какие-то альтернативные умы приманиваются к этому языки, чудеса.
Могу только helix похвалить, но для него рантайм на 1гб+ нужен для работы всей функциональности из коробки(можно не собирать рантайм, но тогда редактор становится не лучше обычного vi, разве что мультикурсор завезли).
Result да, а Option используется там, где в сишке был бы NULL (или stale pointer).
Мммм… я в сишке в основном видел другое: передачу указателя на результат в функцию и код возврата как индикатор успешности. NULL в сишке только для создания указателей. Ну да и похрен.
По хорошему, ничто не мешает в сишке сделать *(void*)0 вполне определённой операцией (не UB), кидающей стектрейс из места, где она произошла. И это даже к потере производительности не приведёт. Просто сишники скорее будут в жопу долбиться огромной оглоблей, чем выкинут чудовищные костыли из 80х.
Чем в хачкель. Ну ты хотя бы за принесённым тобой же контекстом разговора следи, м?
Про свой контекст я в курсе, мы тут про кучу разных вещей пишем. Никогда не мешает уточнить :)
Я конечно всего ядерного кода не видел, но в том, который видел, коды возврата разработчики не игнорировали. Другое дело, что это всё равно обработка вида кинуть какой-нибудь -EINVAL на верхний уровень, а уровень уж пусть сам парится.
Как вижу в трекере эту тему, сразу хочется переслушать ToTo - Растафарай. Хотя казалось бы, какая связь, разве только в названии и там, и там «раста». :)