Линус Торвальдс провёл рецензирование патчей c реализацией возможности создания драйверов на языке Rust для ядра Linux, и высказал некоторые критические замечания...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=54970
Линус жжёт) Запасаемся попкорном для продолжения истории недопустимых типов.
Ща его по каким-нибудь секс причинам зарежут и сместят..
И велком Rust и тормоза в ядре!!!
panic() это аналог BSOD. Поскольку B сокращённо от Blue, очевидна дискриминация и нетолерантность.
Ну так пусть Майкрософт и сместят тогда, наконец то займутся чем-то полезным.
Микрософт и так толерантен к панике, издавна показывает BSOD. И на Rust писать драйвера не запрещает. Позволяет даже на Delphi. Но это никому не надо. Задача ведь не писать драйвера, а бороться с дискриминацией и нетолерантностью.
Кернел так то тоже паник иногда показывает. Вполне себе на черном экране временами, так что все схвачено. И зелеными (или синими) светодиодами на клаве иногда мигает, так что зеленые человечки или представители голубых кровей тоже не в обиде.> И на Rust писать драйвера не запрещает. Позволяет даже на Delphi.
Удачи написать на них kernel-mode драйвера винды... юзермод нещитово, линух тоже сто лет позволяет некоторые вещи в юзермоде.
> Кернел так то тоже паник иногда показывает.Простейший драйвер для NT выводит BSOD. Для чего обращается по 0-му адресу. Как поведёт себя Linux в такой ситуации?
>> И на Rust писать драйвера не запрещает. Позволяет даже на Delphi.
> Удачи написать на них kernel-mode драйвера винды... юзермод нещитово"Погуглил" за Вас:
"Создание драйверов режима ядра в среде Borland Delphi" https://www.rsdn.org/article/delphi
Опубликовано: 20.02.2005
Да зачем UB'шить с nullptr, когда можно вызывать KeBugCheckEx: https://docs.microsoft.com/en-us/windows-hardware/drivers/dd...
> Да зачем UB'шить с nullptr, когда можно вызывать KeBugCheckEx: https://docs.microsoft.com/en-us/windows-hardware/drivers/dd...Что бы загрузить драйвер, надобно три раза присесть, сказать "Кю" и написать строчек двадцать кода. Потому KeBugCheckEx() в драйвере это уже следующий урок. А этот "UB" заодно сразу учит контролировать указатели.
Ну так в ядре тоже можно panic() вызвать, если уж хочется. Да, модуль с этим компилять сильно попроще виндов с их DDK порнографией будет :)
> Как поведёт себя Linux в такой ситуации?Как минимум OOPS. В некоторых моих линукнсх системах подобное специально апгрейдится до авторебута (fault recovery: работа либо в known good состоянии, либо никак).
> "Создание драйверов режима ядра в среде Borland Delphi"
Зачетная порнография. Но там столько нюансов что повторить этот фокус на бис, особенно с актуальными версиями дельфей и проч - удачи. Там даже с античной потребовался MSовский линкер.
Собственно борландские тулзы всегда в плане системщины были "не очень". Даже Borland C++ и билдер протупляли, особенно в фичах линкера. Так что хоть немного кастом борландом делать было крайне несподручно даже вон теми. На gcc я могу и фирмвару от и до разложить, на борланде я бы не взялся. It suxx.
>> Как поведёт себя Linux в такой ситуации?
> Как минимум OOPS. В некоторых моих линукнсх системах подобное специально апгрейдится до
> авторебута (fault recovery: работа либо в known good состоянии, либо никак).То есть по умолчанию работа системы продолжается, если владелец специально не попросил.
>> "Создание драйверов режима ядра в среде Borland Delphi"
> Зачетная порнография. Но там столько нюансов что повторить этот фокус на бис,
> особенно с актуальными версиями дельфей и проч - удачи.Вот честно, я даже не читал, что там написано; моё заявление "позволяет" основывается не на чьих-то публикациях (коих на эту тему было достаточно). Та статья как раз уровня ответного "слабо", уж извините. "Нюансы" в том ядре начинаются, насколько помню, если захотеть C++ исключения в 64-х разрядной версии ОС.
> Там даже
> с античной потребовался MSовский линкер.Ну и что? Взяли имеющиеся инструменты и справились. Обошлось без делегации в Микрософт с требованием включить рантайм, которая попутно парила публике мозг темой небезопасного Си.
> То есть по умолчанию работа системы продолжается, если владелец специально не попросил.Фокус в том что я как раз дефолты кернела и твикнул, так что наоборот отключать надо если оно мешает. Дефолты кернела штука интересная. Никто не юзает
> Вот честно, я даже не читал, что там написано;
И напрасно. Получился анекдот про ВиЧ и Петьку про нюансы. Там очень интересные нюансы, из-за которых вы врядли сможете или захотите повторить этот номер на бис.
> Та статья как раз уровня ответного "слабо", уж извините.
А вы таки попробуйте без понта под зонтом реализовать что там написано, с сколь-нибудь современной версией дельфи. Эталонное "пастернака не читал, но осуждаю" вышло.
> "Нюансы" в том ядре начинаются, насколько помню, если захотеть C++ исключения в 64-х
> разрядной версии ОС.С дельфей там в той статье сильно более интересные нюансы. Начиная с того что потребный формат объектников умели только ископаемые дельфи, и даже так оборвать им стандартный рантайм - сильно отдельное приключение, потребовавшее костыль-хака с M$'овским линкером, т.е. это уже не только дельфи. Не говоря про злостный дефайн толпы типов и проч.
А по совокупности напрогать на дельфи драйвер ядра - типа сбивания автомобилем вертолета. Вот никто и не пишет дрова на дельфи. С современными версиями это, наверное, не катит вообще совсем уже.
>> Там даже с античной потребовался MSовский линкер.
> Ну и что?То что M$-овский линкер - не дельфийский.
> Взяли имеющиеся инструменты и справились.
Эти инструменты - не Дельфи. Сам дельфи как было надо вообще не умеет. Да что там, гамна такого плана даже в BC++/Builder хватало, за что оно и выпало из фавора у системщиков а борланду остались будущие вебманки, которые вскоре и от дельфы отделались.
> Обошлось без делегации в Микрософт с требованием включить рантайм,
> которая попутно парила публике мозг темой небезопасного Си.Это вообще о чем? И как раз таки линковку бинаря "делегировали" M$'овскому тулу. И в 2005 году они никому мозг не парили еще. Они тогда даже дотнетом не бредили особо. И тем более не могли бредить хрустом, его не было еще.
> Никто не юзаетНикто не юзает defconfig - имелось в виду.
>> Вот честно, я даже не читал, что там написано;
> И напрасно. Получился анекдот про ВиЧ и Петьку про нюансы. Там очень
> интересные нюансы, из-за которых вы врядли сможете или захотите повторить этот
> номер на бис.Ну, Петька, никто же не просил подменять исходное утверждение "позволяет даже на Delphi" на "современная версия Дельфи".
> Ну, Петька, никто же не просил подменять исходное утверждение "позволяет даже на
> Delphi" на "современная версия Дельфи".Удачи в разработке дров, коли это "можно". Нет, так то я на паскале в досе сам звуковуху программил, но вообще паскалеобразные для кодинга дров и lowlevel подходят как г@вно для пуль.
Петька, я давно понял, что ты не можешь писать дрова на Delphi. Почему ты не понял, что твой неудачный опыт -- лишь частный случай, который не следует обобщать?
Видимо сместилка ещё не выросла. И похоже, что так и не подрастёт.
> Задача ведь не писать драйвера, а бороться с дискриминацией и нетолерантностью.Смотря у кого!
>> Задача ведь не писать драйвера, а бороться с дискриминацией и нетолерантностью.
> Смотря у кого!Если хотите показать написанное, с удовольствием посмотрю.
Blue переводится как "грустный".
> Blue переводится как "грустный".Точно. И не только.
Из словаря Informal (En-Ru)
I n AmE sl
A blue is enough to put most people into stupor — Одной такой таблетки достаточно, чтобы привести тебя в состояние отупления
II vt BrE slWhile they've got money they blue it — Пока у них есть деньги, они просаживают их не глядя
III adj1) infml
I'm feeling sort of blue — У меня какая-то тоска на душе2) infml
Wife of the antismut crusader makes blue film — Жена борца за чистоту нравов снимается в порнофильме3) AmE sl
You might say I'm blue — Можно сказать, что я пьян
"Тоска" - наиболее близкий вариант. Кстати, жанр "Blues" оттуда же.
Чувак, ты решил один из моих давних вопросов, которые я все хотел нагуглить, но как-то не до этого было. Спасибо!
>>> A blue is enough to put most people into stupor — Одной такой таблетки достаточно, чтобы привести тебя в состояние отуплениявводить в словарную статью на "blue" такое значение - повод выкинуть словарь к чертям. из контекста, оно может и следует, что blue - это именно голубая [таблетка], но извините, никак не следует, что blue - это таблетка.
>>> makes blue film — Жена борца за чистоту нравов снимается в порнофильме
make a film - сниматься в фильме, серьезно?
>>> they blue it
вводить в словарную статью каламбур - а это вообще следует приравнять к филоложеству в особо циничной форме, и наказывать соответственно.
где вы умудряетесь находить такие отбитые словари???
>>>> A blue is enough to put most people into stupor — Одной такой таблетки достаточно, чтобы привести тебя в состояние отупления
> вводить в словарную статью на "blue" такое значение - повод выкинуть словарь
> к чертям. из контекста, оно может и следует, что blue -
> это именно голубая [таблетка], но извините, никак не следует, что blue
> - это таблетка.Оно следует из значения "синий" в смысле "не трезвый". Судя по контексту, таблетка там из тех "медикаментов", что некий баптист продавал пастве для поднятия настроения.
>>>> makes blue film — Жена борца за чистоту нравов снимается в порнофильме
> make a film - сниматься в фильме, серьезно?Из словаря OxfordAmericanDictionary (En-En)
blue [blo͞o]
1.
...
3) informal (of a movie, joke, or story) with sexual or pornographic content
the blue movies are hugely profitable4) informal rigidly religious or moralistic; puritanical
Из словаря OxfordDictionary (En-En)blue
1.
...
3) informal (of a film, joke, or story) having sexual or pornographic content
a blue movie4) Brit. informal politically conservative
the successful blue candidate
Из словаря CollinsCobuild (En-En)blue
...
6) ADJ: ADJ n Blue films, stories, or jokes are about sex.
...a secret stash of porn mags and blue movies.>>>> they blue it
> вводить в словарную статью каламбур - а это вообще следует приравнять к
> филоложеству в особо циничной форме, и наказывать соответственно.
> где вы умудряетесь находить такие отбитые словари???Купил у ABBYY коллекцию в составе Lingvo, сконвертировал в понятный для GoldenDict формат.
товарищ, вы что там, уже голубеете по поводу пятницы?> Оно следует из значения "синий" в смысле "не трезвый". Судя по контексту,
> таблетка там из тех "медикаментов", что некий баптист продавал пастве для
> поднятия настроения.еще раз.
ваша цитата из вашего псевдословаря:
I n AmE sl
A blue is enough to put most people into stupor — Одной такой таблетки достаточно, чтобы привести тебя в состояние отупления
ети буковки I n AmE sl означают 1-е толкование, существительное, американский английский, сленг.
следом идет собственно толкование, и это надо в глаза долбиться, чтобы увидеть там "Оно следует из значения "синий" в смысле "не трезвый"." когда прям в цитате сказано - существительное
>>>>> makes blue film — Жена борца за чистоту нравов снимается в порнофильме
>> make a film - сниматься в фильме, серьезно?
> Из словаря OxfordAmericanDictionary (En-En)
> blue [blo͞o]
> Из словаря OxfordDictionary (En-En)
> blue
> Из словаря CollinsCobuild (En-En)
> blueзачем вы запостили эту простыню? вы вообще читаете каменты, на которые отвечаете?
>> где вы умудряетесь находить такие отбитые словари???
> Купил у ABBYY коллекцию в составе Lingvo, сконвертировал в понятный для GoldenDict
> формат.ипать, за это гуано кто-то еще и деньги платит. начинаю понимать людей, пишущих в эппл стор скамовые аппликухи.
>[оверквотинг удален]
> еще раз.
> ваша цитата из вашего псевдословаря:
> I n AmE sl
> A blue is enough to put most people into stupor — Одной
> такой таблетки достаточно, чтобы привести тебя в состояние отупления
> ети буковки I n AmE sl означают 1-е толкование, существительное, американский английский,
> сленг.
> следом идет собственно толкование, и это надо в глаза долбиться, чтобы увидеть
> там "Оно следует из значения "синий" в смысле "не трезвый"." когда
> прям в цитате сказано - существительноеВ глаза долбиться не надо, как и давать плохие советы. Надо вернуть контекст:
3) AmE sl
You might say I'm blue — Можно сказать, что я пьян
She's getting a little blue — Она начинает косетьИ я тоже люблю тему существования в английском существительных. Помню, у футбольных фанатов был в моде глагол "ту киржаков".
>>>>>> makes blue film — Жена борца за чистоту нравов снимается в порнофильме
>>> make a film - сниматься в фильме, серьезно?
>> Из словаря OxfordAmericanDictionary (En-En)
>> blue [blo͞o]
>> Из словаря OxfordDictionary (En-En)
>> blue
>> Из словаря CollinsCobuild (En-En)
>> blue
> зачем вы запостили эту простыню? вы вообще читаете каменты, на которые отвечаете?Разумеется, читаю. Прочитал "где вы умудряетесь находить такие отбитые словари???" и ответил. Сейчас делаю вывод, что кое-кто пишет и не читает.
>>> где вы умудряетесь находить такие отбитые словари???
>> Купил у ABBYY коллекцию в составе Lingvo, сконвертировал в понятный для GoldenDict
>> формат.
> ипать, за это гуано кто-то еще и деньги платит. начинаю понимать людей,
> пишущих в эппл стор скамовые аппликухи.Ценю Ваше мнение о словарях Collins и Oxford.
>>> Ценю Ваше мнение о словарях Collins и Oxford.дядя, у вас все хорошо? вы запостили бредовую простыню из какого-то лжесловаря, который ни к колллинзу ни к оксфорду отношения не имеет.
>>> Из словаря Informal (En-Ru)
>>> I n AmE sl
>>> A blue is enough to put most people into stupor — Одной такой таблетки достаточно, чтобы привести тебя в состояние отупленияесли вам в словах "словарь Informal" видны буквы коллинз и оксфорд, может, лучше снять руки с клавиатуры и заняться чем-нибудь умиротворяющим? шпрот покормить, например или рюмку водки выпить.
>>>> Ценю Ваше мнение о словарях Collins и Oxford.
> дядя, у вас все хорошо? вы запостили бредовую простыню из какого-то лжесловаря,
> который ни к колллинзу ни к оксфорду отношения не имеет.У меня всё просто великолепно! Словари продаются комплектом, я разглядел какахометателя, который затрудняется воспринимать картину в целом, спрогнозировал его действия и подставил Collins и Oxford под жидкую струю.
Почем словарь с хруста на си?!
>где вы умудряетесь находить такие отбитые словари???blue I adj 1. синий, голубой; syn. aquamarine, cobalt, indigo, sapphire, ultramarine; 2. унылый; подавленный;
syn. depressed, dispirited, down-hearted, gloomy, miserable, sad, unhappy;// словарь Мюллера.
А еще как suggestive of sexual impropriety
Линукс паникует, винда умирает. Nuff said
Да, такие пошли времена, сейчас уже за отсутствие радуги/надписи BLM в профиле на твиттере могут растерзать. А проявление нейтралитета и молчание это явный признак расизма и гомофобии.
Не, тогда жертва ради дочери будет напрасной, а это был самый мощный рычаг.
Эээ, а с какого перепугу должны возникнуть тормоза?
Не Java всё-таки
тоже не понял этого глубинного посыла)
Раст НЕ медленнее C, а потенциально быстрее и на уровне Фортрана
смиявсь
Ну а чё, может на Фортране дрова попишешь? Ты кстати, хоть один драйвер видел, боец? А Фортран от Форта отличишь?
Понимаешь ли, ядро работает в довольно специфичном окружении, здорово отличном от апликух.Поэтому, кроме всего прочего его может интересовать хренова куча вещей о которых вебмакачные апликушники вообще не греют мозг.
- Атомарность доступа к типам данных, в т.ч. из разных тредов и проч. Нет, никто в здравом уме не припрет в кернел полную стандартную либу с черти чем и сбоку бантиком.
- Сохранение контекста. Ядро заведует в том числе и сохранением контекста FPU и прочим. И должно работать даже на системах не снабженных FPU, их есть. Драйвера которые не работают на половине платформ поддерживаемых ОС таки не рулят.
- Некоторые операции в ядре могут представлять неожиданные проблемы. Например как это в памяти раскладывается. В тех патчах например Little Endian на гвозди прибили местами. На что получили резонный вопрос в тыкву - а что вы будете делать на big endian, дескать?
>Драйвера которые не работают на половине платформ поддерживаемых ОС таки не рулят.Дропнуть все платформы без аппаратных флоатов.
>>Драйвера которые не работают на половине платформ поддерживаемых ОС таки не рулят.
> Дропнуть все платформы без аппаратных флоатов.Оставить только Apple M1. Да и ядро потом дропнуть.
Назови хотя-бы одну актуальную десктопную/серверную/смартфонную/роутерную платформу без аппаратных флоатов. На десктопе аппаратные флоаты с 90х musthave, на серверах и подавно. Причём пни, с аппараьными флоатами, уже дропнули. На телефонах тоже без них никуда, как и без неона. Опять же все актуальные роутеры тоже с флоатами. Без флоатов остаются некоторые старые уже всеми дропнутые вёдра-нефлагманы, неактуальные ещё в момент их выпуска, и всякий embedded, на котором linux не пойдёт вообще, и на который иногда ставят freertos.
... и даже на конкурсе тормозов ты бы занял второе место! Потому что ты - ... (C) :-D
Линукс собирали и запускали даже на самопальном компьютере, из проводов и транзисторов. Предлагаете сжигать на костре людей, которые могут считать, что флоты могут быть не нужны?
> Дропнуть все платформы без аппаратных флоатов.Лучше дропнуть дропателей.
Скока уже дропнул?
> как это в памяти раскладываетсяЭто называется лезут туда, где до конца не разбираются, а неудовлетворённость жжот, ведь чтобы что-то сделать, надо приложить мозг и усилия, и время. А надо ж всё и сразу, некогда архитектуру процов изучать - процы же на деревьях растут, как и хлеб. Проще объявить других старыми пердунами и поддерживать необеспеченный реальными вещами хайп.
>Запасаемся попкорном для продолжения истории недопустимых типовЛинус - недопустимый тип
Теперь ещё и Турвальд начал бычить?
Семечками! Се-меч-ка-ми!!! Или ты американский фуфел? Мы, русские, запасаемся жаренными семечками. И пивом с медовухой.
По фактам!
> базовая (core) библиотека Rust неделима и представляет собой один большой blob
> у команды ещё нет стратегии, как реализовать модульностьБлобы, блобы, блобы... Кто бы сомневался. Растаманы ещё только лет через 15 смогут решить эту проблему. Или у них другие цели.
На правах растомана соглашусь с Линусом.Паникующим аллокациям совсем-совсем не место в ядре.
Вычислениям float не место в Linux. На определённых архитектурах (ARMv8 например) вполне можно нормально работать с float на уровне ядра. Но врятли на всех. А Linux поддерживает множество архитектур. С u128/i128 довольно сложный вопрос на самом деле. Но если упростить, тут теж проблемы, что и в случае с float.
Проблема с float и широкими типами решается добавлением чего-то вроде глобального атрибутов `#[no_fpu]` `#[no_u128]` или аналога, идентичного натуральному. Ну или даже просто опций для линтера насыпать. Хотя не факт, что эти штуки можно добавить за 5 минут. Современные компиляторы сложны в конце концов.
Ну а проблема с паниками в аллокациях решается банальным дописыванием кода. Ну лол, разраб показал ревьюверу прототип. Ревьювер сказал переделать. Из обычного рабочего процесса целую новость слепили.
> Из обычного рабочего процесса целую новость слепили.Вот посмотрим насколько затянется "рабочий процесс".
А то, гугл говорит, что уже давно пишет что-то реальное нужное, но пока еще не получилось. Наверно придется написать ядерный аналог stdlib, чтобы хоть как-то почувствовать минимальный смысл использования rust с его гарантиями. Особенно интересен будет аналог thread для обеспечения атомарности, сохранения контекста и прочих многопоточных проблем.
> Вот посмотрим насколько затянется "рабочий процесс".Не особо знаком с процессами в The Kernel, но врятли это будет быстро. В идеале в этом году закончить, уже хорошо. Всёж изменения в некотором смысле фундаментальные. При этом нужны телодвижения и с точки зрения The Kernel и сточки зрения команды Rust.
> Наверно придется написать ядерный аналог stdlib
Всё уже написано.
В rust стандартная библиотека разделена аж на три части. core, alloc и std. При этом std применима исключительно в юзерспейсе (хотя на коленке можно заставить работать), а alloc требует доработки или замены на полностью отдельную либу (в контексте The Kernel). А вот core выбрасывать смысла нет. Там исключительно те штуки, которые работают без привязки к чему либо вроде аллокации. Что-то вроде builtins.
>> придется написать ядерный аналог stdlib
> Всё уже написано.Если было бы написано, то этого обсуждаемого конфуза в "рабочем процессе" не было. И обсуждались бы проблемы реализаций разных способов выделения памяти (alloc), синхронизации доступа к сложным и составным типам данных (thread) и тп.
Если честно, квалифицированный ядерщик такую лажу даже на рассмотрение на выставил бы. А Линус, не будь этого CoC'а, сразу бы послал в пешее эротическое.
Проблем с большими типами вообще быть не должно. Если целевая платформа их нативно не поддерживается, то создается или библиотечный вызов, или эмуляция в месте использования. Просто то, что на языке высокого уровня это сделать сложней, например для сложения двух чисел разрядностью в 2 раза большей, чем у регистров на ассемблере надо написать две инструкции: add r1, r1, r2 и adc r3, r3, r4. А теперь попробуйте сложение с учетом переноса сделать на любимом языке высокого уровня...
Аналога adc может не быть на некоторых архитектурах.
> чем у регистров на ассемблере надо написать две инструкции:add r1, r1, r2
adc r3, r3, r4
r3 -> mem[x]
Казалось бы, что может пойти не так? У апликушника, с 1 тредом - ничего :)А что если в реальной ОС будет, допустим, так?
add r1, r1, r2
IRQ <-
something -> mem[x].
IRQ ->
adc r3, r3, r4
r3 -> mem[x]Так-так, а мы точно хотели именно это, именно так? Бонус - если обработчик IRQ писан так же, а они еще и разных приоритетов, вышибающих друг друга в произвольное время (так местами можно) можно будет эвона чего откушать.
Или:
CPU1: add r1, r1, r2
CPU2: something -> mem[x]
CPU1: adc r3, r3, r4
CPU1: r3 -> mem[x]При том -> mem[x] для больших типов еще и само по себе не атомарное и IRQ или соседний проц может вклиниться еще и вот туда.
А круто когда у вас записалось половина переменной в память, пришел кто-то и сделал что-то, имея в виду совсем не то, потом вон тот неатомарный долелал вторую половину и .. в памяти теперь чего?! Знакомьтесь - race condition. Не очень приятно - особенно дебажить его.
Можно конечно атомарные доступы форсануть, но это какой пенальти по перфомансу будет, на минуточку, если надо сделать так чтобы IRQ и другие процессоры точно туда не влезли до того как ВСЕ это сделано? В threaded апликухе вы уже можете некоторые азы прострела пяток выкусить, но в лайтовом варианте.
> Ну а проблема с паниками в аллокациях решается банальным дописыванием кода. Ну
> лол, разраб показал ревьюверу прототип. Ревьювер сказал переделать. Из обычного рабочего
> процесса целую новость слепили.Если про попытку добавления раста в ядро есть новость, то почему не может быть новости о возникших в процессе проблемах?
А с другой стороны, Линус эти все проблемы порешал, и отправил любителей Раста за парты.
> А с другой стороны, Линус эти все проблемы порешал, и отправил любителей
> Раста за парты.Господа из селектела стырили новость на хабрашвабру, при том по сути скопипастили, минимально изменим, и не особо то маркируя это как таковое, только в одном месте ссылку заинлайнили минимально. Копи3.14-еры наглые, да еще пиар втулили. Пфф, борзые ребята растаманы из селектела.
> предоставленный пример драйвера - бесполезный и посоветовал приложить в качестве примера какой-нибудь драйвер, решающий одну из реальных задачА Торвальдс-то очень умный мужик...
Конкретно на этом хрустеры ломаются не только в ядре, а в принципе где угодно.
конкретно на этом ломаются все местные ыкспэрты со своими комментариями
Растоманы теперь не эксперты?
редхат, тьфу, теперь уже айбиэм скажет внедрять и Торвальдс возьмет по козырек
Лаконично и содержательно послал фантазёров нах.
Красавчик!
Ну почему же.
Достаточно организовать модульность рантайма и предложить реальное применение.
(если с первым ещё всё как-то решаемо, то вот со вторым будут серьёзные проблемы)
> то вот со вторым будут серьёзные проблемы)Строчки про Binder ты благополучно пропустил?
у команды Rust ещё нет стратегии
"Ещё" кажется лишним.
Но они ее уже придерживаются
Че уж там, давайте на mono драйвера писать и все в ядро пихать
Знаете на C# ОС и драйвера для неё ради эксперимента написали
Microsoft Singularity (кто про неё помнит?) написана на Sing#, цитата:Низкоуровневый код обработки прерываний x86 написан на языке ассемблера и C. Библиотеки времени исполнения (англ. runtime) и сборщик мусора написаны на Sing# (специально доработанном для данного проекта диалекте C#) с использованием небезопасного режима (англ. unsafe mode). Также присутствует код на C, использующийся в целях отладки. BIOS компьютера вызывается только на этапе загрузки в 16-разрядном реальном режиме работы процессора. После перехода в 32-разрядный режим, BIOS больше никогда не вызывается, вместо него используются драйверы, написанные на Sing#. При установке ядра, оп-коды CIL компилируются в инструкции x86 при помощи компилятора Bartok.
>Microsoft Singularity (кто про неё помнит?)Вспомните еще и про ФантомОС от ДЗ :)
>>Microsoft Singularity (кто про неё помнит?)
> Вспомните еще и про ФантомОС от ДЗ :)Вот это интересная ОС. В отказе от файлов что-то есть. Но слишком непривычно.
> Вот это интересная ОС. В отказе от файлов что-то есть. Но слишком
> непривычно.ну там не отказ от файлов, просто вся система есть один единственный "файл" (объект, структура и т.д. называйте как хотите) :) Смахивало все это на гипервизор со снапшотами живой миграцией и т.д.
>> Вот это интересная ОС. В отказе от файлов что-то есть. Но слишком
>> непривычно.
> ну там не отказ от файлов, просто вся система есть один единственный
> "файл" (объект, структура и т.д. называйте как хотите) :) Смахивало все
> это на гипервизор со снапшотами живой миграцией и т.д.Насколько понял и помню, в ОС Фантом не требуется инициализировать переменные значениями из файлов конфигурации (или реестра) -- они волшебным образом сразу готовы при старте приложения. Якобы это существенно сокращает объём кода, а потому упрощает создание ПО.
>>Microsoft Singularity (кто про неё помнит?)
> Вспомните еще и про ФантомОС от ДЗ :)В прошлом году DZ пилил документацию. формально проект продолжается.
Там же производительность уровня питона. Только памяти побольше уходит. Они серьёзно потратили на это время?
> Там же производительность уровня питона. Только памяти побольше уходит.Питон это интерпретатор. JIT дотнета генерировал код вполне на уровне тогдашнего компилятора Си (медленнее, но не в разы).
> Они серьёзно потратили
> на это время?Не только время потратили, но и вложились в рекламу и индуцировали массу проповедников. Движуха вокруг Rust очень на неё похожа.
В Сингулярности-то? Нет, там JIT.Идея на самом деле очень интересная. Если безопасность доступа к памяти обеспечивается JIT, а голые указатели есть только в unsafe mode в микроядре, то можно обойтись без дорогих переключений контекста и весь код гонять в Ring 0.
В питоне тоже жит. И даже аот. Причём, именно в цпитоне. Позволяет выиграть аж 10% ценой жора памяти и кучи бесполезных вычислений. Что дотнет, что жава, очень тормозные без нативных батареек на си (или плюсах) даже сейчас, а 15 лет назад это была очень странная идея. Безопасность в жит? Жит это наверное главный спонсор уязвимостей в коде.
> В питоне тоже жит. И даже аот. Причём, именно в цпитоне.Ага, а пайпай пилят исключительно из любви к искусству и потому что NIH ...
Ссылочку на JIT компилятор в CPython - в студию.
https://numba.pydata.org/А пупу, что пупу. Да. на части кейсов позволяет получить ускорение, особенно когда у тебя куча клиентов с одинаковыми проблемами, а огромная куча кода для джанги уже наворочена и её просто так не спихнуть. В других случаях от пупу толку нет.
Намба это сторонний проект, который не имеет к мэйнлайновому Питону никакого отношения.
Интегрируется оно именно в цпитон. Только по итогу куда лучше выкинуть жит и написать всё на цытоне.
Жит житу рознь. При динамической типизации ничего эффективно не скомпилируешь.Принципиальных проблем в разработке эффективного и безопасного jit для языка со строгой статической типизацией нет, проблемы существующих решений не фундаментальны. А для исследовательского проекта, какими и являются сингулярность или фантомось, производительность вообще не принципиальна, это пруф оф концепт.
> Принципиальных проблем в разработке эффективного и безопасного jit для языка со строгой
> статической типизацией нет,Кроме того что сколь-нибудь эффективные кодогенераторы и оптимизаторы ресурсов неиллюзорно жрут, особенно на нормальный глобальный анализ и просчет вариантов выполнения, без которого никакой сравнимой эффективности близко не получится.
На билдсервере поставленном для именно этой цели оно так то всем похрену. И когда я компилер запускаю - я как бы морально готов к тому что хорошая оптимизация меня пригрузит на энное время. А у юзерей все это как раз уже не происходит (если они не отчаянные гентушники). А в случае JIT каждый юзерь сам себе билдсервак оказывается. В дотнете это хорошо заметно после апдейта версии, когда потом комп надооооооолго озадачен и вообще мало пригоден для применения по назначению.
Алсо это означает по сути весь компилер (как минимум кодогенератор и куски линкера) впертый в рантайм. Чудес не бывает и такая функциональность не может весить ноль.
> В питоне тоже жит. И даже аот. Причём, именно в цпитоне. Позволяет
> выиграть аж 10% ценой жора памяти и кучи бесполезных вычислений.Ну так дотнет после апдейта и дико грузит комп полдня, заново компиля свои ГИГАЗЫ ассемблей в нативный код. И вот ваш десктоп превращается, превращается, превращается... в гребаную билдферму, ибо даже линух кернел перекомпилить меньше проца и оперативы жрет и в разы быстрей.
Ты что-то попутал. Шарп быстрее Явы, и не сильно отличается по скорости от плюсов:https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
В ситнетике и в шарпе последних 2 лет (не продакшен ни разу), возможно, но по сути ничего не изменилось на практике за 20 лет.
> В ситнетике и в шарпе последних 2 лет (не продакшен ни разу),
> возможно, но по сути ничего не изменилось на практике за 20
> лет.Ты уже пять лет не в тренде. https://www.opennet.dev/opennews/art.shtml?num=44680
Ну да, я про это. Нигде не видел, везде 4.
Про прод другой разговор, начиная с 6 дотнета, который LTS и ожидается осенью, всё будет. 5 был тестовой площадкой для полного перехода с виндового дотнета на кор, и последующего депрекейта первого.
Q.E.D.
Непонятно у Шигорина действительно какие-то разные уровни понимания индустрии?
1. Докладчик - понимает и рассказывает. Даже ответить на вопросы может по существу.
2. https://www.opennet.dev/~Michael%20Shigorin - не всегда понимает. но почти всегда впопад пишет "умные" вещи. Не обязательно соответствующие действительности, но от этого к нему не относятся как к iPony или как к фракталу, например. Уважаемый человек ведь. Поэтому и верить можно на слово. Даже если не соответствует действительности.А может просто с госами переобщался. Там-то и второй .NET Framework может быть, но большинство собеседуемых отсеиваются по признаку "не писал свою ОС в универе, куска мало", так что такое дремучее легаси мало кому грозит.
> Непонятно у Шигорина действительно какие-то разные уровни понимания индустрии?В данном случае правильно было бы писать ИНДУСтрии ;)
Эм, да нет, везде как раз уже Core. Не 3.1 - так 2.1. А так и на 5 ПРОд крутится. Что там на 4 - не знаю, кроме легаси, что можно держать. Да и то же самое легаси на кор перевела половина из тех, у кого легасиесть. А новые только Core.Если вы про старые технологии. то с Java путать не надо, на новые Java версии только в СНГ переходят, а вот в Европе и США на 5-6 всё ещё сидят, в лучшем случае на 7-8, но это передовая разработка.
Баловался с Cosmos OS В этом что-то есть. Не понятно только зачем, но в целом неплохо.
Оно нужно только для доказательства универсальности языка и его применимость для системного программирования. Иначе чёткие пацаны уважать не будут, а будут относится как к интерпретатору для наколенных скриптов и тупых быдлокодеров. Тот же смысл в написании компилятора языка на нём самом.
> Знаете на C# ОС и драйвера для неё ради эксперимента написалиРастаманы так то тоже с asm - системные. Кто б сомневался что asm системная штука...
Если его заставить работать без сборщик мусора и компилировать в инструкции процессора, то ничего не будет мешать писать драйвера на нем
> Если его заставить работать без сборщик мусора и компилировать в инструкции процессора,
> то ничего не будет мешать писать драйвера на немУ хруста нет сборщика мусора. Это однако не гарантирует отсутствия ряда других грабель. Одна только компиляция в инструкции не дает полный контроль над происходящим.
Например, что именно не даёт?
> Например, что именно не даёт?Попробуйте новость почитать. Там и работа с памятью и операции с флоатами и int128 всякими.
Кернел крутой иллюзионист. Например он показывает что вы на процессоре якобы одни. Но на самом деле есть планировщик задач. Или он может запретендовать что вон та привилегированая команда (которую вам нельзя) якобы прокатила, а проц не кидал исключение и у вас вообще как будто были те права. Реально, конечно, что там выполнилось и какой эффект возымело - на усмотрение кернела (и гипервизора, если есть). Но соврать в состоянии проца что все оки-доки оно совершенно не мешает. Проблема в том что если вы тот иллюзионист и есть - так уже не катит.
Ну и вот да, эта самая "прелесть хруста" - run-time failure panic...
Она ограниченно годна для юзерспейса - менее важных процессов, которые могут позволить себе упасть. Но для ядра...
Ну так там хрустерам и за это досталось. Их смачно макнули что так грохаться сакс даже в real world apps даже в юзермоде - потому что аллокации могут обломаться по over 9000 поводов, и если программы типа сервисов будут от этого сразу дохнуть без возможности рекавери это вообще совсем отстой.И на десятый год разработки хруста до чуваков дошло что кульная концепция когда мы тут клали на ошибки, и паниковали при факапе... имеет один "мелкий" недостаток. Не позволяет например retry выделения памяти чуть попозже сделать. А так делают даже например некоторые СУБД, чтобы не валить процесс, лишь притормозив запрос, и произведя несколько попыток с разнесением по времени до того как совсем завернуть нафиг как FAILED. А у хрустиков вся программа дохнет, это конечно самое что надо с их квалификацией, но юзерей все же бесит, а в кернеле - за что то такое PaX и не попал в ядро. И у них 2 варианта - либо придумать что с этим делать либо "totally NAKed".
> И на десятый год разработки хруста до чуваков дошло что кульная концепция
> когда мы тут клали на ошибки, и паниковали при факапе...
> ...
> А у хрустиков вся программа дохнет, это конечно самое что надо с их квалификациейЫксперды-оналитеги опеннета во всей своей красе - сами что-то придумали, сами опровергли. О "хрусте" слышали только из комментов других Ыкспертов.
В "хрусте" нет исключений. Внезапно. И ошибки нужно или обрабатывать или более-менее указать "не хочу обрабатывать" и тогда любитель забить на обработку получит "дефолтный" обработчик - panic. А не какой нибудь веселый "отложенный" баг или silent data corruption и из-за клания на обработку ошибок "Ылитным сишником".
Но раз Ыксперты опеннета считают, что тихая порча данных или заковыристый трудноуловимый баг лучше громкой паники (ведь большую часть времени работает и вообще не видно!) то наверное так оно и есть.
Сразу видно - дальше локалхоста Ыксперт хруста не ходил.
Юзерспейсный хеллоуворлд на моднявом может позволить себе падать сколько угодно.
Ядро - нет.
Поэтому "дефолтного обработчика в виде panic" там быть не может - и попытки подставить таковой должны сваливаться уже на этапе компиляции - это если так очень хочется.
>>> даже в real world apps даже в юзермоде
> Сразу видно - дальше локалхоста Ыксперт хруста не ходил.
> Юзерспейсный хеллоуворлд на моднявом может позволить себе падать сколько угодно.Сразу видно - Ыксперд читал жопой, предпочтя к тому же не заметить, что критиковалось невнятное сравнение (сферическо-вакуумного) Элитного Сишника, не забивающего проверяющего все коды возврата (и вообще не допускающего ошибок) и "хрустовкика" с "их квалификацией".
"Опустим обычную газету в серную кислоту, а журнал ТВ-Парк в дистиллированную воду" (с).> Поэтому "дефолтного обработчика в виде panic" там быть не может
Интересно, откуда вы такие "знатоки" беретесь? Кастомный обработчик будет делать ровно то, что ты ему скажешь, благо при неиспользовании std он реализуется самим погроммиздом.
#[panic_handler]
fn panic(_info: &PanicInfo) -> ! { your_code_here }
> Ядро - нет.Только данные портить, ага.
https://github.com/torvalds/linux/search?q=panic&type=
> 1,346 code resultsЫ-Ыксперты впопеннета.
Речь про panic при выделение памяти, а не про все panic вообще, читай новость внимательно
> fn panic(_info: &PanicInfo) -> ! { your_code_here }Домашнее задание для эксперта: теперь попробуй при подобной модели обработки ашипок retry выделени памяти сделать и вернуть flow программы к виду, как будто проблемы вообще совсем никогда не возникало, все прокатило, и мы продолжили с места облома как будто out of memory никогда не происходило.
А так то кастомный хэндлер прекрасно. Но на ту хотелку - натягивается как сова на глобус. А вообще what it takes понять где факапнулось, повторить, соврать что не факапнулось, вернуть в состояние "все зашибись, работаем дальше"? В сях то кодят кастомный алокатор - он и делает этсамое. Если оно надо. А хруст довольно плотно интегрирован для анализа, там с этим вроде сложнее.
Там вон они уже предложили клевые костыли, try_new :D. Но этого толи вообще в синтаксисе еще нету, толи в какой-то распоследней на проволоку и скотч уже немного прикручено, в общем это WIP at best...
>> fn panic(_info: &PanicInfo) -> ! { your_code_here }
> Домашнее задание для эксперта: теперь попробуй при подобной модели обработки ашипок retry выделени памяти сделать и вернуть flow программы к виду, как*рукалицо*
...
> try_new :D. Но этого толи
> вообще в синтаксисе еще нету, толи в какой-то распоследней на проволокуДомашнее задание для Эксперта - попробуй перед написанием ценного мнения узнать о предмете обсуждения не из комментариев других Экспертов.
> *рукалицо*Поставьте на аватарку.
> Домашнее задание для Эксперта - попробуй перед написанием ценного мнения узнать о
> предмете обсуждения не из комментариев других Экспертов.Это не ответ на вон тот вопрос.
> Домашнее задание для Эксперта - попробуй перед написанием ценного мнения узнать о
> предмете обсуждения не из комментариев других Экспертов.Я и узнал из LKML-а, там ламеризм в отличие от опеннета не принят и откровенный шит и халтуру в ядро не пускают.
> В "хрусте" нет исключений. Внезапно. И ошибки нужно или обрабатывать или более-менее
> указать "не хочу обрабатывать"И чего случается с Box::new если на это памяти не хватило? И почему они хотят вкостылить try_new вместо new? Не поясните ли этот момент, мистер эксперт?
Ты напиши что-нибудь для начала на Расте то, а то сразу ведь видно тинейджера рассуждающего о сексе. Уверен ты в Сях такой же спец.
Но для ядра будут использовать непаникующие API.
А что программа дальше делать будет вместо паники? Подключит ИИ?
Проверять результат каждого вызова alloc и обрабатывать ошибки. Точно так же, как это делается на Си.
Я думал, что это само собой.
> Я думал, что это само собой.Только в хрусте это изначально не предусмотрено. После вон той 3,14-лины они таки да, изобрели try_new. Эм... как сделать "си, только через задницу" :)))
Да не, ты чё, так как Си, убогий Раст не сможет! Си это же великий супер язык то что он может не под силу больше не кому! Сарказм офф. Троллинг сишников офф.
П.С. да увидеть бы тут хоть одного проф сишника, а то горстка хейтеров. Реальные сишники рады появлению Раста. И да, Торвальдсу самому по жопе бы дать, за то что загубил идеи Таненбаума, а теперь мы считаем что Линукс это лучшее что случилось в ОСях.
> Реальные сишники рады появлению Раста.Н-да, то-то тут фигурант одной из здешних зимних новостей (действительно квалифицированный разработчик в т.ч. на сях) на днях как раз писал насчёт того, что rust сырой и рыхлый, но подаётся как "безопасный" и агрессивно пихается во все щели достаточно характерными политическими методами.
Вас же не затруднит привести список тех реальных сишников, которые и впрямь выдали Вам доверенность вещать от их имени?
А Вас не затруднит привести ссылку на "действительно квалифицированного разработчика в т.ч. на сях", заодно на новость и его комментарии?
Да, три ссылочки, пожалуйста)
Спасибо.
> А Вас не затруднитНачал не я. :)
PS re #398: так-то в ядре можно и за моим именем чего найти.
>Вас же не затруднит привести список техКонечно вещать от имени "тех" сишников у меня разрешения нет.
Но что-то мне подсказывает что человек с реальными коммитами в ядро достаточно нормальный сишник.
Так что вот тебе , как минимум, один https://ojeda.dev/ .
Остaльных можешь сам найти по именам в переписке и коммитам в https://github.com/Rust-for-Linux/linux
>>Вас же не затруднит привести список тех
> Конечно вещать от имени "тех" сишников у меня разрешения нет.И своего мнения у Вас нет?
А зачем в таком случае вы (и Вы в том числе) чьё-то мнение ретранслируете?
> И своего мнения у Вас нет?А прочитать то, на что я отвечал? ишли это уже слишком сложно ?
>А зачем в таком случае вы (и Вы в том числе) чьё-то мнение ретранслируете?Я лишь указываю что раст в ядро продвигают не каке-то неизвесные смузихлебы, а вполне себе люди с опытом коммитов в ядро.
И мне удивительно что месные аналитики никак не могут осознать этот простой факт.
>> И своего мнения у Вас нет?
> А прочитать то, на что я отвечал? ишли это уже слишком сложно
> ?Это просто и я знаю ответ заранее. "Работает - не трогай". Потому не спрашиваю.
>>А зачем в таком случае вы (и Вы в том числе) чьё-то мнение ретранслируете?
> Я лишь указываю что раст в ядро продвигают не каке-то неизвесные смузихлебы,
> а вполне себе люди с опытом коммитов в ядро.Цель Вашей активности?
> И мне удивительно что месные аналитики никак не могут осознать этот
> простой факт.Вопрос о цели ещё проще. Осознаёте, что не смогли дать ответ?
> агрессивно пихается во все щели достаточно характерными политическими методамиЭто ещё что. Технику безопасности вообще государство директивно пихало во все щели. Корпорации и рабочие от неё руками и ногами отпихивались, и всё равно засунули.
>Реальные сишники рады появлению Раста.Ага - Linus Torvalds к примеру ;-D GTFO dude! :)
Ну не совсем так.
Сейчас в ядре есть такой код https://github.com/Rust-for-Linux/linux/blob/rust/rust/kerne...
Он реализует "стандартный" механизм аллокации. НО с этим приходит жбан вида вызова alloc_error_handler в ряде случаев, когда разработчики раста решили крашиться (пример https://github.com/rust-lang/rust/issues/66740).
Плюс есть сюрпризы от переполнения и т.д и т.п.
Решить это можно, [no_std] более или менее используется и на что смотреть есть.
С паниками проблема не столько в Расте, сколько в предоставленном на ревью коде. Есть методы типа try_new, которые не паникуют, а возвращают Result<T, AllocError>.Тут все проблемы у них будут в другом месте. Если в сишечке я могу просто не тащить stdlib в ядро, то в Расте многое завязано на рантайм. Тащить рантайм Раста в ядро - это такой же бред, как тащить в ядро, скажем, glibc. А отвязаться от рантайма и вызывать ядреные аллоки - еще вопрос насколько просто. Скорее всего, понадобится править компилятор.
В Расте проблемы с паниками нет вообще, поскольку с ней мы знаем проблемное место в коде.
При корректной обработке всех потенциальных мест (в основном Result и Option) паник быть не должно.
> В Расте проблемы с паниками нет вообще, поскольку с ней мы знаем проблемное место в коде. При корректной обработке всех потенциальных мест (в основном Result и Option) паник быть не должно.Потому, наверное, из-за нерешаемой проблемы растовой паники это напровление мозилы и было закрыто.
> Есть методы типа try_new, которые не паникуют, а возвращают Result<T, AllocError>.А это типа вовсе даже и не навесной костыль, приделаный на проволоку целых 5 минут.
> от рантайма и вызывать ядреные аллоки - еще вопрос насколько просто.
> Скорее всего, понадобится править компилятор.Почти наверняка. И либы пилять.
А почему рустерам не написать свой полностью совместимый клон ядра и цеплять к нему любый драйверы?
так есть уже несколько
И как? Не работают?!
Потому что несколько миллиардов долларов (во столько оценивается разраобтка эквивалента линя с ноля) на это донкихотство с неочевидным результатом ну вот вообще совсем никто не даст. Особенно когда уже есть Linux.
Ну на сам хруст же давали.
Тоже донкихотство, причём с более-менее очевидным результатом, сколько уж всяких рубей было.
Там очень сильно меньше давали, и закончилось все увольнением команды из мозилы. На эти деньги линукс не получится, как максимум очередной реактос.
А кроме шуток - я так понимаю, что эта самая команда теперь рвёт задницу на предмет "куда бы пристроиться, чтобы совсем отовсюду не погнали". Отсюда и все поползновения, включая аж в ядро.
Ты не путай разработку с нуля и переписывание на другом языке.Что б было понятнее - это как написание с нуля войны и мира и перевод его на французский.
"И снова вынужден Вас огорчить."©Перенос фундаментальных вещей (ядро к таковым, согласитесь, относится) требует не менее фундаментального владения обоими ЯП. Включая перечни хаков для каждой из поддерживаемых архитектур и нюансы кодогенерации компилятора. Плюс, наверняка ещё много того, чего я как не профессионал в данной области тупо не знаю.
Без этого дальше PoC процесс на зайдёт. А протащить ТЭО подобного шага… Ну, тут Илон Маск нужен, не меньше. (Дарю этот хинт на попил американским коллегам. Безвозмездно. То есть, даром.)
Чем огорчить, чем что съехал с темы "несколько миллиардов долларов на разработку с нуля" на тему "да где ж найти программистов, которые одинаково хорошо владеют и растом и си"?
> написание с нуля войны и мира и перевод его на французский.Где почти четверть (какой-то части) написана на французском. Так себе аналогия.
Учитывая, что у «Войны и мира» даже название дано самим автором только на французском «La guerre et la paix», а русское это от издателей аналогий вообще никакая. Для Толстого французский был первым языком, а русский вторым
О, бредятинку подвезли.
Ну тогда считай как перевод на английский!
Чего к мелочам-то цепляться?
Я бы посмотрел перевод на другой язык произведения, в котором максимально используются особенности языка, типа каламбуров. А системные программы очень любят сильно привязываться к особенностям языка, да еще к архитектуре.
Так и в расте большие куски идентичны си.
> Что б было понятнее - это как написание с нуля войны и
> мира и перевод его на французский.Ну и вот пока как максимум смогли в аж целый redox. Который если и катит на войну и мир, то только версию пропиханую через Google Translate. При том сначала на испанский, потом на японский, и вот оттуда уже - во французский. Что-то общего с оригиналом, конечно, есть - POSIX'ное апи, чтоли.
потому что реальный мир устроен немного подругому.Есть компании/организации/люди которые коммитят в ядро или платят тем кто коммитит.
Есть компании/организации/люди которые развивают раст (бабосики и/или код).
И есть все остальные, в том числе и нытики с овпеннета.Так вот оказывается, что множества компании/организации/люди которые развивают ядро и развивают раст имеют пересечения. А множество нытиков оказалось в стороне.
Поэтому раст будет в ядре роно или поздно, а нытики также будут ныть.
ядро оказалось нержавеющим
Может да, а может нет. На самом деле довольно интересная техническая дискуссия. Наконец то хрустики нарвались на нормальных системщиков. И теперь у них два пути. Либо допинать свой ЯП до системного не номинально а фактически, либо пойти нафиг и утереться.Проблема в том что там уже потребных изменений на несколько версий хруста хватит. Несовместимых с предыдущими, ага... потому что сначала думать, потом кодить хрустиков кажется не учили.
> Либо допинать свой ЯП до системного не номинально а фактическиЯ тебе даже скажу как это будет выглядеть:
1. под конкретный юзкейс разрабатываем новую заплатку,
2. с вероятностью 10% она ломает обратную совместимость,
3. if линус все еще ругается goto 1В общем ничем от текущей ситуации это и дальше отличатся не будет.
А все почему? А все потому, что изначально было буяк-буяк-и-в-продакшен. Хотя надо было не спешить и нормально продумать архитектуру.
Среди специалистов эта банальная ситуация уже дай боже лет 50 называется https://ru.wikipedia.org/wiki/Технический_долг.
> Проблема в том что там уже потребных изменений на несколько версий хруста хватит. Несовместимых с предыдущими, ага... потому что сначала думать, потом кодить хрустиков кажется не учили.
Да!
ну есть же возможность писать userspace drivers через UIO, взяли свою иржу и вперде. а так да - пока они кушают писю. это вам не ржавым мечом на каждом углу размахивать - тут код писать надо
> ну есть же возможность писать userspace drivers через UIOОно как бы да, но перфоманс все же уже не тот.
> сначала думать, потом кодить хрустиков кажется не училиУчили, но в другой парадигме, парадигме MVP.
> Наконец то хрустики нарвались на нормальных системщиков. И теперь у них
> два пути. Либо допинать свой ЯП до системного не номинально а
> фактически, либо пойти нафиг и утереться.Либо пропихнуть ржавого политическими методами.
Ядро отобрать. Турвальда высадить с поезда.
> Ядро отобрать. Турвальда высадить с поезда.Реактос и прочие редоксы уже и так есть, нафиг нам еще одно такое же?
Ну тогда сразу добавить: "Старика добить, GPL поменять, API драйверов не менять, прекратить обижать блобы, да и вообще передать разработку ядра под полный контроль Linux Foundation".
Но это явно не то что мы хотим?
Кто хотел вон того - бзды всякие и так есть вроде. Но чего-то все линукс хотят. Может, как раз потому что вон то - не так уж и круто оказалось по совокупности эффектов на апстрим? :)
>ядро оказалось нержавеющимЧтобы ядро оставалось нержавеющим, пусть как можно дольше остаются нержавеющими ядра Торвальса.
За ним не заржавеет
>ядро оказалось нержавеющимstainless steel kernel !!!!
Где подписать?
что за тяга к бюрократии?
> что за тяга к бюрократии?Скорее к демократии
Петицию против Турвальда? Богу бы в уши.
> Богу бы в уши.Марку или Патрику?
А Марк это бог чего? Космоса чтоли?
Марк - это бог Патрика.
>Решение проблемы может потребовать внесения изменений в компиляторе rust и библиотеки, при том, что на данный момент у команды ещё нет стратегии, как реализовать модульность библиотек языка.Хоть какая-то польза от продвижения раста в ядро. Если бы такое попросил аноним опеннета, то его бы послали на ***. А раз приказал Торвальдс, то всё-таки придётся запилить.
Раст всё ещё не готов для десктоп^W ядра.
Вызов брошен обратная связь получена. Сейчас покумекают решат проблемасы с моудльномтью, флоатами и прочей ерундой и все запилят версию 1.53 и все. Все это просто дело времени
Так у них тогда клон C получится
Поправка: клон C++. Который уже отклонили.
C++ из Раста не получится.
Из говна конфету не склепать
> Так у них тогда клон C получитсяНе получится - для этого им придется убрать макросы, оставив на них лишь жалкую пародию. Ну и прибить всякие матчинги, отслеживание времени жизни, владение ...
> Не получится - для этого им придется убрать макросы, оставив на них
> лишь жалкую пародию. Ну и прибить всякие матчинги, отслеживание времени жизни,
> владение ...Покажи как на хрустовых макросах сделать проверку что вон та переменная отдаваемая макросу всегда в диапазоне от 1 до 10 и никак иначе? Вроде простая штука.
> Покажи как на хрустовых макросах сделать проверку что вон та переменная отдаваемая макросу всегда в диапазоне от 1 до 10 и никак иначе?
> Вроде простая штука.https://docs.rs/rangetype/0.1.1/rangetype/macro.range.html
/// Create a RangeType and employ static checks on its value.
#[macro_export]
macro_rules! range {
($val:expr, $range:expr) => {
{
const_assert!($val >= $range.start && $val <= $range.end);
RangeType::new($val, $range)
}
}
}
Если ты решил оспорить тот факт, что нашлепка сбоку в виде тупого text replacement никак не может тягаться с системой, являющейся частью ЯП и имеющей доступ к AST/токенам, то у меня для тебя плохие новости отностительно твоей "квалификации" ...
Хм, в таком виде это и сишники с compile time assert могут. А без этого ассерта сломать билд макросами сможете? Системщина - о том чтобы уметь черную магию самому, а не полагаться на черные ящики от богов. На сишном препроцессоре можно сделать какой-никакой аналог static assert самому. Проверено .. тусовочкой Торвальдса, внезапно.> Если ты решил оспорить тот факт, что нашлепка сбоку в виде тупого
> text replacement никак не может тягаться с системой, являющейся частью ЯПА таки тот text replacement на самом деле - "почти тюринг полный". И вон те господа запилили на нем, внезапно, range check - без требования поддержки static assert канпилером. Вот это суровые системщики, а не мягкотелые вебмакаки - они те кто и реализует любые потребные иллюзии, по мере надобности.
> и имеющей доступ к AST/токенам, то у меня для тебя плохие
> новости отностительно твоей "квалификации" ...С точки зрения квалификации - мне не нравятся черные ящики от богов, которые я не могу заимплементить сам. Предпочитаю знать как делать черную магию самого жесткого разлива самому, не уповая на "более высокоразвитых" которым так в отличие от меня можно.
> Хм, в таком виде это и сишники с compile time assert могут.
> А без этого ассерта сломать билд макросами сможете? Системщина - о
> том чтобы уметь черную магию самому, а не полагаться на черные
> ящики от богов. На сишном препроцессоре можно сделать какой-никакой аналог static
> assert самому. Проверено .. тусовочкой Торвальдса, внезапно.Сколько пафоса о черной магии и ящиках ...
а ничего, что const_assert! - и есть макрос (на что намекает "!")?
https://docs.rs/static_assertions/0.2.5/src/static_assertion...Constant expressions can be ensured to have certain properties via this
/// macro If the expression evaluates to `false`, the file will fail to compile.
/// This is synonymous to [`static_assert` in C++][static_assert].
...
#[macro_export]
macro_rules! const_assert {
Плюсанутый static_assert на стеро^W макросах.
Да, "так тоже можно было".
Довольно наглядная демонстрация разницы между полноценными макросами и препроцессорной текстозаменялкой получилась.> А таки тот text replacement на самом деле - "почти тюринг полный". И вон те господа запилили на нем, внезапно, range check - без требования поддержки static assert канпилером. Вот это суровые системщики, а не мягкотелые вебмакаки - они те кто и реализует любые потребные иллюзии, по мере надобности.
Пафос начинает зашкаливать - при околонулевой конкретике и отношению к теме.
Дай угадаю - кроме паскальщины и сишки ничем более никогда не интересовался (т.е. "слаще морковки не едал" (с) ), гордо считая все остальное "уделом смузихлебов".
Но "затриггерился" на в общем-то общеизвестное и полез что-то доказывать. Хотя из макросных систем - видел только сишную.
>> и имеющей доступ к AST/токенам, то у меня для тебя плохие
>> новости отностительно твоей "квалификации" ...
> С точки зрения квалификации - мне не нравятся черные ящики от богов,
> которые я не могу заимплементить сам. Предпочитаю знать как делать черную
> магию самого жесткого разлива самому, не уповая на "более высокоразвитых" которымОспаде. Прочитай уже книжку о компилятороестроении, что ли, чтобы AST не казался теюе "черной магией от богов" для "более высокоразвитых".
Что особенно иронично - мощная макросная система позволяет действовать где-то на уровне комилера при "жонглировании AST", что как раз _уменьшает_ "черноящиковость" и "магию" компилятора, т.к. позволяет многие фичи довешивать в виде макросов.
macro_rules! const_assert {
($x:expr $(,)?) => {
const _: [(); 0 - !{ const ASSERT: bool = $x; ASSERT } as usize] = [];
};
}
Вот и вся реализация.
Не решат они ничего. C так подходит для работы с железом потому что он специально создан таковым, со всеми его "небезопасными" возможностями. Rust - это ничто иное как "костыль безопасности", не говоря о том, что весь код ядра будет unsafe, т.к. потребуется как минимум работа с указателями и портами. C довольно прозрачно взаимодействует с ASM и это проверено временем, какие фатальные баги могут всплыть в Rust можно только гадать. Я думаю что они для галочки напишут какой-нибудь юзлесс драйвер на Расте и забьют.
Растоманы без паники не могут, только падающий код для них безопасен
> Кроме того Торвальдс отметил, что предоставленный пример драйвера - бесполезный и посоветовал приложить в качестве примера какой-нибудь драйвер, решающий одну из реальных задач.Вот подлец, с козырей решил зайти. Так 90% растокода можно списать.
Так может и стоит его списать? Нахрен вперся код паникующий с единичного облома выделения памяти? Чтобы наслаждаться упавшими серверами и про#$%аными документами?
Если вспомнить все сложности языка "С" в истории - то это мелочи.ЗЫ. до сих пор помню сложности выбора как писать: '+=' или '=+' :DD
> Если вспомнить все сложности языка "С" в истории - то это мелочи.Не-а. Дубль в #140 относительно более уместен, а вот этот... вчитайтесь, с чем сравниваете.
>до сих пор помню сложности выбора как писать: '+=' или '=+'Быть тебе золотарём. :-)
> Если вспомнить все сложности языка "С" в истории - то это мелочи.Win 95 вместо операционки, валящийся навзничь от любого отклонения
> ЗЫ. до сих пор помню сложности выбора как писать: '+=' или '=+' :DD
Обычно все юзают первый вариант. В сях есть дурацкости и странности. Но, знаете, try_new в этом вашем хрусте уже всерьез зарубится по степенью костылей с сями. Проблема в том что хруст впятеро моложе. И это, на фазе дизайна яп нельзя было о таком подумать ДО того как подрываться кодить? Чтобы не лепить потом несовместимые костыли как питоняши какие-то?
> Нахрен вперся код паникующий с единичного облома выделения памяти?Ыксперты опеннета во всей своей Ыкспертной красе?
Правильно, лучше работать абсолютно неправильно и/или крэшиться :)
> Правильно, лучше работать абсолютно неправильно и/или крэшиться :)Паник в кернеле это самая злобная из форм крахов - вас вырубает из вообще совсем операционки целиком. И как-то win95 за это очень не любили.
И чем вам не нравится драйвер считающий числа Фибоначчи?
> И чем вам не нравится драйвер считающий числа Фибоначчи?Кому именно они нужны в ядре?
Это растоманы будут решать, кому и что нужно в ядре. У них отсутствующий рантайм толще.
> Это растоманы будут решать, кому и что нужно в ядре.В каком-нибудь другом ядре, а тут они "totally NAK'ed" могут за такое огрести. И если торвальдс прислал NAK, это таки даже хуже чем фак.
Какая-то болезнь началась с этим Rust, пытаются пропихнуть его везде, где он нужен и где не нужен
Самое печальное, что таки пропихнут, и потом следующим поколениям разработчиков придется разбираться в этом птичьем языке.
Они пропихнут не раньше чем довольно радикально пересмотрят некоторые подходы. Что интересно - вероятно опять потеряв совместимость. В этом месте хрустики истошно матерясь пойдут изучать i++'й вариант синтаксиса, теперь банановый. Если не задолбаются к тому моменту.
Какие ещё варианты синтаксиса? Это не плюсы, где ошибку из конструктора можно вернуть только исключением или зомби-объектом.
А в раст как-то иначе? При ошибке аппликация сразу в паник упадёт?
В расте нет такой штуки как конструктор. Функция создающая объект может вернуть ошибку вместо полностью сконструированного объекта. То есть тип возвращаемого значения Result<Object, Error>. Что дальше делать с этой ошибкой решает вызывающий код. Может панику выкинуть, может -1 вернуть, если дело происходит в коде инициализации device node ядра.
> В расте нет такой штуки как конструктор. Функция создающая объект может вернуть
> ошибку вместо полностью сконструированного объекта.И дальше например чего? Как продолжить flow программы как будто этого не было и все удалось?
> Может панику выкинуть, может -1 вернуть, если дело происходит в коде
> инициализации device node ядра.А вон те хаки с try_new тогда зачем? Чем их Box::new не устроил, если все так офигенно?
> А вон те хаки с try_new тогда зачем? Чем их Box::new не
> устроил, если все так офигенно?А вон те хаки с kzalloc/kmalloc тогда зачем? Чем их malloc не устроил, если все так офигенно?
*ыксперты_опеннета_рукалицо.жпг*
> А вон те хаки с kzalloc/kmalloc тогда зачем?Это не ответ на мой вопрос... как все это реагирует на out of mem я знаю. А вот чего хрустики хотели изобразить, кроме паники, я пока не понял.
> Чем их malloc не устроил, если все так офигенно?
Тем что это кернел и у него свои нюансы по работе с памятью. И таки обычно он политкорректно реагирует на нехватку памяти - caller огребает какой-нибудь -ENOMEM как результат, но ядро продолжает работать и будет возвращать более потребные результаты если память появится.
> *ыксперты_опеннета_рукалицо.жпг*
Хорошая аватарка для вас.
>> А вон те хаки с kzalloc/kmalloc тогда зачем?
> Это не ответ на мой вопрос..."Папа, где море?"
>> Чем их Box::new не устроил, если все так офигенно?
> Тем что это кернел и у него свои нюансы по работеНу вот, можешь же.
>> *ыксперты_опеннета_рукалицо.жпг*
> Хорошая аватарка для вас.Ну да. Особенно когда приходится ваш бред читать.
> "Папа, где море?"Ну дык покажите как из этой вашей паники продолжить выполнение программы как будто паники не было. А то что вон там по бырому скостылили try_new - ну вот таки реально иллюстрация на тему "мы при дизайне яп думали задницей, но, вот быстренько костыльнули".
> Ну вот, можешь же.
Мне только не понятно почему хрустики могут бить себя пяткой в грудь насчет системности - но как до дела, сливаются на такой тривиальщине? Если кто-то пытался системный яп сделать, это в дизайне не просматривается, имхо. Ну разве что кроме любви к макросам.
А так между нами особо упоротые под микроконтроллер даже и на питоне прогают, но назвать питон системным, даже так - сами понимаете.
>> Хорошая аватарка для вас.
> Ну да. Особенно когда приходится ваш бред читать.Код на хрусте весь выглядит как брефнфарт какой-то, так что вам не привыкать.
И что? Бросать исключение. Произойдёт раскрутка стека, которую с++ и подавляющее большинство языков умеет
В отличии от раста
Не задолбаются, не переживай, у них этот синтаксис каждый день новый, оне привычные.
Балабол, пруф что у раста синтаксис каждый день новый.
> Балабол, пруф что у раста синтаксис каждый день новый.Прошлая новость о данном компилере, есть тут :)
Не вижу там ничего про "каждый день синтаксис новый". Поэтому повторяю, пруфы.
> Не вижу там ничего про "каждый день синтаксис новый". Поэтому повторяю, пруфы.Там как раз подогнали несовместимых изменений синтаксиса. И сколько там у хруста субдиалектов сейчас? И вот этот try_new - он как по совместимости? Ну, скажем, раньше это кейвордом не было и можно было юзать его. А тут - гм.
Кстати умишки зарезервировать как сишники _системнуюфигню тоже ведь поди __не_хватило? А, ну конечно, прикольнее когда breakage по всей площади, у всяких неудачников ;)
> Там как раз подогнали несовместимых изменений синтаксиса. И сколько там у хруста субдиалектов сейчас? И вот этот try_new - он как по совместимости?
> Ну, скажем, раньше это кейвордом не было и можно было юзать
> его. А тут - гм.Что - гм? Добавления нового метода к библиотеке вдруг оказывается "несовместимые изменения синтаксиса", "субдиалект" и "несовместимость"?
Балаб^W Знатоки в треде, все в машину!> Кстати умишки зафигачить как сишники _костыль вместо нормального неймспейса
ну-ну.
Если вспомнить все сложности языка "С" в истории - то это мелочи.ЗЫ. до сих пор помню сложности выбора как писать: '+=' или '=+' :DD
У вас Баден-баден воспалился. Резать к чёртовой матери!(С)
Конкретно этот заход в linux kernel очень полезен. Вместо теоретизирований получат суровую практику ядростроения от тех, кто этим занимается уже 30 лет. Авось и доведут до ума, если Линусу только не надоест их учить раньше, чем у них что-то получится.
Потому что после C/C++ он вызывает восторг и желание как можно скорее свести к минимуму взаимодействие с C/C++ (да, личный опыт. И, судя по действиям многих компаний, не только лишь личный).
Пользоваться C/C++ после Раста так же приятно, как вернуться с кроссовера на запорожец.
Это потому что ты кроссовером пользуешся как запорожцем. В силу умственных способностей и там, а там ты видишь только руль и четыре колеса. Причём в случае раста тебе ещё руки синей изолентой к рулю примотали и ты катишься под откос и настойчиво сигналишь на весь интеренет.
Wat? Сам понял, что написал?)
Какой руль, какие колеса, какая изолента?
Мне кажется, ты на Расте не работал
А мне не кажется, я уверен - ты тоже с ним не работал :)
да ты дурак живущий от хайпа до хайпа, то что написали тебе нотой выше, все предельно понятно.
что то мне это напоминает, какой-то нонейм типа sysd или systemb продвигался такжеА ведь хороший продукт в рекламе не нуждается
А Гугл уже свою Фуксию на Расте написал?
Не всю, но написал.
Ну, они что-то там "разрешили использовать". И в андроиде аналогично, если оригинал новости читать а не опеннет.
>Ну, они что-то там "разрешили использовать".Ну, они и KOTLIN разрешили ...
А Go - нет 8-o Загадка века кстате.
У них всё описано на вики: https://fuchsia.dev/fuchsia-src/contribute/governance/policy...Con: The Fuchsia Platform Source Tree has had negative implementation experience using Go. The system components the Fuchsia project has built in Go have used more memory and kernel resources than their counterparts (or replacements) the Fuchsia project has built using C++ or Rust.
Ядро на крестах с элементами asm, драйвера на С и крестах. Для юзерспейса - dart и go, а хруст и python сбоку приляпаны, не функционала ради, а толерантности для. Такие дела.
https://fuchsia.dev/fuchsia-src/development/languages
>https://fuchsia.dev/fuchsia-src/development/languagesБоже, как же бесит, когда отключаешь в браузере загрузку левых шрифтов, и сайт превращается в тыкву. Сраные верстальщики.
Там не только ШГ, но и куча скрипоты с gstatic, без которой оно - тыквенное пюре. WWW goes GWW. Но другого вэба у нас уже нет.
В гугле, стоит отметить, тоже не всё гладко: многие понимают, что работают на EEE-подобную стратегию конторы и по возможности уходят. Гугл, в свою очередь, подтягивает больше рычагов, мозгомытню и более голодных исполнителей из обеднённых стран.
> Боже, как же бесит, когда отключаешь в браузере загрузку левых шрифтов, и
> сайт превращается в тыкву. Сраные верстальщики.А как с тебя еще, такого хитропопого, телеметрию собирать?
Ну вот, хотели решить все проблемы при работе с памятью, но всплыли новые проблемы... Может Rust не нужен в ядре?
Ну как сказать. Раст задумывался как замена C с решением некоторых проблем. Они их решили. Теперь настало время выяснять, насколько это замена C. И тут внезапно выяснилось, что "безопасная работа с памятью на уровне языка" требует плотного взаимодействия с ОС, и рантайма, который "сам себе режиссёр", недостаточно. Сумеют ли растеры справиться с внезапно возникшими проблемами? Так ли внезапно возникли проблемы? Какой первый полезный драйвер дадут Торвальдсу прозревшие растеры? Смотрите в следующих сериях...Если без шуток - очень интересная загогулина выходит. Если раст в итоге порешает проблемы настолько, что станет "вторым языком ядра", да ещё не втихую втащат, а официально, со всеми замечаниями Линуса, это вот прямо неплохая веха в развитии. Хотя как это будет выглядеть - неясно.
Ну а не осилят - будет ржака ... Хорошо по любому :)
Судя по всему, на большинство замечаний они тупо не смогут ответить ничего внятного...
> Ну как сказать. Раст задумывался как замена C с решением некоторых проблем. Они их решили.Решили. Но смотреть вокруг было западло поэтому налепили новых, не факт что лучше старых.
> Теперь настало время выяснять, насколько это замена C.
И первая попытка получилась довольно жидковатой, если даже вообще совсем не эксперты по языку нашли дурных грабель.
> И тут внезапно выяснилось, что "безопасная работа с памятью на уровне
> языка" требует плотного взаимодействия с ОС, и рантайма, который "сам себе
> режиссёр", недостаточно.Скорее растовики немного лоханулись сделав это слишком интегрированным. Наверное по другому анализ сложно, но в результате получилось не сильно гибким и дружелюбным к тому что надо именно _системщикам_ которые не могут в отличие от третьесортной крапликухи вылететь в трубу.
> втихую втащат, а официально, со всеми замечаниями Линуса, это вот прямо
> неплохая веха в развитии. Хотя как это будет выглядеть - неясно.Этого пока никто не знает, видимо. Но из таких экспериментов иногда и создается будущее. Или не создается.
Решение проблем с памятью через падение драйверов и/или ядра, небольшая плата за безопасность.
ты бы хоть подписывал свой <сарказм>, а то люди минусят.
Правильно, зачем простуду лечить, доктор сказал - в морг, значит - в морг. Такова небольшая плата.
>Кроме того Торвальдс отметил, что предоставленный пример драйвера - бесполезный и посоветовал приложить в качестве примера какой-нибудь драйвер, решающий одну из реальных задач.Ахаха... то есть, гав!
А что вам не нравится? Написав _реальную_ штуку вместо нафигнужной затычки вы ощутите все прелести (или грабли) своей инициативы гораздо реалистичнее. Если вообще осилите. В процессе окажется что вашу фигню надо раз пять отрефакторить, и от оригинала не осталось чуть менее чем нихрена.
А я по-вашему не то же самое написал?
Да.
>So I replied with my reactions to a couple of the individual patches,but on the whole I don't hate it.
>
>HOWEVER.
>
>I do think that the "run-time failure panic" is a fundamental issue.Это называется "конструктивная критика". То, на что комментаторы opennet неспособны :D
Понимаешь в чём дело - тратить своё время на детализацию "конструктива" имеет смысл только в рамках рабочего процесса. Комментаторы в рамках опеннетика не работают, а поэтому смысла вкладываться в детализацию - ноль.
> Понимаешь в чём дело - тратить своё время на детализацию "конструктива" имеет смысл только в рамках рабочего процесса.Да нет, любая здоровая дискуссия подразумевает это.
>> Понимаешь в чём дело - тратить своё время на детализацию
>> "конструктива" имеет смысл только в рамках рабочего процесса.
> Да нет, любая здоровая дискуссия подразумевает это.Ну так начните с этого, а не с огульных обвинений -- глупо же в квадрате.
Комменты в этой ветке говорят сами за себя.
товарищ, вы не понимаете всей высоты эмоционального накала настоящего горячего финского парня, когда он начинает писать КАПСОМ
У него есть два валидных поинта, оба поинта авторы PR понимают, но не стали тратить на них время ибо RFC. Концептуально Торвальдс не против, они допилят и пришлют вторую версию. Обычный процесс принятия патчей в ядро, йопт.
> У него есть два валидных поинта, оба поинта авторы PR понимают, но не стали тратить на них время ибо RFC. Концептуально Торвальдс не против, они допилят и пришлют вторую версию. Обычный процесс принятия патчей в ядро, йопт.Весь вопрос в том, насколько это осуществимо. Помнится Линус не был против РайзерФС. Только просил пивести его в божеский вид. Что было невозможно из-за амбиций Райзера. В итоге где эта РайзерФС?
Осуществимо вернуть из библиотеки аллокатора ошибку вместо паники? Да не то чтобы сложно, они же написали.
> Осуществимо вернуть из библиотеки аллокатора ошибку вместо паники? Да не то чтобы сложно, они же написали.А теперь переписать библиотеки, выкинув использование старого варианта, или написать новые взамен текущих. С нормальной линковкой, а не статической.
Да еще подобрать пример, который бы показывал, что от раста в ядре можно выгоду получить. В ядре-то очень специфичная работа с памятью (заточка под размер страниц, и несколько коллекций страниц разного размера). И как наложится эта специфика на парадигму rust - непонятно. Ну, то есть, я не вижу в rust даже намека на возможное решение. В плюсах заранее продумали разные варианты, и добавили возможности позволяющие их реализовать. В rust заточились под один вариант, подходящий для пространства пользователя, но недостаточный для ядра.
> А теперь переписать библиотеки, выкинув использование старого варианта, или написать новые взамен текущих. С нормальной линковкой, а не статической.Линковка не связана с библиотекой. То что стабильной динамики нет, это действительно проблема, но библиотека ту не при чем.
> Да еще подобрать пример, который бы показывал, что от раста в ядре можно выгоду получить. В ядре-то очень специфичная работа с памятью (заточка под размер страниц, и несколько коллекций страниц разного размера). И как наложится эта специфика на парадигму rust - непонятно. Ну, то есть, я не вижу в rust даже намека на возможное решение. В плюсах заранее продумали разные варианты, и добавили возможности позволяющие их реализовать. В rust заточились под один вариант, подходящий для пространства пользователя, но недостаточный для ядра.
Ещё один ни ядра, ни раста в глаза не видел. Какая там специфика, какая заточка? PAGE_SIZE макрухой и все. Все эти сказки про ОЧЕНЬ СЛОЖНОЕ ЯДРО это мифы и легенды это ядро в глаза не видевших.
Живёт и здравствует: https://github.com/edward6/reiser4/commits/masterhttps://www.phoronix.com/scan.php?page=news_item&px=Reiser5-...
Живет, на обочине трассы. А мимо пролетают поезда.
Может гуголу озаботиться поддержкой раста в хроме, вон у них тоже там уязвимости. Обязательно в ядро лезть сразу.
Мозила попробовала и уволила нафиг всю команду. Гугловские растаманы сыкуются :)
В мазиле главной бабе (трансу) просто денег не хватало на свою зарплату.
> В мазиле главной бабе (трансу) просто денег не хватало на свою зарплату.Так у них тоже манагерье наверное боится что самими на яхты не останется - а тут еще толпу этих, уволенных из мозилы нанимать?! При том что вышибли за отсутствие результата за 10 лет вджоба? Ну нафиг, можно точно так же 10 лет нихрена не делать - а на сэкономленое купить каждому манагеру по новой яхте.
Так у них есть божественный обнзьяний язык - Жо
Пора Торвальдсу на покой.
Слишком придирается к инновациям и закостенел в своём мышлении. Нужно уступать дорогу молодым, а мы будем его раз в год поздравлять и вспоминать его неоценимый вклад.
"Чего мелочиться, давайте JS в ядро! Пусть компилятор сам определяет типы, ибо нам ведь лень. Чего нам вообще заморачиваться там с какой-то памятью, указанием типов? Это прошлый дедушкин век! CPU вон какие мощьные, подумаешь лишнее ядро только под интерпретатор выделим, с пользователей не убудет!"До инноваций: Интернет 56кбит, браузер в 32Mb RAM
После инноваций: Интернет 100Мбит, браузер в 8Gb RAM
> До инноваций: Интернет 56кбит, браузер в 32Mb RAM
> После инноваций: Интернет 100Мбит, браузер в 8Gb RAMА информации на страничке такое же количество.
Меньше. Гораздо меньше.
>подумаешь лишнее ядро только под интерпретатор выделим, с пользователей не убудетДа и Штеуд только рад будет.
node.js.ko
И пусть весь мир подождёт.
Ну а в юзерспейсе wayland-server-electron.js
> JS
> компилятор сам определяет типыСейчас бы JIT с компилятором путать.
> Чего нам вообще заморачиваться там с какой-то памятью, указанием типов
И в новости про Rust (со строгой типизацией, соответственно в рантайме не такие накладные расходы) говорить о слабой динамической типизации.
И это ещё не говоря о том, что у тех же плюсов с типами беда бедовая, ибо "машинный кодне знает о типах" и разрабочики вынуждены писать бойлерплейт вместо решения поставленных задач.
>Сейчас бы JIT с компилятором путать.Хочешь интепретатор? Пжлст.
Вы реализовали интерпретатор для Rust, который кто-то продвигает в Rust?
* в Linux
Это к чему?>> JS
>> компилятор сам определяет типы
>Сейчас бы JIT с компилятором путать.
Ага, а теперь бы интерпретатор с компилятором путать.
Я так с обоих ору. Один пишет, что JIT компилятор - не компилятор, а другой не понимает сарказм.
Что бы ты ни орал, это не отменяет того, что сарказм про скриптовый слаботипизированный JavaScript не уместен в новости про компилируемый строготипизированный Rust, минусов у которого перед C только незрелость (концепция и текущий MVP вполне себе хороши), из чего вытекают остальные "фатальные недостатки".
А сарказм про JS тут не уместен, ибо> До инноваций: Интернет 56кбит, браузер в 32Mb RAM
> После инноваций: Интернет 100Мбит, браузер в 8Gb RAMименно к JS и его мирку и относится. Хотя у разрабов игр (хвалённый C++, кстати) тоже, видимо, не хватает ресурсов на оптимальное использование ресурссов, раз им поставлять 50-150 Гб на ПК и 2-5 Гб на мобилку - норма.
Ядро Linux тоже не каждый осмелится на clang вместо gcc (или musl/uclibc-ng вместо glibc) собирать (на тему "преимуществ" "универсального" C), да и окружение после этого собрать и настроить - та ещё канитель, но что-то не видно желчи в комментариях по этому поводу. Я не отрицаю, что можно и что это даже зачастую работает, но ресурсозатратность сопоставима с использованием обруганного Rust, при этом хомячков на эту тему в комментах не видно.
> Ядро Linux тоже не каждый осмелится на clang вместо gcc (или musl/uclibc-ng
> вместо glibc) собирать (на тему "преимуществ" "универсального" C)Щито? Зачем ядру стандартная библиотека? Оно будет делать системные вызовы самому себе? Что за бред.
> но ресурсозатратность сопоставима с использованием обруганного Rust
Я заебался его собирать. Пока он будет собираться, можно успеть пересобрать остальной мир. А ещё дохера памяти как для сборки компиля надо(особенно на диске), так и для его использования(особенно оперативы). У меня ощущение, что за время сборки его можно собрать хромого и либру.
> "машинный кодне знает о типах"Все вопросы с типами должны быть закрыты в компайл-тайм именно из-за процитированного, за использование тайпинфо нужно бросать на перефирию.
> за использование тайпинфо нужно бросать на перефириюА Rust тут причём?
Или Вы проситесь на перифирию?
Ахахаха, 8 гигабайт. Уже и по 16 бывает. Один занкомый меняя начинку ПК купил сразу 32 гигабайта со словами "чтобы точно для браузера хватило".
До инноваций: Интернет 56кбит, браузер в 32Mb RAM
После инноваций: Интернет 100Мбит, браузер в 8Gb RAMЯ хочу повесить это на стену.
Хипстеры попробовали сделать редокс. И он оказался никому на... не нужен со всеми своими инновациями. Этим хипстеры от Торвальдса и отличаются - не умеют в архитектуру и прожектменеджмент чуть более чем нихрена. У операционки задача номер 1 это работать. А инновации - хорошо, но все же приоритет номер 1 - работать, цуко! Без этого оно даром не уперлось, ни инновационное, ни какое там еще.Извини, конечно, но безопасТный аналог Win95 в современном мире не надо, внезапно, даже гуглу. Его за это юзеры порвут на британский флаг. Торвальдс за свои годы прожект менеджмента об этом научился догадываться, да и в гугле наверное хрустиками заведует все же кто-то с наличествующим головным мозгом, хотя-бы просто потому что падучие системы нагнут извлечение прибыли.
> Хипстеры попробовали сделать редокс. И он оказался никому на... не нужен со
> всеми своими инновациями. Этим хипстеры от Торвальдса и отличаютсяАнонимная оналитега "как оно все на самом деле", "рулон на вес"(с)
Многие лета Торвальдсу!
Многие free проекты разваливались, когда теряли ключевых специалистов. А инновациям неплохо хотя бы дорасти до GPLv2, чтобы на что-то претендовать. А так лучше согласиться Python использовать в ядре. Чем проприетарщину, которыя может изменить своё поведение по любому хотению "любого левого мизинца любой правой ноги" в любой момент времени.
Рано распевать "Многие лета". Он ещё не усоп.
Многая лета воспевается не усопшим
Ну так скатертью дорога молодым, слабо своё ядро с нуля написать и продвигать? А Торвальдс смог from scratch.
> Один в поле не воин.У него ещё жена.
Кто не согласен, опробуют её удары. И вообще спотсменка(каратэ) и комслмолка.
> своё ядро с нуля написатьНе писать, а собрать из кусков stack overflow, добавив импортов библиотек, которые непонятно как работают.
С какого перепуга ему надо на покой? Он всё правильно сказал, и я, будучи "растоманом", с ним согласен. Есть объективные проблемы, мешающие разработке ядрёного кода на Rust. Линус на них указал. Всё.Или это тонкая попытка троллинга - настолько тонкая, что аж толстая?
Зачем пихать в Ядро всякую всяку?
Завтра у гугла поменяются приоритеты и придётся чистить Ядро от ржавчины...
Или гугл чегой-то там собрался втихаря впрыснуть Торвальдсу в самое-самое сокровенное?
Это прям какойто голимый Lennart Poettering, право слово!
> Завтра у гугла поменяются приоритеты и придётся чистить Ядро от ржавчины...Если в бочку с говном добавить ложку мёда, то для бочки с говном ничего не изменится.
Зато в ложке мёда появятся очень пикантные вкусовые оттенки.
>Зачем пихать в Ядро всякую всяку?Ровно это и советовал профессор Т. самому Торвальдсу.
> придётся чистить Ядро от ржавчины...Ничего, к этому моменту появиться "Преобразователь ржавчины" и будем обсуждать добавление языков Цинк и Марганец.
А вроде язык Цинк уже есть
нельзя откидвать язык просто потому что хейтят.
Линус указал на реальные проблемы - решат, велком!
Если нет молотка, то забивать гвоздь можно и пассатижами, но крайне выгодно найти молоток или подобный интсрумент.
Похоже инициатива из-за того, что спецов си всё меньше.
А растоманов все больше? Давайте, тогда сразу V8 туда запихаем и будем на JS драйвера писать.
Инфантилизм головного мозга малолетнего д.
Совершенно незачем здесь свою медкарту цитировать.
На что Торвальдс и намекнул
JS == Rust? Или с головой проблемы?
С Растом
_Спецов_ раста - вообще около 0, но тебя же это не смущает?
Не, ну escopeta.swf уже ж стреляет не самому себе в оппу. Правда, посередь экрана какая-то дырка в текстурах, но уже неплохо.https://github.com/ruffle-rs/ruffle/graphs/contributors - 67 штук. Из которых минимум четверо действительно умеют. Не считая всех тех что понаписали весь мильен библиотек, которые хрустоподелка традиционно скачивает в процессе.
Другое дело, что ЭТИМ вряд ли придет в голову страдать фигней в попытках написать драйвер ведра - они и так по уши в работе (оплачиваемой, между нами), со сроками окончания где-то лет через двадцать.
Как показал пример мозиллы даже донкихотов хватает лет на 10, не более.
Мозиллу оккупировали толерасты (Эйха жалко) до первого релиза Rust. Да и при них произошло возвращение к зависимости от контракта с гуглом. Так что не показатель. Не надо язык хоронить из-за мягко говоря своеобразного руководства одной из компаний, где были разрабы, которые хотели в ПРОД.
> нельзя откидвать язык просто потому что хейтят.Полностью согласен. В этой новости радует то, что Линус изучил вопрос и указал на конкретные проблемы, а не закатил истерику, как многие делают просто из-за Rust.
Посмотрим, как решат(или не решат) эти проблемы с Rust.
Хейтят в основном те, кто не пробовал и в основном на опеннете.
В нормальном мире это самый любимый язык по данным stackoverflow который год.Рекомендую у каждого, кто критикует Раст, спрашивать об опыте его использования. Если меньше хотя бы месяца, тут и обсуждать нечего.
>это самый любимый язык по данным stackoverflowЗначит лютое оно! 146%! :-))))
"начальный прототип"...
"который позволит провести детальное сравнение производительности и безопасности реализаций Binder на Си и Rust."
"В текущем виде работа ещё не завершена, но уже почти... подготовлены прослойки для использования этих абстракций в коде на языке Rust."Но, при существующих проблемах народ, в том числе гугель, до усёру топит за заталкивание коричневого в ядро, просто прекрасно!
Недалимый раста-blob для ядра - тоже эпично!
> Недалимый раста-blob для ядра - тоже эпично!*Неделимый
Процесс идёт, отлично 👍🏻👍🏻👍🏻
> Процесс идёт, отлично 👍🏻👍🏻👍🏻Процесс по деградации ядра, да, начался!
Если Торвальдс пропустит это шлак, в итоге Linux скурвится.
Линус как может сдерживает всяческих макакокодиров, но при общей тенденции на дегродство разрабов в мире, процесс деградаци скорее всего неизбежен.
Вот когда у корпов раком будут вставать их процессы, тогда они может быть вспомнят, что наверное лучше было бы нанимать грамотных разработчиков, которые знают процессы в железе и умеют в низкоуровневые языки, а не альтернативно одарённых хипсторов, у которых вместо головы известное место с известным содержимым, которые лабают свою ржавчину известным местом, "застобаксов пучок".
Родной, ты наверное и строчки кода на C не написал.Достаточно посмотреть на libc чтобы понять всю ущербность. Там в каждом вызове функции потенциальные ошибки.
malloc может не возвращать память, read может прочитать меньше чем запрошено, обойти файловую систему атомарно невозможно (ты прочитал файл, сделал его hash например, а он уже изменился пока ты другие файлы обходишь), и т.д.
Чтобы всё это обернуть во что-то безопасное и надёжное нужно писать тысячи строк кода только обёртки (хотя libc уже обёртка).
Говорить что Linux написан экспертами, а сейчас профессионалов не осталось... ну показывать свой уровень.
Rust как глоток свежего воздуха. Да, кто-то в этот воздух пёрнул.
Язык 👅 не без греха.
И всё равно это лучше чем было и есть сейчас
Руст, конечно, вылечит неатомарность ФС. Родной, ты видимо, тоже не писал, а только читал.
> Rust как глоток свежего воздуха. Да, кто-то в этот воздух пёрнул.
> Язык 👅 не без греха.Если посмотреть пример кода на си и хрусте, сишный как-то сильно лучше читаем и обработчик ioctl почему-то вдвое короче. Вот те и хайлевел, однако. В других местах получше, но технической сp@ни в разы больше, местами выглядит довольно наркомански, иллюстрируя чем нонейм вебмакаки отличаются от K&R..
Ты, похоже, оцениваешь C с точки зрения человека, привыкшего к языку, который всё делает за программиста. А в C надо самому отрабатывать разные ситуации. То есть, открываешь man на оответствующую функцию, идёшь в раздел "Return values" и расписываешь действия при всех возможных вариантах развития событий. Если тебе это кажется неправильным, то просто C - не для тебя.
А что, эксцепшоны магическим образом обрабатываются сами, да? :D
Перечитал сейчас ман на malloc(3) - написано там ни про какие эксцепшоны. И в мане на fopen(3) тоже про эксцепшоны ничего нет. Открыл наугад несколько манов на сисколлы - open(2), read(2), mmap(2) - и там не сказаго ничего про обработку эксцепшонов.
Прямо вот даже и не знаю, что в C делать с эксцепшонами.
Вот твой пассаж:> То есть, открываешь man на оответствующую функцию, идёшь в раздел "Return values" и расписываешь действия при всех возможных вариантах развития событий.
Расскажи пожалуйста сакральную разницу между "обработать разные типы исключений" vs "обработать разные коды ошибки". Очень хочется понять в чем же разница :D
Стоп-стоп-стоп... Если в коде предусмотрены действия при всех возможных возвращаемых значениях, то о каких "эксцепшонах", которым при этом нужна отдельная обработка, идёт речь?
> Расскажи пожалуйста сакральную разницу между "обработать разные типы
> исключений" vs "обработать разные коды ошибки". Очень хочется понять в чем же разница :DНу, с ощибкой, что чтения диска, что выделения памяти, можно retry сделать и если проканало то сделать вид что факапа вообще не было. Flow программы продолжится как будто ошибка никогда не возникала.
Вопрос: как этот номер делают любители исключений? Для долговременно работающих программ или ОС это вполне нормальный вариант там где падать на каждый чих не катит.
> Расскажи пожалуйста сакральную разницу между "обработать разные типы исключений" vs "обработать разные коды ошибки". Очень хочется понять в чем же разница :DОдна библиотечная функция может кидать исключение. Эта функция вызывается множеством других. В результате рефакторинга иногда в работающей службе срабатывает это исключение. Вопрос как отловить проблему, если повторить не получается.
Проследить весь путь кодов ошибок по исходникам - можно. Все коды ошибок должны быть обработаны.
Проследить весь путь исключений по исходникам - невозможно, придется залезать в каждый вызов функций и будет неясно, обработчик прерываний должен быть и про него забыли, или так и задуманно и на верхнем уровне его точно обработают.
> Проследить весь путь исключений по исходникам - невозможно, придется залезать в каждый
> вызов функций и будет неясно, обработчик прерываний должен быть и про
> него забыли, или так и задуманно и на верхнем уровне его точно обработают.Ну вот кстати себе я таки на сях ;) сделал специфичный fail fast такого плана. Но он втыкает уникальный код факапа в глобальную переменную. Он один на весь исходник - и вот так место факапа известно с точностью до.
Но это юзается там где оно уместно. Если я посчитаю что такая реакция на ошибки в проекте уместна. Ну скажем фирмварь микроконтроллера - в определенных допущениях - может быть быстро целиком ребутнута, может быть даже с восстановлением state той или иной полноты, если анализ системы показал что так рекавери выглядит безопасно. Однако микроконтроллер, видите ли, теряет контроль при этом на жалкие микросекунды, state маленький, а перспектива глюкать дофига времени с потенциально порушенным state программы и/или железа (fail fast ловит грубо говоря "sanity check failed"). Из очевидных плюсов - caller'ы умеют забивать на проверку ошибок в кодах возврата, а сами коды часто конфликтуют с полезными значениями. Поэтому как _один из_ вариантов почему бы и нет? Однако сие годится не всегда и не везде. Если не годится, оно даунгрейдится до проверок на манер errno. Лишних кейвордов при этом не надо. Си вообще приколен там что сам по себе - мультипарадигменный. Он настолько простой и дубовый что в принципе из него лепится любая парадигма с минимальной интерференцией. А хруст, вот, показал себя в этом заметно хуже пока, подпихав дурацкие медвежьи услуги где не надо.
Но ведь в ядре нет libc
А маллоков там много разных
В ядре может и нет libc, но без glibc ядро навряд ли соберётся хоть на musl, хоть на uclibc-ng.
> Но ведь в ядре нет libcСи может работать вообще совсем без рантайма. Я им даже bare metal с ноля подымал. Без асма и либ.
> А маллоков там много разных
Ничего не запрещает взять да и накодить себе аллокатор памяти. Самому по себе компилеру сей аллокатор до балды. Это уже программа или как максимум какие-то либы сие вызывает. Хрустики с более плотной интеграцией всех этих потуг как раз и нарвались на тот факт что местами фича становится багом.
Ага, раст выделит память, даже если её в системе нет, и прочитает файл, даже если его никогда не существовало!
Раст не даст разработчику пропустить обработку ошибок. И, что главное, в этом стиле пишут ВСЕ.
В этом и профит.
> Раст не даст разработчику пропустить обработку ошибок.А ада не даст переполнить числа. В ариан 5 проверяли.
> malloc может не возвращать память, read может прочитать меньше чем
> запрошено, обойти файловую систему атомарно невозможно (ты прочитал
> файл, сделал его hash например, а он уже изменился пока ты другие
> файлы обходишь), и т.д.Щёлкаем пальцами -- и все TOCTOU да прочие проблемы реального мира, к таким потенциальным и кинетическим ошибкам приводящие, превращаются в null.
Тут же его на всякий разыменовываем, чтоб никто не обратился.
*sigh*
>посмотреть на libcСи можно использовать без libc. Возможно ли подобное с ржавчной?
Да, можно. Есть такой атрибут #![no_std], который отключает использование стандартной библиотеки. И в результирующем бинарнике не будет ничего, кроме того что написано в коде.
>>посмотреть на libc
> Си можно использовать без libc. Возможно ли подобное с ржавчной?
$ cat nostd.rs
#![no_std]
#![no_main]use core::panic::PanicInfo;
use syscall::syscall;#[panic_handler]
fn panic(_info: &PanicInfo) -> ! { loop {} }#[no_mangle]
pub extern fn _start() -> ! {
let message = "sometext\n".as_bytes();
unsafe {
syscall!(WRITE, 0, message.as_ptr(), message.len());
syscall!(EXIT,0);
}
loop {}
}$ ./nostd
sometext$ ll nostd
-rwxr-x--- 496B 16 Apr. 16:24 nostd*
$ readelf -d nostd
There is no dynamic section in this file.
$ objdump -d nostd
Disassembly of section .text:00000000004000b0 <.text>:
4000b0: 55 push %rbp
4000b1: 48 89 e5 mov %rsp,%rbp
4000b4: 6a 04 pushq $0x4
4000b6: 58 pop %rax
4000b7: 6a 09 pushq $0x9
4000b9: 5a pop %rdx
4000ba: be cc 00 40 00 mov $0x4000cc,%esi
4000bf: 31 ff xor %edi,%edi
4000c1: 0f 05 syscall
4000c3: 6a 01 pushq $0x1
4000c5: 58 pop %rax
4000c6: 31 ff xor %edi,%edi
4000c8: 0f 05 syscall
4000ca: eb fe jmp 0x4000ca
> #[panic_handler]
> fn panic(_info: &PanicInfo) -> ! { loop {} }Очень крутая и полезная обработка ошибок. В фирмварь своего гироскутера такой код запихай, умник. Просто посмотреть на твою морду опосля этого.
>> #[panic_handler]
>> fn panic(_info: &PanicInfo) -> ! { loop {} }
> Очень крутая и полезная обработка ошибок. В фирмварь своего гироскутера такой код запихай, умник. Просто посмотреть на твою морду опосля этого.Классика впопеннета - когда 294тому нечего возразить по теме, он пишет очередной пафосный бред.
Возможно, он намекает на прикладную безопасТность, а Вы были настолько беспечны, что ещё и это не прочли...
> Возможно, он намекает на прикладную безопасТность, а Вы были настолько беспечны, что ещё и это не прочли...В минимальном примере nostd, ага.
Еще можно было бы понамекать на невозможность управлять гироскутером посредством вывода текста - чего мелочиться-то?
> В минимальном примере nostd, ага.В минимальном примере nostd такая обработка ошибок как раз влет припечатает таблом в асфальт.
> Еще можно было бы понамекать на невозможность управлять гироскутером посредством вывода
> текста - чего мелочиться-то?Ну как минимум дебажный лог/трейс практикуется, и таки далеко не только мной. Это такой околореалтаймный способ трекать execution flow в системе ... которую ну вот блин нельзя заякорить дебагером, например потому что реалтайм не ждет.
Кстати, да
> умник
> твою мордуПотом еще удивляется "за что ж меня, такого красивого, тут не любят-то?"
> Потом еще удивляется "за что ж меня, такого красивого,
> тут не любят-то?"Любят, но не все и не за это, полагаю. Как и arisu или почти любого другого способного здесь что-либо рассказать по существу человека со своими тараканами и закидонами (сам не буду примазываться, конкретно по сишной части мне до них подальше, чем до Луны).
Бывают, конечно, и несгибаемо невозмутимые люди вроде бедного буратино, но это редкость...
> Потом еще удивляется "за что ж меня, такого красивого, тут не любят-то?"Если кто начинает дискуссию с набивания себе цены и поливания других решений - очень странно надеяться на дружелюбие в ответ. Вам так не кажется? Да и чисто практически - куда мне любовь хрустиков девать? Я пока-что не в восторге ни от ЯП ни от комьюнити вокруг него: шуму много, толку буй.
ИМХО, собрали бы волю в кулак да расзакорючили и раскостылили, чтоли, в каком-нибудь раст 2.0 пока софта не сильно много. Вместо доказательств что этот крап офигенен. Потом поздно будет и кто станет такой щит поддерживать когда хайп сольется и начнется рабочий процесс я не понимаю. И вообще, на месте той толпы корпов я бы не фаундейшны лепил и хайповал а толпой денег нормальному архитекту какому-нибудь дал. Ну это так, взгляд с галерки.
> Потом еще удивляется "за что ж меня, такого красивого, тут не любят-то?"Как дискуссия началась, так и продолжилась. Возможно, начинать с попыток набивания цены и поливания других и их проектов - не очень удачная идея.
Со своей стороны лично я рад что мистер Торвальдс конструктивно приложил этих господ: они либо придут в более адекватное состояние, либо пойдут в пень. А не обеспеченный дизайном языка маркетинговый булшит про системность отпадет, так или иначе. И на мой вкус - лучше бы его, честно говоря, переделать с ноля, по итогам шишек и костылей. Да, знаете, когда в ЯП есть new и try_new это как-то не очень хорошо говорит о продуманности ЯП и парадигм. В си например и тот и другой вариант этой логки можно сделать без внедрения новых кейвордов, так что сравнение получается как-то не в пользу раста.
> Потом еще удивляется "за что ж меня, такого красивого, тут не любят-то?"Если меня не любят те кто генерит код типа let data = Pin::from(Box::try_new(unsafe { Mutex::new(0) })?); - может и черт с ним, а? Мне от таких ничего не нужно.
>> Потом еще удивляется "за что ж меня, такого красивого, тут не любят-то?"
> Если меня не любят те кто генерит кодА еще те, кто не генерит и все остальные - за хамство и балабольство.
> Си можно использовать без libc. Возможно ли подобное с ржавчной?Ограниченно - да. Но там ... судя по бложикам почти как с линухкернелом.
Родной ты наверное даже make не запускал. Каким боком у тебя в ядре выползло libc?И уж точно не растоманам расказывать о том как рабоать с памятью когда они даже её размер определить не умеют.
Свои задачи раст вполне решает. Осталось придумать для него low-level рантайм. Я в ядре раз в два месяца натыкаюсь на баг с гонками состояний. Я уже не говорю про вашу любимую сишечку на десктопе, где профессионалы, имея 20-летний опыт, все равно постоянно лажают с синхронизацией и менеджментом памяти.
>Свои задачи раст вполне решает.Бесполезными драйверами?
Почему бы вам и вам подобным не пройти в свой растозагончик и играться там? Ведь есть же игрушка-ОС на раст. Пусть и убогая пока что.
Зачем нужны всякие игрушечки ос? Это чисто развлечение определенной группы людей, которое не обязано выходить за эти рамки.
А драйверы - первый верный этап применения в ядре Линукса. Самое начало.
В любом проекте внедрение Раста надо начинать сбоку, это правильно и логично.
> Осталось придумать для него low-level рантайм.И получится другой язык без гарантий, которые дает [std]-rust. И кому нужен такой язык, кроме фанатиков?
>> Осталось придумать для него low-level рантайм.
> И получится другой язык без гарантий, которые дает [std]-rust.И каких именно "волшебных" гарантий внезапно не станет? Гарантии дает компилятор, за счет ограничений в синтаксисе и семнтике в нем не нужно писать почти-ИИ-угадайку с БД самых частых ошибок в качестве и прочими наворотами в качестве анализатора
> И кому нужен такой язык, кроме фанатиков?И правда, кому нужен язык, сочетающий наработки по теории типов, компиляторов и автоматизированных доказательств корректности последних 30 лет, но без излишней академичности хаскелей и агд, если можно продолжать обмазватся костылями?
> И каких именно "волшебных" гарантий внезапно не станет?Где находятся всякие box, borrow, стандартные типы char, int8-128 и тп? С их гарантиями. А тайпчекер компилятора проверяет уже написанные (в stdlib) гарантии и не сочиняет новые под каждую программу.
Точно так же с++ без std - это не с++.
> Точно так же с++ без std - это не с++.А C без stdlib таки, вот, си. Прямо вот на уровне стандарта - просто "freestanding". И это, вам не кажется что за 22 года можно было бы и сняться с ручника, или где, и перестать игнорить некоторые юзкейсы?! Особенно когда их вот так пытаются потом как сову на глобус - и замечают что чего-то не очень то получается, давайте еще костылей, дескать, вобьем.
> А C без stdlib таки, вот, си. Прямо вот на уровне стандарта - просто "freestanding".Glibc, без которого и куска ядра не собрать: Ну-да, нуда...
> Glibc, без которого и куска ядра не собрать:Это в каком бы месте кернел glibc пользуется? Вы там совсем с дуба упали? И ничего что есть дистры, которые на, допустим, Musl или uClibc? Так что кукуйте, сишники не настолько бакланы как вы.
> Ну-да, нуда...
На ваше горе я таки кернел еще и компилю и запускаю, в самых разных окружениях. По этому могу обнаружить когда уже пора снять вашу лапшу с моих ушей.
> А C без stdlib таки, вот, си.
> есть дистры, которые на, допустим, Musl или uClibcТо есть Вы противоречия не видите? Показательно.
> На ваше горе я таки кернел еще и компилю и запускаю, в самых разных окружениях.
И ладно, соглашусь, такие дистры есть. Но юзабельны? Нет, пока сам всё ПО не накостылишь не не соберёшь. Это после костыляния ядра, ага. Как минимум потому что musl - урезанный вариант stdlib, а uclibc - ещё более урезанный, так ещё и устаревший. uclibc-ng, правда, пытается конкурировать с musl, и вроде даже хорошо получается, но до glibc всё равно костылять и костылять. А тут на Rust накинулись, просто потому что "ААА, хрустики!".
>наработки по теории типов, компиляторов и автоматизированных доказательств корректности последних 30 лет,Наработали, в итоге, вот такую лажу:
let data = Pin::from(Box::try_new(unsafe { Mutex::new(0) })?);
И это еще 2-связные списки не трогали...
https://play.rust-lang.org/?gist=71c6bc45ff92452d5a4397ddb2d...
> let data = Pin::from(Box::try_new(unsafe { Mutex::new(0) })?);Архитектурально, блин, что тут сказать.
> Я
> в ядре раз в два месяца натыкаюсь на баг с гонками
> состояний.Это не в ядре. Это с руками у тебя гонка состояний.
С новым годом.
> Процесс идёт, отлично 👍🏻👍🏻👍🏻Ох жешь ты моё членистоногое. Где же он идёт? Так-же как и с любым проектом на расте? Ни шагу дальше болтовни :D
У да, идёт :D> потенциальная возможность ухода в panic в ошибочных ситуациях, например, в ситуации нехватки памяти
Хааааааааааа, классика.
> так как в данный момент базовая (core) библиотека Rust неделима и представляет собой один большой blob
Шедевр архитектуры
> Кроме того Торвальдс отметил, что предоставленный пример драйвера - бесполезный и посоветовал приложить в качестве примера какой-нибудь драйвер, решающий одну из реальных задач.
Шикарно. Кто бы сомневался что они ничего кроме "блаблабла у нас безопасно" не могут, да даже с памятью работать не умеют.
> Процесс идёт, отлично [][][][][]У тебя rust конейц сообщения скушал
По существу сказал, что это пока еще "сырой" инструмент...
Пусть пилят...
> По существу сказал, что это пока еще "сырой" инструмент...
> Пусть пилят...Конечно сырой, ведь по существу единственный "прототип" от гугла, "работающий", по факту ещё не готов, но вот-вот...
Но ржавые уже умозрительно считают, как же будет всё замечательно при их ржавом коммунизьме.
Да нет, ржавые надеются, что если язык обретёт достаточную популярность, то и нормальный компилятор подвезут, а то пока есть оверхеды от LLVM (куда компилит энтузиастский вариант), то и зарабатывать на Rust как-то не уверенно.
> Ещё одной проблемой стали попытки использования вычислений с плавающей запятой или 128-битными типами
> базовая (core) библиотека Rust неделима и представляет собой один большой blobможно выдыхать, раст в ядре увидим нескоро, даже гугол не поможет
Ну, они смотрели на сишников - мол, зачем вы столько инклудов пихаете, ламеры?! А оказалось что ламеры - немного не там, а инклуды имели пойнт, не нужна фича вы ее и не цепляете. А в 99 сделали стандартным freestanding mode, для вот примерно таких штук как кернелы, фирмвары и бутлоадеры. А хруст что, там для начала и на обычный то вариант формального стандарта нет, а о том что неплохо бы что-то такое они еще эвон когда задумаются.
> Ну, они смотрели на сишников - мол, зачем вы столько инклудов пихаете,
> ламеры?! А оказалось что ламерыКлассика опеннета - сам что-то нафантазировал, сам же и "опроверг".
Был линукс, стал Googlinux
Гуглагнис.
Слово Фуксия пишется по другому.Есть уже всё... Др. дело, что на Линуксе поднят бизнес с облаками и потому оптимизируют, разрабатывают прошлое тоже.
>Слово Фуксия пишется по другому.Ага, пишется "Фуксия" - читается - "не нужно!(С)"
>>>он может полностью отвернуть (totally NAKed)эээ что он там собргался полностью отворачивать и почему "совершенно голый" не перевели?
оригинал:
this whole approach needs to be entirely NAK'ed
Теперь ждём начала кампании против Линуса.
Скоро тоже свои ошибки признавать будет.
Надо начинать с корней. Иначе заразу не победить.
Да Вы-таки?..
Суть революционеров в том, чтобы разрушить, хапнуть падали, но ничего не создать, а то и погибнуть.
Может кто-нибудь адекватный написать, а что делает код на C в "ошибочных ситуациях, например, в ситуации нехватки памяти, когда операции динамического распределения памяти, в том числе и внутри ядра, могут завершиться ошибкой" ?Также было бы интересно узнать о проблеме "использования вычислений с плавающей запятой или 128-битными типами, что не является допустимым для таких окружений, как ядро Linux"
Не тролль, просто интересно спросить людей кто знает больше в этой области. Спасибо.
> что делает код на CКод на С делает ровно то, что ему велел программист в любых ситуациях.
> 128-битными типами, что не является допустимым для таких окружений, как ядро Linux
Это тебя кто-то дезинформирует
> Код на С делает ровно то, что ему велел программист в любых ситуациях.Это не объясняет феномен существования UB, а также то, что "велел" и "подразумевал" могут отличаться.
Давайте не уподобляться крикунам про демократию.
PS: буковка "E" откуда-то взялась... видимо, велел, но не подразумевал.
> "велел" и "подразумевал" могут отличаться.Будешь раз на раз?
PS: засуньте свои буковки в "Ж"
Ну, это не то чтобы прям феномен. Просто зернокомбайн наехал на отдыхающих/минное поле/"коровьи лепёшки". Просто, возможно, проверка вводимых в него продуктов может оказаться сложнее/больше/дороже самого зернокомбайна.
> Может кто-нибудь адекватный написать, а что делает код на C в "ошибочных
> ситуациях, например, в ситуации нехватки памяти, когда операции динамического распределения
> памяти, в том числе и внутри ядра, могут завершиться ошибкой" ?Я знаю минимум 2 вменяемых варианта действий:
1) Ядро и ко отлупляет -ENOMEM наверх, и в конечном итоге запрос к кернелу фэйлится с этим отлупом. Ну нишмагла я, нишмагла. Но в панику все же не грохается, а за lifetime системы ей много других сисколов еще достанется, многие из которых будут разрулены успешно.2) Некоторые программы в юзермоде немного ждут и делают retry. Иногда несколько раз. И фэйлят операцию только если оно за эн раз не прокатило и стало быть совсем душняк. И опять же - контролируемо фэйлят, отлупляя caller'у (например тому кто запрос БД гонял или http пагу попросил) ашиппку. Ну там 500 internal server error например. Который все же сильно лучше чем целиком улетевший в трубу процесс сервера, с вообще всем state, всех юзерей, или чего там, не?!
Именно такой уровень контроля делает системный ЯП таковым. А вовсе не наглое битье себя пяткой в грудь. В чем некоторые с своим костылем try_new и убедились недавно.
> Также было бы интересно узнать о проблеме "использования вычислений с плавающей запятой
> или 128-битными типами, что не является допустимым для таких окружений, как ядро Linux"Выше есть.
Во, полезный User294 -- это всегда было здорово :-)
Спасибо!
В "ошибочных ситуациях, например, в ситуации нехватки памяти, когда операции динамического распределения памяти, в том числе и внутри ядра, могут завершиться ошибкой", обработка ошибки лежит на разработчике, для ядра это именно то что надо.Для использования вычислений с плавающей запятой в ядре надо специальным образом сохранять состояние fpu и потом его восстанавливать.
Использование 128-битных типов без явных блокировок чревато разнообразными гонками при доступе к таким данным.
> ... о проблеме "использования вычислений с плавающей запятой или 128-битными типамиСохранение контекста --- довольно дорогая операция, а если контекст сохранять вместе с регистрами FPU --- то это сильно дороже, чем без них. (там и объём, и время доступа к регистрам FPU). Поэтому ядро не сохраняет контекст FPU-части, если процесс не трогал FPU. Чтобы поймать использование FPU процессом --- стоит соответствующий trap и по первому разу взводятся нужные флажки. Но всё это возможно (в принципе!), только если в самом ядре FPU не трогают (за исключением обработчика соответствующего trap). И его (FPU) действительно больше нигде не трогают. Иначе --- double trap, и kernel panic.
Изменение этого механизма в ядре --- дорого, и заплатят за него как раз непричастные.
Тем более, что ядро работает и на железе без FPU.
Про 128-bit в общем примерно аналогично --- нет такой хрени на многих платформах, и много вопросов к атомарности операций и выжиранию регистров.
Изменить это на стороне Rust --- надо менять концепцию, вычленять "кошерную" часть библиотеки, и т.д. А оно ещё и контролируется закрытым попечительским советом --- т.е. там может что и наколхозят, но в ядро начнут отгружать непрозрачный blob.
Как это правильно: не стоять со своим категоричным нет, навлекая на себя неодобрительные косые взгляды, а как бы с помпой согласиться, а потом размазать тонким слоем!
Это называется "обычное рабочее обсуждение". Всегда есть проблемы, которые надо решать. И их решат.
Кочевряжится ещё. Ничего, доломают. Не таких ломали.
> Не таких ломали.Это например кого?
https://en.wikipedia.org/wiki/Systemd#Adoption - те, у кого в графе "Enabled by default?" стоит "Yes".
Может, успеет смыться на Родину, а тут рядом, прикроем.
Угу, на сколько лет прикроем?
Успеем добежать до канадской границы! =)
Да сразу к нам. Будут со Сноуденом в одном ковырялкинге клавы топтать.
Ну вот еще. Такую честь еще заслужить надо! Сноуден - заслужил, все что надо - сдал! А этот чем хорош?
Будет лес валить, как все.
Церковь свидетелей Раста похожа на секту: всюду втирают, комментят, мечтают, ждут, убеждены, и дискуссии не интересуют. Этакая иллюзия, что в результате изменения во вне, а не в человеке, жизнь станет лучше и веселее.
Теснят старичков
Да ему всего 51. До пенсии ещё пилить и пилить. Мож ещё и не дадут, не заработал.
Не прпи его жизни
Где тут эгзперды, которые на каждом углу орут, что ядром рулят корпорации.Ну как Гоогле, много нарулил? :)
Пламенный привет от Линукса. https://lurkmore.so/images/5/5e/Linus_fuck_u.png
> Кроме того Торвальдс отметил, что предоставленный
> пример драйвера - бесполезный и посоветовал
> приложить в качестве примера какой-нибудь драйвер,
> решающий одну из реальных задач.Но как это было нетолерантно!
> одну из реальных задачКто-то из оппонентов обитает в другой реальности. Будут выяснять кто из них в "единственно правильной" реальности.
В новости почти ничего непонятно.1. Почему речь о panic, а не об abort? Опция panic=abort представляется совершенно необходимой в данном случае. В остальном в этом пункте всё понятно.
2. Почему в ядре нельзя использовать 128-битные целые и вычисления с плавающей точкой?
3. Что это ещё за "большой blob" и каков его размер? Там всё или почти всё должно инлайниться и/или выкидываться из-за неиспользования. Почему это не работает?
4. Почему нельзя просто не использовать те фичи _языка_ — а речь всё-таки, видимо, о фичах языка, которые нужно не использовать? Понятно, что это неидеальное решение, но всё-таки решение. Или нет?
Задай эти вопросы ненужнодрайверописателям. Зачем они пытаются засунуть это ненужно в ядро?
Вам не нужно, а мне нужно.
Вам ржавчина, ой, то есть, шашечки, или ехать?!
>2. Почему в ядре нельзя использовать 128-битные целые и вычисления с плавающей точкой?Про целые 128 бит действительно непонятно. Тем более, что реально такие числа используются в сетевом стеке - адрес IPv6.
А вот аппаратная реализация вещественной арифметики есть не во во всех CPU. Программная эмуляция - медленно, не допустимо в ядре. А самое главное, на кой? В ядре все величины целочисленные.
> Про целые 128 бит действительно непонятно.Может потому что в ядре с этими целыми типами данных нельзя работать так, как работает "отсутствующий жирный рантайм" Rust?
> Может потому что в ядре с этими целыми типами данных нельзя работать
> так, как работает "отсутствующий жирный рантайм" Rust?А также вероятно есть нехилые проблемы с атомарностью таких операций. А покладание на атомарность ведет к чудесатым - и крайне трудноуловимым - багам, когда раз в год у вас почему-то палка стреляет.
> 2. Почему в ядре нельзя использовать 128-битные целые и вычисления с плавающей точкой?Всё там можно использовать, и используют. Только для этого нужно провести специальные процедуры по сохранению/восстановлению контекста, и за компанию написать версию для CPU которые в это не умеют.
> 4. Почему нельзя просто не использовать те фичи _языка_ — а речь всё-таки, видимо, о фичах языка, которые нужно не использовать? Понятно, что это неидеальное решение, но всё-таки решение. Или нет?
Можно, и нужно. Но пока растофанатики решили зайти со стороны: "А давайте затащим сore библиотеку в ядро!".
> Но пока растофанатики решили зайти со стороны: "А давайте затащим сore библиотеку в ядро!".Растофанатики решили затащить ржавчину, а не техники и методы решения проблем, которые позволяет использование Rust в ядре.
Да я то же и говорил, что ржавой слишком жырный. И что библиотеки нет, а тут вот возможности нет отрубить ненужное. Короче пока Ржавого не кастрируют в ядро его нельзя пускать! Вотт кастрированный раст можно. Андройд вот живет с Ржавым без кастрации.
Сначала кастрация, затем — мутация! © Один очень неполиткорректный м/ф.
А как на С\С++ вычисления с плавающей запятой в ядре ограничивают.
Я не експерт по ядру но С\С++ использовал. Интересно.
Очень просто. Для оптимизации по-дефолту регистры FPU не сохраняются при переключении контекста. Поэтому если вы в одном потоке что-то вычисляете используя регистры FPU и в другом, то при переключении будет беда.Для того чтобы в ядре использовать вычисления FPU, например для оптимизации расчета контрольных сумм, сжатия, шифрования, нужно явно указать сохранение контекста.
Очень неестественно обратный слэш в "С\С++" выглядит
Вообще Линус просто должен запретить использовать в ядре std библиотеку раста и всё. Я почему-то думал, что так сделают изначально. И заодно запретить cargo. Пусть желающие пишут абстракции над существующими ядерными примитивами и ими пользуются.
Разумеется, для ядра используется nostd режим. Тут речь не о std библиотеке, а о core, которая неотъемлимая часть языка.
Просто без core языка не будет - там все базовые примитивы вроде интов и прочих булеанов. Другой вопрос, зачем туда же включили те же паники и работу с памятью, если по логике это уже уровень std. И трейты можно было бы вынести в отдельную traits библиотеку - там много методов, реализованных по-умолчанию.
> Это оказалось более серьёзной проблемой, так как в данный момент базовая (core) библиотека Rust неделима и представляет собой один большой blob - в ней нет возможности запросить только некоторые из возможностей, предотвратив использование той или иной проблемной функциональности.Какому наркоману вообще в голову пришло тянуть какую-то базовую библиотеку из Rust в ядро? В ядре так-то и сишной стандартной библиотеки нет в полном объёме.
И это на мой взгляд беда Rust, там кучу элементарных операций приходится делать с помощью какой-то библиотеки.
Ядро блин, оно само по себе огромная библиотека/фреймворк, которая предоставляет разные типы аллокаторов, примитивы синхронизации, нити, процессы и кучу ещё всего. И ко всему этому нужно сделать хорошую, качественную обёртку на Rust. А ещё потом постоянно синхронизировать с сишной версией. На что макаки конечно не способны, т.к. это огромный труд и требует глубоких познаний.
И я понимаю там у MacOS X, IOKit на плюсах, но плюсы позволяют легко и не принужденно использовать сишное API.
> Какому наркоману вообще в голову пришло тянуть какую-то базовую библиотеку из Rust в ядро? В ядре так-то и сишной стандартной библиотеки нет в полном объёме.Там core состоит из примитивов, разных трейтов и зачем-то паник. Тут как раз растовой команде надо по шапке дать, пусть делят свою core и выделяют всякие паники и стринги в отдельные библиотеки.
> И я понимаю там у MacOS X, IOKit на плюсах, но плюсы
> позволяют легко и не принужденно использовать сишное API.В IOKit разрешены не все плюсовые фичи - нет исключений, множественного наследования, шаблоны (интересно почему) и нет RTTI
> раз растовой команде надо по шапке дать, пусть делят свою core
> и выделяют всякие паники и стринги в отдельные библиотеки.Они как обычно - имея дофейхоа примеров перед мордой решили что изучать экспериенс других до того как подрываться кодить нафиг надо. И тут вдруг оказалось что они таки не самые умные на свете и не предусмотрели дофига кейсов.
> В IOKit разрешены не все плюсовые фичи - нет исключений, множественного наследования,
> шаблоны (интересно почему) и нет RTTIСкорее всего потому что на системном уровне можно получить много дурных ситуаций которые от вас татк то прятал рантайм/стандартые либы и проч. А если их нет и вы должны это сами, да еще в кастомном окружении...
Собственно си хорош для системных дел тем что в нем минимум допущений о окружении, если запрошен стандартный (!!!) режим freestanding. При этом он вообще ничерта от системы или либ не требует. Хотя нет, gcc например иногда требует memcpy/memmove/memset. Но накодить вот этих трех при наличии такой необходимости - на полчаса максимум любому сишнику (включая чтение мана), по крайней мере минимальную неоптимизированную версию.
Линуса зауважал! раст - азаза :)
Адекватная критика языка позволяете сделать его лучше. Надеюсь разработчики языка именно так и поступят.
Это не критика языка, это критика конкретного кривого решения.
> конкретного кривого решенияЖирный "отсутствующий" рантайм... А что, у растаманов есть другой?!
> Это не критика языка, это критика конкретного кривого решения.Как вы смеете мешать местным Экспертам вместо реальности видеть то, что им хочется?
то был не против, теперь таблетки закончились - началось обострение...
Он и сейчас не против. Просто не надо читать советских газет^W^W опеннет, и тогда не будет возникать ложных убеждений о реальности.
Торвальдс повторил всё, что долгие годы Анонимус пытался донести до растаманов на опеннете.
Торвальдс, залогинься !
Нафиг rust, давайте сразу vlang пилить.
Как говорится, за Линусом не заржавело.
У гугла есть ресурсы и спецы воткнуть в линух растошлак, воткнут. Торвальдс только подкукарекнет, что всё хорошо и через некоторое время начнём новые ошибки исправлять. В этом весь опенсорс - когда проект почти вылизан до идеала и стабилен, нужно его испортить, чтобы обеспечить себя работой. Так было с gnome, так было с kde.
С какого перепугу шикарнейший Раст у тебя стал растошлаком?
Сколько времени на нем писал и как пришел к этому выводу?
Ты уже написал полезный драйвер на хрусте?
А ты хотя бы хелловорлд на Расте писал!
Не надо писать hello world чтобы понять что растошлак это растошлак
Раз в ядро пихают убийцу сишарпа, давайте туда запихнём сишарп.
С каких пор он убийца сишарпа?
Всё закапывайте Rust! Он не взлетел.
лол, как Mars Ingenuity. Тоже наверное на Rust-е писали синхронизацию
К чему раст пихать?-"Как по мне, V (vlang.io) более симпотишен в этом плане"
Бротуха, в ядре и системных утилитах - Си, только чистый Си.
Звучит как все кроме си - от лукавого :D
> Звучит как все кроме си - от лукавого :DКак «со своим уставом в чужой монастырь».
Драйвера на rust бесполезны (c) :)
Страшный сон Линуса - blob неделимого rust-а зашел в ядро до щелчка.
Если Торвальдс не понимает rust-а, это не значит что его нету. Rust-а я имею в виду.
Дыра не в rust-е, и даже не в C. Дыра в архитектуре процесора. 35 лет назад свернули не туда.
Они хотели не только до щелчка, но ещё и с проворотом.
Но тут их раз - и одели в резиновое изделие №1 от ушек до тапок.
(именно в №1, не перепутайте!)
Но как тут поможет противогаз ?
Надеть на растамана и завязать хобот узлом.
Да никак, но одеть №2 в №2 сложновато.
Стесняемся, что ли спросить: а вообще rust в ядре HAXEPA?
Видимо им тоже хочется, шобы было. Молодые амбиции, протестуют.
Возможно что бы код можно было делить на C и Rust. Это как Белый и Чёрный в нашей обыденной жизни. Потом те, кторых будет меньше, скорее всего приверженцы Rust поднимут холли-вар. Их притесняют, им тяжело дышать.
Хотя приверженцы asm-а не холли-варят. Отсюда следует только одно - rust-овцы хотят подложить свинью в ядро или даже целого коня, троянско-педального.
дерзко, молодежно, по фану.А тем временем F-35 падает где-то, потому что писать авионику на Modern С++ модерно, дерзко и по фану.
Кстати что там с Mars Ingenuity, сможет он взлететь вопреки дерзкой молодежи? :)
> А тем временем F-35 падает где-то, потому что писать авионику на Modern
> С++ модерно, дерзко и по фану.А он падает? Или это таки ариан5 был с типа-"надежной" Ada все-таки?
> Кстати что там с Mars Ingenuity, сможет он взлететь вопреки дерзкой молодежи? :)
Дерзкая молодежь не умеет нихрена кроме как дерзить вроде бы. А, ну еще пиариться. А как проблемы решать с своим фетишем, пусть кто-нибудь другой.
> Кроме того Торвальдс отметил, что предоставленный пример драйвера - бесполезный и посоветовалперед тем как отнимать мое драгоценное время, неплохо было бы ...
Продвижение Rust-a многими корпорациями и другими... - означает или Rust действительно хороший и нужный язык, или какой-то заговор:). Кто-нибудь может ответит есть-ли в прошлом IT какой-нибудь другой язык которого продвигали также как Rust?
Java
JavaScript
C#
Go
Все их продвигали гораздо сильнее.
ECMAScript лучше вычеркнуть - он каким-то чудом "самопродвинулся".
Хотя редкостное уё... простите, убожество.
Go тоже можно вычеркнуть, он маргинален.А вот Java и C# - да, это языки с просто ОФИГИТЕЛЬНОЙ степенью поддержки маркетингом в своё время.
> Go тоже можно вычеркнуть, он маргинален.Потому что для серверов, микросервисов, также можно сравнить долю линукса на десктопах, что маргинален. Java энтерпрайз или массовый за счёт андроид, а решетки - больше для декстопов с виндой, хотя можно прикрутить и к MSSQL и прочей нише винды
>Go тоже можно вычеркнуть, он маргинален.Инна? Инна! :-)
Уже несколько лет как не видел контор без дыркеров и k8s ... а оно всё на Go.
Поскольку Docker DEPRICATED в Kuberneter, да и заказчики начинают понимать, зачем им все эти облака и переусложнённые "технологии" для простых About Us/Pricing сайтов, то таких контор, полагаю, будет с каждым годом всё меньше и меньше. И тут, помнится, смеялись с олдфагов, которые сайты по ftp заливют, мол надо в git - то почитайте тут, к чему это приводит: https://ebanoe.it/2021/04/04/diia-city-fail/
Хм, а чего кубернетчики теперь без докера делать-то будут?
Пилить под два варианта сразу - докер и кри? Крупняк в провижнинге этого счастья с докера ещё долго не уйдёт.
Ну вот да, с хеллоуворлдами к нам на шаред косяками идут ныне опять, забавно после 4 лет застоя.
Ну я просто немножко в других компаниях работаю наверное :)
Тех, поверх которые работают эти самые однодневки без собственной инфраструктуры, но с докерами и гошечкой.
Гугл зарабатывает миллиарды на андроид и хром ос. У него хватит денег доделать rust до возможности писать код ядра
Гугл уже похоронил более 200 проектов...
Похоронное бюро имени гуглплюс ждёт хруст в развесёлую компанию.
>У него хватит денег доделать rustОни свой Dart не шмагли, ога, а тут вдруг ВНЕЗАПНА! :)
Аогда rust все-таки примут в ядро, местные эксперты могут форкнуть ядро и запретить правилами принимать непонятный rustокод. Если эксперты действительно так хорошо программируют на Си как пишут здесь, то им это будет легко поддерживать форк
> Если эксперты действительно так хорошо программируют на СиХорошо "программируют" они только языком в таких вот новостях, особенно когда можно высказать свое ценнейшее мнение, не вдаваясь в "скучные" (и палевные) детали.
К счастью, ядро - это не рантайм хруста, и даже если это говно туда таки втащат какими-то неправдами - всё равно оно будет отключаться полностью одной опцией. Или парой опций в худшем случае.
Да-да, мы все знаем, как это бывает: сначала тащат какаху, потом от нее начнает зависеть все больше и больше
вообще хочется бить ногами когда очередной кто-то пишет "не волнуйтесь это можно отключить".(подразумевается что что-то будет включено поумолчанию, а список того что "нужно отключить" пополнится новым пунктом).
до людей похоже не доходит что через "можно отключить" нормальные дела не делаются. это что-то является ВРЕДНЫМ то это должно быть отключено ПОУМОЛЧАНИЮ.
--------------------------------------------------
можно даже абстрогироваться от ядра и программиования и вспомнить хотябы Фильтрацию Чебурнета, которую тоже МОЖНО отключить (запустив у себя VPN-клиент). об этом все знают но на деле просто НЕ посещают сайты которые оказались под фильтрацией Чебурнета.
Фильтрацию чебурнета обходят, а не отключают - почувствуйте разницу.
Как раз таки НЕВОЗМОЖНОСТЬ отключить - это проблема.
возможно offlopic но напишу всё равно:вот интересно ещё -- если бы было так -- сказали бы "ребята! мы подключаем вам Интернет. но если хотите, то как опцию можем предложить фильтацию Чебурнета (для безопасности и защиты от угроз!). нужно? это бесплатно!"... сколько бы человек согласилось бы такое предложение? :-D :-D :-D :-D
то есть всякая вредная херня -- её же люди точно не хотят включать. и единственный способ ей выжить остаётся -- быть включённой поумолчанию. :-)
а бывают спорные моменты (вот как с этим rust) типа не ясно нужно оно или нет в ядре. вредное или не вредное. и ХОП(!) решили что нужно включить поумолчанию.
а потом приходит какой-то парень и говорит "ды чё вы переживаете? это же можно просто отключить (лично у себя)".. и вот тут наступает ЛОЛ!
> вот интересно ещё -- если бы было так -- сказали бы "ребята!
> мы подключаем вам Интернет. но если хотите, то как опцию можем
> предложить фильтацию Чебурнета (для безопасности и защиты от угроз!). нужно? это
> бесплатно!"... сколько бы человек согласилось бы такое предложение? :-D :-D :-D
> :-DВ UK оно как раз примерно так и работает, только именно что opt-out, отключение по запросу.
По умолчанию подключается родительский контроль и набор ограничений на доступные ресурсы - да, именно с целью детей слегка оградить от всякой явной дряни.
Далее если надо - ты эту хреновину отключаешь. Взамен можно на детские компы поставить софтинку от провайдера, представляющую собой DNS-прокси, которая делает то же самое, что "родительский контроль".
В итоге никакой цензуры, и никто не жалуется, потому что возможность отключить есть всегда.
> В UK [...] никакой цензурыА Вы смешной.
Ты хоть раз в UK-то был, грустный клоун?
>> В UK [...] никакой цензуры
> А Вы смешной.По сравнению с тем что у вас сейчас орки устраивают - он таки не врет. Да, все познается в сравнении.
> Компания Google заявила о своём участии в инициативе по продвижению поддержки Rust в ядро LinuxКрасавчеги (из корпорации добра ;)
Будут вставлять рекламу в многочисленные сообщения паники раста
Люблю запах жареных до хрустящей корочки хрустиков. Это запах...победы.Теперь мне просто интересно, как скоро у Торвальдса обиженки найдут очередной факт эйблизма (подсказка: стоит почитать историю рассылок ядра, он там тупых запросто кроет всеми половыми органами), расизма (один из таких тупых, чей "хениальный" патч отверг Линус - черный) и гомофобии (не просто черный, а черный гей).
> Дополнение: Компания Google заявила о своём участии в инициативе по продвижению
> поддержки Rust в ядро Linux и привела технические аспекты целесообразности
> внедрения Rust для борьбы с проблемами, возникающими из-за ошибок при работе с
> памятью. Google полагает, что Rust уже готов присоединиться к Си в качестве
> языка для разработки компонентов ядра Linux. В статье также приведены примеры
> использования языка Rust для разработки драйверов ядра, в контексте их
> использования в платформе Android (Rust признан официально поддерживаемым языком
> для разработки Android).нашли кого спросить! Google! которые наплодили миллионы ошибок (в том числе архитектурых, и вообще детских) в Отвлетвлении Ядра для Android, а потом позорились пытаясь пропихнуть это в ванильное ядро.
всё будет однозначно просрано, если пойти по пути Google.(самому Google [как и Microsoft] это не страшно -- они всегда могут найти любое огромное число разработчиков чтобы исправить любую проблему)
Программист должен управлять памятью вручную и без ошибок; в противном случае пусть валит подметать улицы.
Осталось только найти этого уникального программиста, который не делает ошибок, и подождать тысячу-другую лет, пока он не перепишет весь софт, написанный дворниками. Ой, а он не успеет.
А ты вообще, осмелюсь спросить, с планеты Земля?
Зачем их искать? В комментариях к этой новости и другим новостям о rust отметилась множество программистов не делающих ошибок.
Остальные комментаторы в таких новостях используют Раст.
Воистину.
> потенциальная возможность ухода в panic в ошибочных ситуациях, например, в ситуации нехватки памятиХааааааааааа, классика. Так и не научились работать с памятью.
> Компания Google заявила о своём участии в инициативе по продвижению поддержки Rust в ядро LinuxОдного этого уже достаточно, чтобы отказаться от Rust в ядре Linux.
Значит PWA, Chrome, Golang, Angular (незаслуженно популярных, кстати) и прочие поделия всех устраивают, нет наплыва хейтеров, а тут почему-то Rust плохой из-за гугла.
Бумажный кораблик нагло разбился о скалу.
Почему администрация не запрещает новости о rust? Местные эксперты его так ненавидят, нельзя же так травмировать психику экспертов
Это не к "экпертам". А к политтехнологам. Т.е. агрессивное продвижение rust (довольно противоречивой, неоднозначной и очень сырой вещи) --- это не технический вопрос, а маркетингово-политический.Некоторые пропихнули (s-d, dbus, node.js). Другие --- всё-твки не смогли (D, kdbus, HAL, PolKit, ...).
Вон посмотрите --- объём (т.е. бюджет) маркетингового проталкивания kubernates. И?
Стоит только заикнуться, к примеру, в нашем проекте никогда не будет использоваться то, чьё название нельзя называть в слух, к вам приедет с десяток другой автомобилей хейтеров, прям как у корейцев-нетизенов.
Приведите пример агрессивного продвижения Rust? И кто же тратит силы на этот маркетингово-политический вопрос, кроме хейтеров, создающих на пустом месте политику?
Линус - молодец, высказал здравую критику. Местные хейтеры остались на прежнем уровне: петросянство, "хруст" и т.п.
Что люди не придумают, лишь бы не учить C/C++/D
Учить С - я ещё понимаю, но зачем остальные два? С++ - помойка, а не язык, любой вменяемый плюсовик с опытом согласится. D лучше (хотя тоже очень далёк от идела), но рано или поздно наткнёшься на баги компилятора или твёрдый лоб Уолтера Брайта, а со временем поймёшь, что ни то, ни другое никто исправлять не собирается.А вообще, к Rust приходят обычно уже с опытом разработки на C и C++.
> зачем остальные два?С++ - улучшенный С. D - улучшенный С++.
У Си языка есть огромный недостаток. Написанный на нём софт, невозможно кардинально поменять, либо что-то резко переделать. Приходится писать всё с нуля. Яркий пример - Xorg и Wayland.
> А вообще, к Rust приходят обычно уже с опытом разработки
Расту я предпочёл бы Nim, если хочется чего-нибудь новенького.
> У Си языка есть огромный недостаток. Написанный на нём софт,
> невозможно кардинально поменять, либо что-то резко переделать.
> Приходится писать всё с нуля. Яркий пример - Xorg и Wayland.Доводилось слышать про пули из современных лёгких в обработке материалов? Вот то-то и оно.
Да Вы король неуместных аналогий.
D - это который за бОльший срок (22/14 лет) развился меньше, чем Rust(15/6 лет)? Бесспорно, хороший пример.
Тише едешь - дальше будешь.
Линус держись! Мы с тобой мысленно. Злые языки поговаривали что теперь ты будешь помалкивать и делать что скажут, но я чувствую твою борьбу.
От чего держаться-то? От безопасности и комфорта?
От давления копирастов проприетарщиков, проталкивающих свои изменения в ядро только ради корыстных целей.
Добавление нормального языка, на котором лучше писать системное по - о боже, какие ужасные корыстные цели))
> на котором лучше писатьКак говорится любишь - докажи.
> Добавление нормального языка, на котором лучше писать системное поДурные технические проблемы на ровном месте, костыли и куча технического cruft'а - очень так себе "улучшение" пока-что.
Недалёкое будущее:It is year 2028 and Linux has been completely rewritten in Rust.
After adding Rust support to Linux kernel in 2021 Linux repo has been flooded with patches and pull requests from brave Rustaceans rewriting critical components in Rust to ensure their stability and memory safety that C could never guarantee. After a few painful years of code reviews and salt coming from C programmers losing their jobs left and right we have finally achieved a 100% Rust Linux kernel. Not a single kernel panic or crash has been reported ever since. In fact, the kernel was so stable that Microsoft gave up all their efforts in Windows as we know it, rewrote it in Rust, and Windows became just another distro in the Linux ecosystem. Other projects and companies soon followed the trend - if you install any Linux distro nowadays it won't come with grep, du or cat - there is only ripgrep, dust and bat. Do you use a graphical interface? Good luck using deprecated projects such as Wayland, Gnome or KDE - wayland-rs, Rsome and RDE is where it's all at. The only serious browser available is Servo and it holds 98% of the market share. Every new game released to the market, including those made by AAA developers, is using the most stable, fast and user-friendly game engine - Bevy v4.20. People love their system and how stable, safe and incredibly fast it is. Proprietary software is basically non-existent at this point. By the year 2035 every single printer, laptop, industrial robot, rocket, autonomous car, submarine, sex toy is powered by software written in Rust. And they never crash or fail. The world is so prosperous and stable that we have finally achieved world peace.
Ferris looks down at what he has created once more and smiles, as he always did. He says nothing as he is just a crab and a mascot, but you can tell from his eyes... That he is truly proud of his community.
Во-первых никому это не нужно. Тот же гугл уже написал свое ядро в Fuchsia, понятное дело под удобной им лицензией. Им просто нужно временно перекантоваться и подготовить новых макак для своей новой оси. Поддерживать же свои патчи в ядро влом.Во-вторых это нереально успеть сделать за столь короткий срок.
> Недалёкое будущее:Ну вот, а потом говорят, не наркоманы.
PS: прям европенсиями повеяло.
> Недалёкое будущее:Не, в _недалёком_ (бишь к концу года 2022) уже научился практически безошибочно угадывать тусовочку происхождения вот по таким реляциям:
starship - The minimal, blazing-fast, and infinitely customizable prompt for any shell [52M]
> It is year 2028 and Linux has been completely rewritten in Rust.
раст и прочее хайповство это не про удобство и безопасность кода, это про другое. Современное быдло такое наивное, такое доверчевое.
Хайпоство вокруг Раста возникнуло исключительно из-за его положительных качеств. Не зря он любимейший язык всея stackoverflow.
Ну и отрицательных у древних языков.
Только на опеннете быдланы могут быть против всего нового, любых положительных изменений.
> Не зря он любимейший язык всея stackoverflow.Если бы даже это было правдой, то это отнюдь не показатель положительных качеств.
Это правда: https://insights.stackoverflow.com/survey/2020#technology-mo...Использование реальными разработчиками, а не флудерами на опеннете - не показатель? Ну ок.
> Использование реальными разработчикамикопипастерами, деточка.
каких положительных качеств? безопасностью? если человек не может совладать с корретным освобождением памяти и перекладывает такие вещи на машину, то это не программист а покемон, современное быдло.
Знаешь, это как современные киноделы хаят камеры без матричной стабилизации и автофокуса ) хотя в киноиндустрии специалисты используют камеры без автофокуса и стабилизации матрицы, т.к. еще давным давно умные люди уже 100500 раз споткнулись и пришли к выводу что для кино нужны конкретные возможности камеры. а хаят потому что любители, создают не продукт а просто поливают камеров на лево и направа, создают быдлоконтент для тик тока.
В языке программирования тоже самое, давно уже умные и образованные люди создали Си и С++ как инструмент гибкий, мощьный. Да порог входа чуть выше но не критично, да нужно чуть повниматеьней за своими переменными но тож не критично, программист получает гибкость во всем, от микрокода на си до абстракных конструкций на с++. Хайповый программист как тотт любителель с видеокамерой
> каких положительных качеств? безопасностью? если человек не может совладать с корретным
> освобождением памяти и перекладывает такие вещи на машину, то это
> не программист а покемон, современное быдло.Чувак, что ты здесь делаешь? Иди use after free, buffer overrun и прочее ищи. Нет в своём коде, так в библиотеках найдутся.
ну если ты импортируешь в свой проект так же как и в свой рот кладешь что попало из магазина, то да, можно обдристаться.
Если пользуешся проверенными библиотеками и используешь стабильные верси, то в чем проблема? а то так и модули ядра линукса лучше не использовать вообще получается, как и все либы и прочее. так что не нужно городить тут умника.
А уже съехал на "Баг нашли? Так исправили-же". Ну, ОК,
> если человек не может совладать с корретным освобождением памятиПри чем тут "не может"?
Я, например, могу, но... зачем? Я могу сам ходить в продуктовые магазины, а не вызывать доставку. Но опять же, зачем? Комфорт решает. А глупые ошибки на миллионы $, которые бывают и у high rockstar, никто не отменял.Всё остальное звучит как брюзжание и нежелание или переучиваться, или терять работу :)
А в Расте безопасность - не самое главное. Много других фишек, которых не хватает в C++ и которых там никогда не будет (о C даже не говорю)
лучше бы в магазин пешком ходил, бегал бы по утрам в парке а не на беговой дорожке в спальне(если вообще свою задницу от монитора отрываешь), а то ожиреишь, заплывешь, станешь куском свинины. нужно жить а не существовать. нужен комфорт? используйте анализатор кода и будет вам счасте если глупости часто совершаете. а хаить из-за своей несостоятельности язык и кричять что вот новый язык раст - теперь заживем. Это откровеннно для зеленой массы )
в бэйсике тоже найдуться фишки которые отсутствуют в С++.
понимаешь, указатели в си/c++ (хайповщики же вокруг этого решили поиграть), так вот, указатели они для одних источник бесконечных проблем, а для других, источник бесконечных возможностей.
Знаешь анекдот про попугая?
попугай сидит в самолете первого класса и над стюардессой стебется, а та ему и морожено и соки таскает.
мужик рядом смотрит, тоже решил постебаться, ну и их обоих вкинули из самолета. Мужик в низ полетел а попугай крылья расправил и говорит, ну что мужик допи..лся )).
Так вот мораль сей басни такова. если ты баран то не осуждай птиц.
Ты думаешь, что в Расте нет указателей?)
Вопрос не в том есть или нет, вопрос в том как раст и пообные новомодные языки пиарятся, называя недостатком возможность использовать указатели и самостоятельно контролировать выделеную память.
Через слэш нужно писать не с/с++, а с/meson.
> Только на опеннете быдланы могут быть против всего нового, любых положительных изменений.Да вот что-то код типа let data = Pin::from(Box::try_new(unsafe { Mutex::new(0) })?); положительным изменением ну вот не выглядит. Наркоманщиной? Куском бреда? Крокозябрами? Техническим cruft? Сколько угодно. Но улучшение? NO WAY!
И может быть я тупой но не понимаю зачем было столько наворотов, если в результате unsafe сделали. Всю ночь гребли, а лодку отвязать забыли.
Во-первых, там ничего сложного. Во-вторых, в реальных проектах такой код встречаться если и будет, то редко. В-третьих, в любом языке есть такие примеры "сложного" кода.unsafe сделали, поскольку не безопасность в Расте главное, а остальные возможности, которых нет и не будет в C. И плюс летать-таки иногда надо, как заметил товарисч выше.
> unsafe сделали, поскольку не безопасность в Расте главное,
> а остальные возможности, которых нет и не будет в C.Списка мы, разумеется, не дождёмся. Равно как и понимания, _что_ ляпнул.
> Не зря он любимейший язык всея stackoverflow.«То, о чем Бандар-лог думает теперь, джунгли подумают позже» (ц)
Линус ещё не о_main_илася и уверенно держит свой палец вверх!> Кроме того Торвальдс отметил, что предоставленный пример драйвера - бесполезный и посоветовал приложить в качестве примера какой-нибудь драйвер, решающий одну из реальных задач.
Не в бровь а в глаз! Проблема каждого 1-ого поделия на раст!
> Rust признан официально поддерживаемым языком для разработки Android.
Это как теперь для разработки на ведроиде не нужно знать и использовать жабу, а достаточно знать и использовать ТОЛЬКО раст?
Или это очередной марктинговый звиздёж гугла?
>Или это очередной марктинговый звиздёж гугла?Это про кишки андройда, для приложений всё так же котлин
Эта RFC серия прошла довольно успешно, успешнее многих других. Сообщество получило в целом поддержку всех основных мантейнеров, включая Торвальдса. Критика понятная, полезная и конструктивная, и она не обозначила фундаментальных непреодолимых проблем. "Реальные драйвера" гугл пишет (и напишет) для андроида.Судя по этим внешним признакам, и если настрой самого сообщества не ослабеет, то язык будет доступен для модулей ядра - это вопрос времени. А затем может быть на нем начнут медленно переписывать другие security-critical вещи, например KVM. Во всяком случае его мантейнеры уже активно учавствуют в rust-vmm (https://github.com/rust-vmm/, включая ведущего https://github.com/rust-vmm/vm-memory/commits?author=bonzini), а ведущий мантейнер qemu пишет блоги про то, что весь новый код виртуализации нужно писать на расте (http://blog.vmsplice.net/2020/08/why-qemu-should-move-from-c...)
И при этом я не люблю раст.
¯\_(ツ)_/¯
> И при этом я не люблю раст.Мне С++/D слихвой хватает.