uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

Блог*

Блог*

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
1 990
Obunachilar
-124 soatlar
+77 kun
+1330 kun
Postlar arxiv
photo content

Всё ещё актуально

photo content

Repost from AlexTCH
For some reason they say "AI makes programmers obsolete, because anybody can make an app now", but nobody says "AI will push Shopify out of business because anyone can make a Web store now". Curious, huh?

#itsec #suckassstory Source
#itsec #suckassstory Source

#meme про скриншоты
#meme про скриншоты

#prog #ml #cpp #article Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом (от Андрея Карпова, который глава PVS-Studio)

Repost from Neural Machine
Я мужчина. Я хочу подождать, пока я стану достаточно взрослым.

Раньше: "Если все пойдут с гаражей прыгать, ты тоже пойдёшь?" Сейчас: "Если все пойдут вайбкодить, ты тоже пойдёшь?"

photo content

photo content

#prog #rust #meme Source
#prog #rust #meme Source

photo content

Repost from Neural Machine
Я не знаю, что делают взрослые, какие-нибудь глупости.

#prog #article Exceptions in Cranelift and Wasmtime И немного о том, почему добавить поддержку исключений в уже существующий WASM-рантайм оказалось не самой тривиальной задачей

Repost from Neural Machine
Я хочу быть максимально удовлетворен своей жизнью. Если окажется херня, я поделюсь, как этого добился.

#prog #rust #rustreleasenotes Вышла версия Rust 1.95.0! Как всегда, тут только выдержки, всё остальное в детальных заметках о релизе. ▪️if-гуарды на ветках match теперь могут использовать if let:
match value {
    Some(x) if let Ok(y) = compute(x) => {
        // Both `x` and `y` are available here
        println!("{}, {}", x, y);
    }
    _ => {}
}
▪️Частично примыкающее изменение: компилятор больше не выдаёт предупреждение на безусловные паттерны в if let. Автор изменения мотивирует это распространением кода навроде такого:
fn main() {
    if let x = funx() && x < usize::MAX {
        // use x
    }
}
Эта идиома позволяет привязать значение и что-то сделать/проверить с ним и при этом не пустить имя в окружающую область видимости. ▪️Добавили новый макрос cfg_select!, который позволяет сделать подобие match, но для cfg-предикатов:
cfg_select! {
    unix => {
        fn foo() { /* unix specific functionality */ }
    }
    target_pointer_width = "32" => {
        fn foo() { /* non-unix, 32-bit functionality */ }
    }
    _ => {
        fn foo() { /* fallback implementation */ }
    }
}

let is_windows_str = cfg_select! {
    windows => "windows",
    _ => "not windows",
};
Технически этот макрос не даёт новых возможностей, но без него нужные атрибуты #[cfg] нужно выписывать самостоятельно, дублируя дословно все предикаты. Ровно по этой причине стал распространён и используется cfg-if — собственно, объявление в блоге напрямую на него и ссылается. ▪️Навряд ли кого-то коснётся, но: match по enum теперь всегда ведёт себя так, как будто он читает дискриминант. Это кажется странным, но объясняется #[non_exhaustive]. Без этого изменения то, есть ли в некотором unsafe-коде UB или нет, зависело от того, определён ли enum в текущем крейте или в другом. Также match теперь читает дискриминант, даже если только одна ветка населена — без этого изменения поведение различалось в обобщённом коде и в ручной мономорфизации. ▪️Поддержку части платформ подняли до Tier 2 — в основном встраиваемые ARM-платформы от Apple (и их симуляторные версии). ▪️Стабилизированы несколько API, в частности: 🔸Конверсии по ссылке из MaybeUninit-массивов в массивы и слайсы из MaybeUninit, а также конверсии по значению между ними 🔸Аналогичные конверсии по ссылке между массивами в Cell и массивами из Cell 🔸Модуль core::range, в котором собираются диапазоны, планируемые на замену текущим. Пока что стабилизированы только RangeInclusive и его итератор. В отличие от текущих диапазонов, новый тип не служит одновременно итератором и потому реализует Copy (при Copy-индексах, разумеется) и занимает меньше места: ему не нужно хранить состояние для отслеживания поведения на последней итерации, только два индекса. 🔸Функция core::hint::cold_path для пометки пути исполнения, который не предполагается, что будет часто исполняться. Этакая замена likely/unlikely. ▪️rustdoc теперь предпочитает стабильные определения нестабильным при сортировке результатов поиска.