#безопастный_rust
Продолжаем цикл заметок про то, что Rust не является memory safe language.
Самое главное тут, конечно, договориться, что значит "memory safe". Почему это важно, я писал в https://www.tgoop.com/itpgchannel/1828
Часто слышу определение "в коде нет unsafe блоков".
В связи с этим я задаю два вопроса:
* https://blog.yossarian.net/2021/03/16/totally_safe_transmute-line-by-line - вот, очень даже safe код, исходя из этого определения.
* Является ли отношение "не содержит unsafe" транзитивным, потому что в stdlib есть unsafe.
Обычно после этого коллеги начинают рассказывать про soundness кода.
Что такое soundness?
По сути, это синоним "мамой клянусь". То есть, у нас нет формального доказательства того, что код ведет себя так, как надо, но автор кода сумел уболтать других людей, что это правда.
Поэтому вот вам самая мякотка - Rust является memory "мамой клянусь"-safe language.
Проблема в том, что и С, и С++ - это тоже "мамой клянусь"-safe language, а если там в коде ошибка - то этоskill issue "да вы просто не умеет в С".
Я даже готов согласиться, что в классе "мамой клянусь"-safe языков, Rust один из наиболее безопасных (в каком-то смысле), но на этом все.
Продолжаем цикл заметок про то, что Rust не является memory safe language.
Самое главное тут, конечно, договориться, что значит "memory safe". Почему это важно, я писал в https://www.tgoop.com/itpgchannel/1828
Часто слышу определение "в коде нет unsafe блоков".
В связи с этим я задаю два вопроса:
* https://blog.yossarian.net/2021/03/16/totally_safe_transmute-line-by-line - вот, очень даже safe код, исходя из этого определения.
* Является ли отношение "не содержит unsafe" транзитивным, потому что в stdlib есть unsafe.
Обычно после этого коллеги начинают рассказывать про soundness кода.
Что такое soundness?
По сути, это синоним "мамой клянусь". То есть, у нас нет формального доказательства того, что код ведет себя так, как надо, но автор кода сумел уболтать других людей, что это правда.
Поэтому вот вам самая мякотка - Rust является memory "мамой клянусь"-safe language.
Проблема в том, что и С, и С++ - это тоже "мамой клянусь"-safe language, а если там в коде ошибка - то это
Я даже готов согласиться, что в классе "мамой клянусь"-safe языков, Rust один из наиболее безопасных (в каком-то смысле), но на этом все.
Telegram
commit -m "better"
Про логические уловки.
Люди довольно часто, осознано, или нет, оставим это на их совести, пользуются логическими уловками.
3 моих любимых:
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D1%81%D1%83%D0%BF%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F
ht…
Люди довольно часто, осознано, или нет, оставим это на их совести, пользуются логическими уловками.
3 моих любимых:
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D1%81%D1%83%D0%BF%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F
ht…
😁28❤10🤡7👍5🔥4👎3🤔1🤮1👌1🐳1
Тем временем, у моей реализации #runsvdir https://www.tgoop.com/itpgchannel/1998 уже есть 4 open source альтернативы:
* оригинал из runit
* мой вариант на python
* вариант на Rust (https://github.com/maratik123/runsvdir)
* и мой же вариант на С++ (https://github.com/pg83/ix/blob/main/pkgs/bin/ix/runsvdir/cpp/m.cpp)
На приложенном скриншоте - все 4, на одной и той же конфигурации.
Хуже всех (по потреблению памяти) python, потом идет оригинальный из runit (меня это удивило, он, вроде как, на С), потом вариант на Rust, а пижже всех - мой, на С++.
Оптимизациями памяти я даже не занимался (посмотрите код, он максимально дубовый), можно лучше.
* оригинал из runit
* мой вариант на python
* вариант на Rust (https://github.com/maratik123/runsvdir)
* и мой же вариант на С++ (https://github.com/pg83/ix/blob/main/pkgs/bin/ix/runsvdir/cpp/m.cpp)
На приложенном скриншоте - все 4, на одной и той же конфигурации.
Хуже всех (по потреблению памяти) python, потом идет оригинальный из runit (меня это удивило, он, вроде как, на С), потом вариант на Rust, а пижже всех - мой, на С++.
Оптимизациями памяти я даже не занимался (посмотрите код, он максимально дубовый), можно лучше.
❤17👍6🔥4🤔3🤯2🤡1🆒1
Фига я снова в телевизоре!
Болты Генона я тоже читаю, хорошие каналы.
Болты Генона я тоже читаю, хорошие каналы.
👏9👍5❤3🔥1
Forwarded from Технологический Болт Генона
Тут @SergeySabbath, закинул мой канал в тройку своих самых любимых. Скрывать не буду, мне очень приятно.
https://www.tgoop.com/IT_Friday/646
А накидайте в комменты свои любимые каналы по IT-шной тематике или около неё. Можно несколько.
Может я и подписчики найдут что-то новое и интересное для себя
Если брать строго IT, то я регулярно слежу за
https://www.tgoop.com/SysadminNotes
https://www.tgoop.com/itpgchannel
https://www.tgoop.com/dereference_pointer_there
https://www.tgoop.com/sysadmin_tools
Есть большое количество ещё других, ни о ком не забыл и всех помню, но как-нибудь сделаю ещё отдельный пост 🌝
https://www.tgoop.com/IT_Friday/646
А накидайте в комменты свои любимые каналы по IT-шной тематике или около неё. Можно несколько.
Может я и подписчики найдут что-то новое и интересное для себя
Если брать строго IT, то я регулярно слежу за
https://www.tgoop.com/SysadminNotes
https://www.tgoop.com/itpgchannel
https://www.tgoop.com/dereference_pointer_there
https://www.tgoop.com/sysadmin_tools
Есть большое количество ещё других, ни о ком не забыл и всех помню, но как-нибудь сделаю ещё отдельный пост 🌝
Telegram
IT Friday
Топ 3 моих самых любимых канала:
🟢Технологический болт Генона
Самое интересное для инженерных инженеров от Толика, он же @rusdacent
Прям обожаю этот канал, самое актуальное из ИТ, уязвимости, кишочки, всякое необычное и полезняшки
🟢Ever Secure
Безопасная…
🟢Технологический болт Генона
Самое интересное для инженерных инженеров от Толика, он же @rusdacent
Прям обожаю этот канал, самое актуальное из ИТ, уязвимости, кишочки, всякое необычное и полезняшки
🟢Ever Secure
Безопасная…
🔥11❤6🌭3👍2🆒1
Технологический Болт Генона
Тут @SergeySabbath, закинул мой канал в тройку своих самых любимых. Скрывать не буду, мне очень приятно. https://www.tgoop.com/IT_Friday/646 А накидайте в комменты свои любимые каналы по IT-шной тематике или около неё. Можно несколько. Может я и подписчики найдут…
https://www.tgoop.com/tech_b0lt_Genona
https://www.tgoop.com/lobstersfeed
https://www.tgoop.com/theaftertimes
https://www.tgoop.com/hackernewslive
https://www.tgoop.com/gentoomemes
https://www.tgoop.com/programmer_memes
https://www.tgoop.com/achpochmac_yesterday
https://www.tgoop.com/open_source_friend
https://www.tgoop.com/dereference_pointer_there
https://www.tgoop.com/mem_b0lt_Genona
https://www.tgoop.com/psauxww
https://www.tgoop.com/ctobtch
https://www.tgoop.com/thisnotes
https://www.tgoop.com/digital_insights
https://www.tgoop.com/dotrubic
https://www.tgoop.com/j_random_cto
https://www.tgoop.com/gepardchan
https://www.tgoop.com/cpu_design
https://www.tgoop.com/reactos2021
https://www.tgoop.com/optozorax_dev
https://www.tgoop.com/whygnomesucks
https://www.tgoop.com/dlemire
https://www.tgoop.com/cxx95
https://www.tgoop.com/techmumble
https://www.tgoop.com/reverse13
мой список, in no particular order
https://www.tgoop.com/lobstersfeed
https://www.tgoop.com/theaftertimes
https://www.tgoop.com/hackernewslive
https://www.tgoop.com/gentoomemes
https://www.tgoop.com/programmer_memes
https://www.tgoop.com/achpochmac_yesterday
https://www.tgoop.com/open_source_friend
https://www.tgoop.com/dereference_pointer_there
https://www.tgoop.com/mem_b0lt_Genona
https://www.tgoop.com/psauxww
https://www.tgoop.com/ctobtch
https://www.tgoop.com/thisnotes
https://www.tgoop.com/digital_insights
https://www.tgoop.com/dotrubic
https://www.tgoop.com/j_random_cto
https://www.tgoop.com/gepardchan
https://www.tgoop.com/cpu_design
https://www.tgoop.com/reactos2021
https://www.tgoop.com/optozorax_dev
https://www.tgoop.com/whygnomesucks
https://www.tgoop.com/dlemire
https://www.tgoop.com/cxx95
https://www.tgoop.com/techmumble
https://www.tgoop.com/reverse13
мой список, in no particular order
Telegram
Технологический Болт Генона
До Декарта никогда не существовало рационализма.
Музыкальный Болт Генона: @mus_b0lt_Genona
Мемный Болт Генона: @mem_b0lt_Genona
Кадровый Болт Генона @kadr_b0lt_Genona
Обратная связь: @rusdacent
Музыкальный Болт Генона: @mus_b0lt_Genona
Мемный Болт Генона: @mem_b0lt_Genona
Кадровый Болт Генона @kadr_b0lt_Genona
Обратная связь: @rusdacent
👍12❤🔥6🔥3😁2❤1
#Kent Предложка:
"Свежую драму от Кента подвезли. Читаешь, думаешь, блин, несправедливо человека банят: https://www.patreon.com/posts/trouble-in-116412665
потом открываешь лор, а там: https://lore.kernel.org/all/citv2v6f33hoidq75xd2spaqxf7nl5wbmmzma4wgmrwpoqidhj@k453tmq7vdrk/"
https://www.phoronix.com/news/Bcachefs-Uncertain-Kernel-Issue
https://www.opennet.ru/opennews/art.shtml?num=62276
"Свежую драму от Кента подвезли. Читаешь, думаешь, блин, несправедливо человека банят: https://www.patreon.com/posts/trouble-in-116412665
потом открываешь лор, а там: https://lore.kernel.org/all/citv2v6f33hoidq75xd2spaqxf7nl5wbmmzma4wgmrwpoqidhj@k453tmq7vdrk/"
https://www.phoronix.com/news/Bcachefs-Uncertain-Kernel-Issue
https://www.opennet.ru/opennews/art.shtml?num=62276
Patreon
Trouble in the kernel | Kent Overstreet
Get more from Kent Overstreet on Patreon
😁12🔥5👍3🐳2❤1
commit -m "better"
#sched_ext Какие-то демонстрационные шедулеры у меня получилось заставить работать (но и результат, ожидаемо, никакой), а вот что-то серьезное уже не работает: https://github.com/sched-ext/scx/issues/823 Товарищи захотели перехватить static функцию из ядра…
Вышло ядро 6.12, https://www.opennet.ru/opennews/art.shtml?num=62243, и, наконец-то, у меня получилось завести #sched_ext.
Завести в том смысле, что оно запустилось, и я убедился, что оно таки принимает решения по шедулингу.
Но тот эффект, который обещали авторы, воспроизвести пока не получилось.
Когда я запускаю компиляцию во все потоки, scx выходит через какое-то время, с ошибкой:
https://gist.github.com/pg83/602ee9f04e80d36d8651fec0e0af13d6
Начало положено, и, наверное, у меня скоро перестанет тормозить браузер (https://www.tgoop.com/itpgchannel/139)!
Ну и, конечно, очень приятно, что это не kernel panic, а вполне себе падение user space приложухи, которую можно перезапустить.
Завести в том смысле, что оно запустилось, и я убедился, что оно таки принимает решения по шедулингу.
Но тот эффект, который обещали авторы, воспроизвести пока не получилось.
Когда я запускаю компиляцию во все потоки, scx выходит через какое-то время, с ошибкой:
https://gist.github.com/pg83/602ee9f04e80d36d8651fec0e0af13d6
Начало положено, и, наверное, у меня скоро перестанет тормозить браузер (https://www.tgoop.com/itpgchannel/139)!
Ну и, конечно, очень приятно, что это не kernel panic, а вполне себе падение user space приложухи, которую можно перезапустить.
www.opennet.ru
Релиз ядра Linux 6.12 с поддержкой Realtime-режима
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 6.12. Среди наиболее заметных изменений: возможность включения Realtime-режима, sched_ext для создания планировщиков CPU через eBPF, вывод QR-кода при аварийных состояниях, механизм…
🔥15😁6❤3👍1
commit -m "better"
попробую пожить с корнем на ней.
Эксперимент с #F2FS считаю завершенным, она за пару лет развалилась на всех 4 устройствах (ноут и 3 сервера), где я ее использовал на root разделе.
😁36🐳4👍3🆒1
Forwarded from Valuable AI
маразм, конечно, крепчал; для меня все началось, когда NIPS заставили переименовать в NeurIPS из-за того, что это совпадает с жаргонным наименованием сосков (nipples -> nips); указания лингвистов на то, что слово nips в этом значении появилось позже, чем конференция, не помогло; жду, когда переименуют абсолютно черное тело (да-да, физики, придут и за вами)
P.S. картинку стащил из рабочего чата, источник не знаю
P.S. картинку стащил из рабочего чата, источник не знаю
😁30🤡10💩5🐳4😢2🔥1
Forwarded from Ряды Фурье
В 2019 году вышло исследование про супердолгожителей. Тех дедушек и бабушек, которые умудрились прожить больше 100 лет. Ну, знаете, горный воздух, свежие овощи, минимум быстрых углеводов, крепкая семья, верные друзья, спокойные отношения, прогулки каждый день, низкое атмосферное давление, вот это всё — прям идеальная картина.
Это давно знали по предыдущим исследованиям. Проблемы начались чуть позже, когда на данные взглянули математики.
Они овощами не впечатлились ни разу.
Первое, что их удивило — что всего один фактор на 69-82% снизил количество супердолгожителей. Это наличие свидетельства о рождении. Когда их начали выдавать, видимо, это резко сократило шансы дожить до 100 лет. Опасные бумажки, однако.
Второй интересный момент — как так получилось, что супердолгожители сосредоточены в самых неблагоприятных районах по криминальной обстановке и вообще уровню жизни? Бедность была очень хорошим предиктором супердолгожительства.
Несколько лет ковырялись с тем, что надо бухать и курить каждый день, пореже мыться — и изучением наследственности разных маргиналов.
А потом случилось страшное:
В общем, если в ауле есть дедушка, который получает пенсию, и такой актив внезапно амортизируется, то проще не показывать его почтальону, и продолжать получать за него пенсию уже родственникам. Видимо, сложности возникают только тогда, когда почтенного старца надо предъявить на юбилей для местного телеканала.
Ну и это касается даже Японии:
Исследование вот.
Секрет долгожительства во многих случаях — систематическая подделка документов!
Это давно знали по предыдущим исследованиям. Проблемы начались чуть позже, когда на данные взглянули математики.
Они овощами не впечатлились ни разу.
Первое, что их удивило — что всего один фактор на 69-82% снизил количество супердолгожителей. Это наличие свидетельства о рождении. Когда их начали выдавать, видимо, это резко сократило шансы дожить до 100 лет. Опасные бумажки, однако.
Второй интересный момент — как так получилось, что супердолгожители сосредоточены в самых неблагоприятных районах по криминальной обстановке и вообще уровню жизни? Бедность была очень хорошим предиктором супердолгожительства.
Несколько лет ковырялись с тем, что надо бухать и курить каждый день, пореже мыться — и изучением наследственности разных маргиналов.
Например, в выборках самых пожилых людей часто наблюдаются уровни курения 17-50% [6] и уровни неграмотности 50-80% [5,6]. При обследовании "голубой зоны" Икарии Хрисохоу и др. отметили, что среди самых пожилых людей: более 95-98% случаев имеют заработную плату ниже медианной, умеренное или высокое потребление алкоголя (5,1-8,0 л/год), 10% неграмотных, в среднем 7,4 года образования и 99% курящих среди мужчин [3].
А потом случилось страшное:
Более недавние исследования выявили потенциальную роль ошибок [13-16] и операторских смещений [17] в создании моделей выживания в старческом возрасте и данных. В свою очередь, эти выводы вызвали реакцию с потенциально разрушительными последствиями: что при таких моделях большинство, если не все рекорды удивительного возраста могут быть ошибками [18].
Итальянцы старше 100 лет сосредоточены в беднейших, наиболее отдаленных провинциях с самой короткой продолжительностью жизни, в то время как американские супердолгожители сосредоточены в популяциях с неполными регистрами рождений и смертей. Обе эти закономерности трудно объяснить биологически, но они легко объясняются экономическими факторами, способствующими пенсионному мошенничеству и ошибкам в отчетности.
В общем, если в ауле есть дедушка, который получает пенсию, и такой актив внезапно амортизируется, то проще не показывать его почтальону, и продолжать получать за него пенсию уже родственникам. Видимо, сложности возникают только тогда, когда почтенного старца надо предъявить на юбилей для местного телеканала.
Ну и это касается даже Японии:
Высококачественные системы всеобщей регистрации часто содержат необнаруженные частые ошибки. Например, вопреки предыдущим утверждениям о том, что "Япония имеет... одни из самых качественных данных о самых пожилых людях" [24], расследование японских записей в 2010 году показало, что 238 000 столетних жителей на самом деле пропали без вести или умерли [25].
Исследование вот.
Секрет долгожительства во многих случаях — систематическая подделка документов!
🔥38😁19👌5🤡3❤2👍1💯1
commit -m "better"
Все ценные данные на вашем ноутбуке принадлежат вашему личному аккаунту. Кредитки, пароли, ключи доступа. root владеет лишь системными файлами и демонами.
https://wheybags.com/blog/privesc.html
Годный текст, созвучный моим мыслям на эту тему (https://www.tgoop.com/itpgchannel/229)
Годный текст, созвучный моим мыслям на эту тему (https://www.tgoop.com/itpgchannel/229)
Telegram
commit -m "better"
Обещал тут написать про модель безопасности. #seq_model #gold
Сразу оговорюсь, я пишу про модель безопасности личного ноутбука или настольного компьютера, рассуждения ниже неприменимы к серверам или даже к вашему телефону. Так же это неприменимо для всякого…
Сразу оговорюсь, я пишу про модель безопасности личного ноутбука или настольного компьютера, рассуждения ниже неприменимы к серверам или даже к вашему телефону. Так же это неприменимо для всякого…
👍5🤔3🆒2❤1👎1🔥1🥱1
commit -m "better"
#безопастный_rust Продолжаем цикл заметок про то, что Rust не является memory safe language. Самое главное тут, конечно, договориться, что значит "memory safe". Почему это важно, я писал в https://www.tgoop.com/itpgchannel/1828 Часто слышу определение "в коде нет…
https://www.opennet.ru/opennews/art.shtml?num=62286
https://foundation.rust-lang.org/news/rust-foundation-collaborates-with-aws-initiative-to-verify-rust-standard-libraries/
TL;DR - пока фанбои кричат, что "soundness достаточно", взрослые дяди занимаются формальной верификацией unsafe кода, потому что понимают, что memory "мамой клянусь"-safety - недостаточно!
А unsafe кода там прилично:
Currently, the Rust standard library contains approximately 35,000 functions, including 7,500 marked as unsafe.
https://foundation.rust-lang.org/news/rust-foundation-collaborates-with-aws-initiative-to-verify-rust-standard-libraries/
TL;DR - пока фанбои кричат, что "soundness достаточно", взрослые дяди занимаются формальной верификацией unsafe кода, потому что понимают, что memory "мамой клянусь"-safety - недостаточно!
А unsafe кода там прилично:
Currently, the Rust standard library contains approximately 35,000 functions, including 7,500 marked as unsafe.
www.opennet.ru
Инициатива по верификации стандартной библиотеки Rust
Компания Amazon и организация Rust Foundation представили инициативу, нацеленную на повышение безопасности стандартной библиотеки языка Rust. Целью заявлена проверка надёжности и безопасности функций, в которых используется ключевое слово "unsafe", допускающее…
😁15👍13🤪4❤3🆒2🤔1
Будни #bootstrap
В очередной раз переделал цепочку bootstrap.
Раньше, на самых ранних стадиях, у меня был сумасшедший скрипт, которые пытался найти подходящий компилятор и shell, а дальше все работало с этими компилятором и shell.
Маленькая проблема заключалась в том, что происходило это в runtime, и команда не зависела от окружения. То есть, могло что-то сломаться, человек менял компилятор или shell, и дальше все ломалось, потому что компилятор и shell были уже закешированы.
Выкинул этот скрипт, сделал так, что компилятор и shell система ищет на configure стадии, и дальше цепочка bootstrap уже зависит от того, что было найдено (или нет).
Финальный аккорд выглядит как-то так - https://github.com/pg83/ix/blob/main/pkgs/bld/boot/0/ind/ix.sh
На самом деле, изменений по всей пакетной базе было сделано очень много, но показывать их особого смысла нет.
Главное - цепочка стала гораздо более робастной, и устойчивой к изменениям окружения, которые могут случаться у пользователей, во время установки #stal/ix
В очередной раз переделал цепочку bootstrap.
Раньше, на самых ранних стадиях, у меня был сумасшедший скрипт, которые пытался найти подходящий компилятор и shell, а дальше все работало с этими компилятором и shell.
Маленькая проблема заключалась в том, что происходило это в runtime, и команда не зависела от окружения. То есть, могло что-то сломаться, человек менял компилятор или shell, и дальше все ломалось, потому что компилятор и shell были уже закешированы.
Выкинул этот скрипт, сделал так, что компилятор и shell система ищет на configure стадии, и дальше цепочка bootstrap уже зависит от того, что было найдено (или нет).
Финальный аккорд выглядит как-то так - https://github.com/pg83/ix/blob/main/pkgs/bld/boot/0/ind/ix.sh
На самом деле, изменений по всей пакетной базе было сделано очень много, но показывать их особого смысла нет.
Главное - цепочка стала гораздо более робастной, и устойчивой к изменениям окружения, которые могут случаться у пользователей, во время установки #stal/ix
GitHub
ix/pkgs/bld/boot/0/ind/ix.sh at main · pg83/ix
ix package manager. Contribute to pg83/ix development by creating an account on GitHub.
👍15❤6❤🔥3🆒2🔥1