Блог*
رفتن به کانال در Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
نمایش بیشتر1 927
مشترکین
+124 ساعت
+17 روز
-530 روز
آرشیو پست ها
1 928
Repost from Офигительные идеи🦄
А пооомните несколько лет назад ходило фото платья которые одни видели чёрно-синим, другие - жёлто-белым и в упор не понимали, как можно иначе?
Так вот. Я наткнулся на рисунок, который позволяет это ПОНЯТЬ, УВИДЕТЬ. ААААААААААА.
1 928
#prog #rust #article
Semantic fuzzing of the Rust compiler and interpreter
Авторы сделали Rustlantis — фаззер, который генерирует программы на уровне MIR. Так как вывод программы предсказать заранее трудно, авторы применили подход differential testing: именно, они использовали несколько интерпретаторов и находили те программы, на которых они расходятся. Разумеется, подобный подход не имеет смысла для кода с UB, поэтому авторы специально написали генератор таким образом, чтобы избежать генерации UB.
В качестве верификаторов авторы использовали miri, компиляцию с помощью LLVM (с и без оптимизациями на уровне MIR) и Cranelift. Не смотря на крайне узкий охват пространства возможных программ, за 4,5 CPU-лет авторам удалось найти 13 новых багов.
┌─────────┬──────────────┬─────┐
│ │Miscompilation│Crash│
├─────────┼──────────────┼─────┤
│rustc │ 3 │ 2 │
├─────────┼──────────────┼─────┤
│LLVM │ 6 │ 2 │
├─────────┼──────────────┼─────┤
│cranelift│ 0 │ 0 │
└─────────┴──────────────┴─────┘
*
Как видите, авторам не удалось найти баги, связанные с Cranelift, даже не смотря на то, что авторы ожидали противоположного. Авторы называют несколько возможных причин: cranelift намеренно не реализует много оптимизаций и он уже постоянно фаззится (аллокатор регистров — ещё и через symbolic execution).
*
Проектом заинтересовалась Rust foundation, так что есть шанс, что Rustlantis будет жить и развиваться дальше, а не помрёт, как очередная академическая штуковина.
*
Один из выявленных фаззером багов был спровоцирован, судя по фиксу, тем, что для одного из типов данных сравнение выполнялось неправильно: для него не была определена операция сравнения, но был определён неявный оператор каста в другой тип, для которого операция сравнения была, из-за чего сравнение начального типа учитывало лишь часть существенной информации.1 928
Why are you all making restful services instead of, dunno, hard-working services or at least active ones?
1 928
#prog #rust хайлайты:
▪️Добавили линт на биндинги типа
(). Линт не срабатывает, если () есть явно с одной или иной стороны или тип явно записан, как (), также не работает на коде из макросов.
▪️Стабилизировали ptr::addr_eq, которая сравнивает указатели по адресам без учёта метаданных.
▪️На NonNull добавили методов с обычных указателей.
▪️Парсер теперь обрабатывает слайсинг с синтаксисом Python и предлагает использовать эквивалентный нативный синтаксис.
▪️К реализациям арифметических операций добавили #[track_caller].
▪️Серьёзность IMPLIED_BOUNDS_ENTAILMENT подняли с обычного линта до фатальной ошибки компиляции. Этот линт указывает на ситуации, когда реализация трейта из-за implied bounds (таких, как 'b: 'a в &'a &'b T) является более ограничительной, чем декларация трейта.
▪️LinkedList добавили retain{, _mut}
▪️Стабилизировали {Rc, Arc}::unwrap_or_clone. Эти функции достают значение из счётчика ссылок при помощи клонирования, но избегают этого, если значение единственно.
▪️Реализация Vec::dedup_by теперь делает два прохода по вектору и начинает второй проход только в том случае, если элементы действительно нужно удалять. Это позволяет делать меньше работы для векторов уникальных значений, а также немного ускоряет все остальные случаи за счёт того, что теперь при перемещении элементов вместо ptr::copy используется ptr::copy_nonoverlapping.1 928
Repost from I’m CEO, beach
Команда, скоро день зарплаты. Для меня это очень грустный день. Мне жаль снова осознавать, что вы работаете ради какой-то еды и одежды, а не ради нашей крутой идеи. Ну и денег тоже жалко.
1 928
Метаироничненько
https://fxtwitter.com/depthsofwiki/status/1735800801455419697
(thanks @teamerlin)
1 928
Repost from Segment@tion fault
- приглашаем вас к нам на работу, у нас отличный коллектив, интересные проекты, каждому выдаём макбук
- надбавка будет?
- за что?
- за работу на макбуке
1 928
Repost from 💞Gay Mems🔥 | Гей мемы 💪
Анекдот дня: Всероссийский научно-исследовательский геологический институт (ВСЕГЕИ) изменил логотип на сайте. Аббревиатура ВСЕГЕИ пропала, вместо неё появилась надпись «Институт Карпинского».
В Твиттере предполагают, что всё из-за нового закона о запрете ЛГБТ-движения. ВСЕГЕИ всё, Сергеям приготовиться!
1 928
#prog #amazingopensource
wuffs (Wrangling Untrusted File Formats Safely) — язык (и компилятор) для написания программ обработки данных, который компилируется в C. Язык намеренно весьма ограниченный — в частности, в нём отсутствует IO и способы динамически управлять памятью, да и в принципе доступ к сисколам. Язык также memory safe: компилятор отказывается компилировать программу, в которой индексы выходят за границу массива (а также если в ней где-то есть переполнение).
Несмотря на ограниченность языка и намеренно простые проверки диапазонов переменных, на практике он с успехом подходит для написания (де)кодировщиков медиаформатов — реализации на wuffs по производительности обгоняют существующие реализации на C и Rust.
(thanks @experimentalchill за привлечение внимания к этой вещи — взято из поста про ошибки реализации в CRC32 в Linux)
1 928
#rust #article
Adopting Rust: the missing playbook for managers and CTOs
Взгляд на привнесение Rust в разработку с точки зрения руководящих должностей.
1 928
#prog #rust #rustasync #article
Common Mistakes with Rust Async
Common mistake №0: using async Rust
Ну а если серьёзно — неплохая подборка неочевидных ошибок при использовании async. Правда, если вы читали Блог*, как минимум часть из них вам наверняка будет уже знакома.
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
