#prog #article
Зло живёт в функциях сравнения
В статье примеры на C++ и C#, но указанные ошибки, кмк, легко допустить в любом языке, который не позволяет синтезировать функции сравнения и равенства.
Зло живёт в функциях сравнения
Оказывается, программисты тяготеют к тому, чтобы допустить ошибку в функциях сравнения двух объектов. Такое утверждение выглядит неправдоподобным, однако, я покажу огромное количество примеров ошибок, которые шокируют читателя
В статье примеры на C++ и C#, но указанные ошибки, кмк, легко допустить в любом языке, который не позволяет синтезировать функции сравнения и равенства.
💯7🤔2❤1
Блог*
А вот теперь есть
Я думал, что мы — бомжи-убийцы. Теперь я вижу, что ошибался. Мы — просто бомжи
😁6😐4
#prog #rust #rustlib #article
Introducing facet: Reflection for Rust
Как сказано в facet.rs:
Сердце библиотеки — трейт Facet и derive-макрос для него. В отличие от других крейтов, которые ползают по определениям типов, facet генерирует не код обхода значений, а константы, которые описывают формы значений и потому могут быть утилизированы разными библиотеками разными способами. Из примеров: (де)сериализация, отладочная печать, ассерты с диффами (которые не полагаются на пост-обработку Debug-выхлопа). В силу того, что код не генерируется, эти реализации могут использовать нерекурсивные алгоритмы и таким образом избежать переполнение стека и легко регулировать глубину вложенности.
В статье рассказывается, зачем это создано и какие ещё преимущества даёт.
Introducing facet: Reflection for Rust
Как сказано в facet.rs:
the last proc macro / the last derive you’ll ever need
Сердце библиотеки — трейт Facet и derive-макрос для него. В отличие от других крейтов, которые ползают по определениям типов, facet генерирует не код обхода значений, а константы, которые описывают формы значений и потому могут быть утилизированы разными библиотеками разными способами. Из примеров: (де)сериализация, отладочная печать, ассерты с диффами (которые не полагаются на пост-обработку Debug-выхлопа). В силу того, что код не генерируется, эти реализации могут использовать нерекурсивные алгоритмы и таким образом избежать переполнение стека и легко регулировать глубину вложенности.
В статье рассказывается, зачем это создано и какие ещё преимущества даёт.
fasterthanli.me
Introducing facet: Reflection for Rust
I have long been at war against Rust compile times.
Part of the solution for me was to buy my way into Apple Silicon dreamland, where builds are, like… faster. I remember every time I SSH into an x...
Part of the solution for me was to buy my way into Apple Silicon dreamland, where builds are, like… faster. I remember every time I SSH into an x...
👍12❤5🔥2🤡1
Forwarded from Хреногубка
Госуслуги прислали мне письмо на почту, в котором рассказали про ОТЕЧЕСТВЕННЫЙ АНАЛОГ википедии. Называется «рувики». Решил глянуть, что там про ЛГБТ написано...
Разумеется, нас сразу же встречает инфа про экстремистскую организацию и заблюренный радужный флаг 🫠
Разумеется, нас сразу же встречает инфа про экстремистскую организацию и заблюренный радужный флаг 🫠
🤡26🤣13👍4😁4🥰1
#rust #article #suckassstory
parking_lot: ffffffffffffffff...
История разбора противного бага, который в конечном счёте свёлся к логической ошибке в parking_lot. Напоминание о том, что Rust позволяет удостовериться в том, что примитивы синхронизации корректно используются, но не особо помогают с реализацией этих примитивов.
Из хороших новостей: этот баг в parking_lot в итоге пофиксили, а разработчики в процессе фикса бага построили инфраструктуру для сбора метрик об исполнении кода.
parking_lot: ffffffffffffffff...
История разбора противного бага, который в конечном счёте свёлся к логической ошибке в parking_lot. Напоминание о том, что Rust позволяет удостовериться в том, что примитивы синхронизации корректно используются, но не особо помогают с реализацией этих примитивов.
Из хороших новостей: этот баг в parking_lot в итоге пофиксили, а разработчики в процессе фикса бага построили инфраструктуру для сбора метрик об исполнении кода.
Fly
parking_lot: ffffffffffffffff...
Gnarliest Rust proxy bug yet.
❤6