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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Forwarded from Neural Machine
Мне так надоело быть милашкой, но мужчина должен это делать.
🫡114😐3👍1🥰1
Forwarded from Pragmatic Programmer (Nikita Bishōnen)
Друзья не перестают радовать меня и присылать очень позитивные мемы про Раст 🥲
😁347👎1🌚1
Forwarded from какография
Геймергейт би лайк
😁16🌚3
Forwarded from Не баг, а фича
This media is not supported in your browser
VIEW IN TELEGRAM
Суровые зимы никого не щадят: в Reddit вирусится видео с участием внедорожника Cybertruck, который ЗАБУКСОВАЛ в снегу.

Ситуация – сюр: в крупном городе Канады, Монреал, мимо проходящий чел записал на видео, как Cybertruck с тяжестью пытается осилить несколько сантиметров снега.

Комментаторы придумали тачке УГАРНЫЙ слоган: «Создано для любой планеты, если только на ней нет снега».

@bugfeature | #cybertruck
8😐2
В этот день лицемерия и шовинизма желаю всем своим папищекам-мужчинам категорию "Д" в военном билете
👍49🤡16🙏84❤‍🔥1👎1😁1
Channel photo updated
Три года назад Путин объявил войну Украине.

Война, которая унесла множество жизней.

Война, внятной причины которой не было ни тогда, ни сейчас.

Война, которая могла бы давно закончиться, если бы другие государства не тянули с военной помощью Украине и если бы не строили иллюзии насчёт того, что Путин является кем-то помимо поехавшего деда у власти.

Путин ведёт себя, как Гитлер, и в будущих учебниках истории встанет в один с ним ряд. С одной большой разницей: Путина осудят за преступления, ибо у него явно не хватит духа покончить с собой.

Украина была, есть и будет. А Путин просто сдохнет.
👍64🤡64🤣4433💩16😢7👎3🎉3😁2🤔1🌚1
Мусор сам себя выносит 😊
👍78🤡48😁22🔥7👎5🥰5🎉3💩2🖕2❤‍🔥1🍌1
Forwarded from Nero's (Nero-sama 🇷🇺)
Чел, который ставит клоунов такой типа
🤡53😁35👍17💯10🤣4💩1🌚1
Channel photo updated
👍17😁7🔥1🥴1💯1
Forwarded from Plot
Комитет по охране памятников организовал экспертизу, чтобы определить, как звали убийцу Пушкина

Привет, это Софья. Смешная бюрократическая история развивается в Санкт-Петербурге.

Юристка Юлия Коновалова уже два года просит Минкульт и КГИОП* исправить ошибку в документах, которая закралась туда в 2001 году. В реестре объектов культурного наследия место дуэли Александра Пушкина на Коломяжском проспекте, в сквере у станции «Новая деревня», указано как «Место, где 27 января 1837 г. состоялась дуэль поэта Пушкина А.С. с Дантесом Э.».

Но Дантес — не Э., а Ж.Ш.! Жорж Шарль, французский офицер. Эдмон Дантес — это граф Монте-Кристо, главный герой романа Александра Дюма.

По словам Коноваловой, у нее нет никаких дел, связанных с Минкультом и КГИОП — и интерес к этому вопросу не связан с ее профессиональной деятельностью. Просто она хорошо училась в школе, любила Дюма — и точно знает, что Эдмон в этой истории не замешан. Опечатку, по ее словам, она увидела случайно. И из интереса обратилась в инстанции с просьбой ее исправить. Переписка длится с января 2023 года — опечатка все еще в реестре. КГИОП при этом ошибку признает — и обещает исправить, но только после вмешательства Минкульта. Минкульт кивает на КГИОП. Получается замкнутый круг. Все акты этой истории Коновалова описала здесь.

«Фонтанка» обратилась в КГИОП за комментарием — изданию тоже подтвердили ошибку. Чтобы исправить опечатку в постановлении правительства РФ, комитет огранизовал государственную историко-культурную экспертизу. Видимо, чтобы определить, что в Пушкина стрелял именно Жорж Шарль, а не вымышленный Эдмон. Или чтобы точно установить, что соперника Пушкина звали именно так — и никак иначе. Проверка идет, по информации издания, «за внебюджетный счет».

___

КГИОП — Комитет по государственному контролю, использованию и охране памятников истории и культуры

Иллюстрации: слева — Эдмон Дантес, граф Монте-Кристо. Справа — Жорж Шарль Дантес, соперник Пушкина.
😁22🥴4
Тщетные усилия
😁22👍1
#prog #rust #rustreleasenotes

(да, я пишу с опозданием почти в неделю, и что?)

Вышла версия Rust 1.85.0! Как всегда, тут только интересные мне части, остальное в полных заметках о релизе.

▪️Релизнули новую редакцию Rust 2024 edition! К сожалению, новая версия диапазонов не попала в эту версию.
🔸в if let значение, по которому идёт сопоставление с образцом, теперь дропается перед входом в else ветку вместо после конца if let. Это позволило, в частности, избежать багов, когда guard из примитива синхронизации живёт дольше необходимого.
🔸также временные значения из последнего выражения в блоке теперь дропаются в конце блока, а не продолжают жить после него. Без этого изменения некоторый вполне нормально выглядящий код не компилировался:

// не компилируется до Rust 2024, компилируется после
fn f() -> usize {
let c = RefCell::new("..");
c.borrow().len()
}

🔸запрещены некоторые паттерны, которые крайне неочевидным образом взаимодействуют с pattern match ergonomics. Посмотрите по ссылке, там действительно странные вещи.
🔸std::env::set_var, std::env::remove_var и std::os::unix::process::CommandExt::before_exec теперь являются unsafe функциями. Сделать их unsafe во всех редакциях, увы, мешает обратная совместимость.
🔸cargo теперь по умолчанию учитывает MSRV при выборе версии зависимости.
Пачка изменений, связанных с unsafe кодом:
🔸extern-блоки теперь должны быть объявлены с unsafe, чтобы показать, что ответственность за корректность определений лежит на том, кто пишет extern блок. Дополнительно определения внутри extern-блока теперь могут быть помечены safe. В этом случае компилятор будет предполагать, что для доступа и использования этих определений не нужны специальные предусловия, и их можно использовать вне unsafe-блоков. В качестве примера можно привести sqrt из стандартной библиотеки C: не смотря на то, что это внешняя функция, её можно вызвать с любым значением, не вызывая UB.
🔸атрибуты no_mangle, export_name и link_section теперь должны быть записаны через #[unsafe(...)]. С этими атрибутами можно сломать гарантии, которые даёт компилятор, и компилятор не может проверить, что их использование корректно.
🔸unsafe_op_in_unsafe_fn warn по умолчанию.
🔸ссылки на static mut являются по умолчанию ошибкой компиляции.
🔸если компилятор не может вывести тип, к которому нужно привести выражение типа !, то он использует т. н. fallback. До Rust 2024 это был (), теперь это !. Так как это может сломать существующий unsafe-код, компилятор теперь по умолчанию даёт ошибку компиляции, если такое приведение происходит в unsafe-коде.

▪️Теперь замыкания могут быть async!

let mut vec: Vec<String> = vec![];

let closure = async || {
vec.push(ready(String::from("")).await);
};


В отличие от замыканий, возвращающих async-блок, футуры, возвращаемые этими замыканиями, могут использовать ссылки на то, что замыкание захватывает. В типах это выражается тем, что возвращаемые async-замыканиями футуры связаны временем жизни с самим замыканием. Из-за того, что эту связь пока что невозможно выразить с обычными Fn*-трейтами, в core::ops добавили AsyncFnOnce, AsyncFnMut и AsyncFn. Как и обычные Fn*-трейты, в ограничениях их можно использовать лишь в засахаренном виде.

▪️FromIterator и Extend теперь реализованы для всех кортежей до арности 12 включительно и имеют семантику, аналогичную Iterator::unzip.

▪️Для беззнаковых чисел, соответствующих NonZero и чисел с плавающей точкой добавили метод midpoint. Тривиальная вещь, но из-за переполнения её очень легко реализовать неправильно.

▪️В const-контексте теперь можно использовать, помимо прочего, несколько простых арифметических функций на числах с плавающей точкой и swap, как на ссылках, так и на сырых указателях.

▪️macro_rules, объявленные макросами, теперь используют редакцию кода, в котором они раскрываются, вместо редакции кода, в котором определён внешний макрос.
🎉12❤‍🔥2👍1