uk
Feedback
Блог*

Блог*

Відкрити в Telegram

Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here

Показати більше
1 924
Підписники
+224 години
-67 днів
-930 день
Архів дописів
0.1 + 0.2 =
Anonymous voting

#rust #meme

Неудобно писать release notes на телефоне, м-да

В общем и целом читайте блог и ченджлог, но я хочу подчеркнуть одно конкретное изменение: — Allow Self: Autotrait bounds on dyn-safe trait methods. В целом это всё и говорит, но всё же давайте по-подробнее. Автотрейты это трейты которые реализуются автоматически для структур у которых все поля реализуют данный трейт. Известными примерами автотрейтов являются Send и Sync. Одним из условий автотрейтов является то, что автотрейт не должен иметь никаких item'ов (ассоциированных функций, констант и типов), это должен быть просто маркер. Далее. dyn Trait это механизм стирания типов, пропуская подробности &dyn Trait хранит в себе кроме ссылки на данные (некоторый тип реализующий Trait) ещё и указатель на VTable — структуру с указателями на реализации функций трейта. Чтобы трейт годился для использования с dyn он должен исполнять некоторые требования (которые нужны для того, чтобы можно было создать VTable). Одно из требований — у функций не должно быть Self: SomeTrait ограничений*. Это требование вызвано тем, что такое ограничение не может быть выполнено в dyn варианте, нельзя написать dyn TraitA + TraitB. Невозможность комбинировать dyn трейты в свою очередь вызвана сложностью комбинирования VTable**. Так вот! Единственное исключение для запрещения dyn A + B — автотрейты, поскольку у них не может быть методов, они не изменяют VTable и соответственно их можно тривиально разрешить. Но это значит что и Self: AutoTrait имеет смысл для dyn как метод который можно вызвать на dyn Trait + AutoTrait. Этот PR и добавил эту возможность***. *кроме Self: Sized, которое просто выпиливает функцию из dyn. **но рано или поздно так тоже можно будет, надеюсь... (какая-то работа в этой сфере есть) ***конкретнее он разрешил Self: Auto для object-safe трейтов.

#prog #rust #rustreleasenotes Вышла версия Rust 1.69.0! Как всегда, расскажу только о том, что интересует меня, а об остальном читайте в ченджлоге. ▪️Создание невыровненных ссылок на поля packed-структур наконец-то является ошибкой компиляции, которую нельзя подавить линтом. ▪️Так как изменение выше сломало некоторый (очень) старый код, derive-макросы теперь имеют меньше ограничений при использовании на packed типах. ▪️В union теперь можно использовать типы, определённые через ассоциированные типы трейтов. Даже странно, что раньше было нельзя. ▪️Методы трейтов не могут быть вызваны на dyn-объектах, если у них есть ограничения на Self. В принципе, это логично, поскольку апкаст до трейт-объекта стирает тип, и определить в рантайме, реализовывал ли изначальный тип трейт, нельзя. С другой стороны, auto-трейты не имеют никаких методов и потому не добавляют новых записей в vtable. Начиная с этой версии Rust, на трейт-объектах можно вызывать методы трейтов с баундами вида where Self: AutoTrait. При этом вызывать можно будет только для трейт-объектов, у которых через + эти auto-трейты указаны. Иными словами, если trait Trait { fn foo(&self) where Self: Sync; } , то foo можно вызвать на dyn Trait + Sync, но нельзя на dyn Trait. ▪️До релиза докатился фикс бага компилятора (&*). ▪️Поиск в rustdoc теперь ищет лишь макросы, если запрос оканчивается на !. ▪️Стабилизировали CStr::from_bytes_until_nul, который сам ищет первый nul-байт в переданном слайсе (и возвращает ошибку, если их нету вовсе). ▪️Cargo теперь по умолчанию собирает build-зависимости без отладочной информации, если они потом не используются для сборки итогового бинаря как runtime-зависимости. Автор провёл замеры и показал, что это действительно ускоряет компиляцию.

photo content

#meme

Ну а если серьёзно — это позор, конечно, как я уже и говорил. Особенно "радует" пункт: > ◾️информации, направленной на формирование искаженного представления о социальной равноценности традиционных и нетрадиционных сексуальных отношений; То есть высказываться об ЛГБТ даже нейтрально де-юре будет противозаконно. Мрази, а 😒

#politota Роскомпозор утвердил список критериев пропаганды ЛГБТ. Что ж, ко мне они не применимы: если я, будучи бисексуалом, и создаю какой-то образ об ЛГБТ, то явно не положительный 🥴

photo content

Repost from RWPS::Mirror
photo content

Начинаем среду с полезной информации

Repost from Dani-myte 🧨
photo content

\/\/\/((.*)(?:[^\]][^:])|) [^\[`]\w+:: Love using regexes, they are very readable and easy to grasp ❤️

Строго говоря, это не тот самолёт, на котором я прилетел, но трап был такой же

__Ам__
__Ам__