1.83K subscribers
3.24K photos
127 videos
15 files
3.52K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Forwarded from Идеи неинтересных фильмов
Железный человек сражается со злейшим врагом - ржавчиной.
#prog #rust #article

Очередной наброс на тему Rust. Как всегда, всё самое интересное — в комментариях.

habr.com/ru/post/504622/
#prog #go #menacingopensource

Для Go есть пакет filter. Это реализация некоторых FP-like примитивов, написанных самим Робом Пайком. Как он сам пишет в README:

"I wanted to see how hard it was to implement this sort of thing in Go, with as nice an API as I could manage. It wasn't hard.

Having written it a couple of years ago, I haven't had occasion to use it once. Instead, I just use "for" loops.

You shouldn't use it either."

Внутри есть всё то, что мы так любим в Go: interface{}, рефлексия, отсутствие ленивости, захардкоженность слайсов. Но, конечно, вишенка на торте — это единственный PR, который так и не был смержен, и реакция Пайка на него.

github.com/robpike/filter
#prog #article

Csmith — программа для генерации случайных программ на C. Отличается от остальных подобных программ тем, что сгенерированные программы не содержат неопределённого поведения. Использование Csmith позволило обнаружить несколько сотен багов в GCC и LLVM. О структуре Smith и о достигнутых с её помощью результатов подробно изложено в статье — к сожалению, довольно старой, от 2011 года.

Несколько интересных подробностей:
1) Из всех протестированных компиляторов CompCert был единственным, в котором не было багов мидл-енда, приводящих к неправильной компиляции кода. Формальная верификация работает!
2) Абзац про тестирование коммерческих компиляторов настолько хорош, что я процитирую его целиком:
"Experience with commercial compilers
There exist many more commercial C compilers than we could easily test. The ones we chose to study are fairly popular and were produced by what we believe are some of the strongest C compiler development teams. Csmith found wrong-code errors and crash errors in each of these tools within a few hours of testing.
Because we are not paying customers, and because our findings represent potential bad publicity, we did not receive a warm response from any commercial compiler vendor. Thus, for the most part, we simply tested these compilers until we found a few crash errors and a few wrong-code errors, reported them, and moved on."

Csmith на GitHub
#prog #article

Для облегчения симптомов синдрома самозванца: "Я выпустил текстовый процессор, форматировавший жёсткий диск после каждого 1024-го сохранения".

Оригинал (в виде треда в твиттере, так что читать не очень удобно)
Перевод на Хабре
#prog #rust #rustlib

Иногда бывает полезным не использовать порядок, определённый на типе при помощи Ord, а использовать порядок, заданный некой внешней сущностью. Крейт comparator даёт интерфейс Comparator<T> с методом compare(&self , &T, &T) -> Ordering. Само по себе это не очень интересно, но на базе этой абстракции можно построить уже непосредственно полезные сущности. В частности — то, что предоставляет сам крейт, бинарную кучу с порядком на элементах, заданных компаратором.

Как известно, куча из std Rust является максимальной кучей, т. е. на вершине лежит максимальный элемент. Для того, чтобы сделать минимальную кучу, приходится оборачивать элементы в std::cmp::Reverse. Это не только не очень удобно, но и лишает возможности за константное время превратить кучу в вектор. В случае с кучей из comparator такой проблемы не возникает, потому что можно легко сделать кучу с обратным порядком:

use comparator::reverse_order;
use comparator::collections::BinaryHeap;

let mut heap = BinaryHeap::with_comparator(reverse_order());

К сожалению, это, в сущности, всё, что есть в comparator, а последнее обновление было год назад. С другой стороны, даже в текущем виде крейт полезен, поэтому я и решил о нём рассказать.

comparator на crates.io
Документация
Forwarded from rusta::mann
Сегодня написал на автомате make_unique::<Name>() на C++, и долго не мог понять почему компилятор кричит что-то про неймспейсы на турборыбу.
#prog #quotes (заново, потому что без контекста хуже понятно)
Forwarded from xor eax, eax
Как раст ходит по типам в данном случае?


trait SomeType {}

struct Test<T: ?Sized>(core::marker::PhantomData<T>);

impl<T: ?Sized + SomeType> Test<T> {
const FOO: bool = true;
}

trait Fallback {
const FOO: bool = false;
}

impl<T: ?Sized> Fallback for T {}

Test::<$ty>::FOO
Forwarded from вафля 🧇🍓
раст ходит так: топ топ топ (извините)
#prog #rust #rustreleasenotes #politota

Выпущена новая версия Rust: 1.44.0! Изменений не так много, самое значимое — asycn/await более не требует thread-local storage и потому может быть использован в #[no_std]. К сожалению, ввиду недавних событий в США, а также мнения Rust core team, что "tech is and always will be political", внятного описания новых фич в блогопосте нет, так что лучше сразу раздел в RELEASES.md открыть.

Блогопост
Подробные заметки о релизе
Forwarded from Matwey Kornilov
cython не нужен
Forwarded from Dr. Friedrich von Never
А мне название нравится. Сразу видно, что преимущества сразу двух языков.
Forwarded from Dr. Friedrich von Never
Быстрый как python, безопасный как C. Ага?