1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #amazingopensource

wuffs (Wrangling Untrusted File Formats Safely) — язык (и компилятор) для написания программ обработки данных, который компилируется в C. Язык намеренно весьма ограниченный — в частности, в нём отсутствует IO и способы динамически управлять памятью, да и в принципе доступ к сисколам. Язык также memory safe: компилятор отказывается компилировать программу, в которой индексы выходят за границу массива (а также если в ней где-то есть переполнение).

Несмотря на ограниченность языка и намеренно простые проверки диапазонов переменных, на практике он с успехом подходит для написания (де)кодировщиков медиаформатов — реализации на wuffs по производительности обгоняют существующие реализации на C и Rust.

(thanks @experimentalchill за привлечение внимания к этой вещи — взято из поста про ошибки реализации в CRC32 в Linux)
👍8❤‍🔥2
#meme про... женщин
💯16
Анекдот дня: Всероссийский научно-исследовательский геологический институт (ВСЕГЕИ) изменил логотип на сайте. Аббревиатура ВСЕГЕИ пропала, вместо неё появилась надпись «Институт Карпинского».

В Твиттере предполагают, что всё из-за нового закона о запрете ЛГБТ-движения. ВСЕГЕИ всё, Сергеям приготовиться!
😁20👍1
Forwarded from Segment@tion fault
- приглашаем вас к нам на работу, у нас отличный коллектив, интересные проекты, каждому выдаём макбук
- надбавка будет?
- за что?
- за работу на макбуке
👍29💩9❤‍🔥3🤡3👎2🌚2💯2
Forwarded from I’m CEO, beach
Команда, скоро день зарплаты. Для меня это очень грустный день. Мне жаль снова осознавать, что вы работаете ради какой-то еды и одежды, а не ради нашей крутой идеи. Ну и денег тоже жалко.
🌚13💯1
69
🍌28👎9😱42🥰1🤮1😍1
Forwarded from Neural Machine
Прошлое прошло
👍1
Блог*
69
Так, я этот пост вообще случайно отправил, почему на обычном числе столько реакций?
🤡30👎2🤔2
О, и в Армении снег пошёл
🤯64
#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.
🎉5
😁16🤡3
Why are you all making restful services instead of, dunno, hard-working services or at least active ones?
👍13
#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 будет жить и развиваться дальше, а не помрёт, как очередная академическая штуковина.

*

Один из выявленных фаззером багов был спровоцирован, судя по фиксу, тем, что для одного из типов данных сравнение выполнялось неправильно: для него не была определена операция сравнения, но был определён неявный оператор каста в другой тип, для которого операция сравнения была, из-за чего сравнение начального типа учитывало лишь часть существенной информации.
🔥14
А пооомните несколько лет назад ходило фото платья которые одни видели чёрно-синим, другие - жёлто-белым и в упор не понимали, как можно иначе?

Так вот. Я наткнулся на рисунок, который позволяет это ПОНЯТЬ, УВИДЕТЬ. ААААААААААА.
🤯16👍3🤡21
🍌
🍌16🤡3