1.81K subscribers
3.08K photos
121 videos
15 files
3.42K links
Блог со звёздочкой.

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

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

Хозяйке на заметку

Если вам нужно использовать множества в качестве ключа для ассоциативного массива, то BTreeSet из стандартной библиотеки реализует Hash (как и BTreeMap)
Блог*
#prog #rust #dotnet #article Rust panics under the hood, and implementing them in .NET Или немного о том, почему наивная трансляция раскрутки стека в исключения .NET в некоторых случаях вызывала замедление на порядок.
#prog #rust #article

Implementation of Rust panics in the standard library

Реализация паник складывается из двух вещей: генерируемой компилятором информации о действиях, которые необходимо сделать при раскрутке стека, и рантайм-поддержки. Эта статья рассказывает про второе — точнее, про ту часть, которая в std, а заодно рассказывает, почему это так много кода.
#prog #rust #article #suckassstory

The Case of the Missing Metrics: A Rust Closure Mystery

TL;DR: начиная с версии 1.56.0 (и, соответственно, edition 2021 и выше) замыкания могут захватывать только поля некоторой переменной, если в теле осуществляется только доступ к полю переменной. Как следствие, если поле является Copy-типом, то move-замыкание захватывает копию значения вместо значения, в котором лежит поле, целиком. Авторы статьи сделали RAII-обёртку над счётчиком метрик, который в дропе отсылал метрики, и из-за этого у них потерялись метрики. Ситуация была усугублена тем, что они использовали макрос для использования yield-синтаксиса, который при раскрытии использовал замыкания, поэтому проблема не была видна из исходника и cargo fix код не поменял для сохранения поведения по отношению к захватам.
#prog #rust #article

A Rust API Inspired by Python, Powered by Serde

Или как избежать написания своего процедурного макроса, забьюзив serde.

Статья ценна хотя бы примером нетривиального десериализатора для #serde — гайдов на эту тему мало.
#rust #meme про Linux
#prog #rust #article

Making the rav1d Video Decoder 1% Faster

В качестве реакции на конкурс по ускорению rav1d. Как оказалось, есть парочка довольно простых изменений, которые закрывают 30% разрыва по производительности.
#rust

По очевидным причинам не могу читать комментарии, так что не могу подтвердить, насколько правда.

Source
Немного #rust #meme из r/rustjerk

Source: 1, 2, 3, 4, 5, 6
#prog #rust хайлайты:

Implement ptr::try_cast_aligned and NonNull::try_cast_aligned.

Эти методы кастуют указатели в указанный методом тип и при этом возвращают None, если указатель не выровнен для целевого типа. Как мне кажется, полезная вещь для низкоуровневого кода.
#prog #rust #article

Старые (2016) статьи с говорящими названиями:

Counting Newlines Really Fast

Even quicker byte count

Примечательно, что оба варианта без явного SIMD, а в первой статье ещё и код полностью safe.
#rust #article #suckassstory

parking_lot: ffffffffffffffff...

История разбора противного бага, который в конечном счёте свёлся к логической ошибке в parking_lot. Напоминание о том, что Rust позволяет удостовериться в том, что примитивы синхронизации корректно используются, но не особо помогают с реализацией этих примитивов.

Из хороших новостей: этот баг в parking_lot в итоге пофиксили, а разработчики в процессе фикса бага построили инфраструктуру для сбора метрик об исполнении кода.