fa
Feedback
Блог*

Блог*

رفتن به کانال در Telegram

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

نمایش بیشتر
1 926
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-67 روز
-230 روز
آرشیو پست ها
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 теперь предпочитает стабильные определения нестабильным при сортировке результатов поиска.

#prog #article AArch64 Bitmask Immediates AArch64 (aka 64-битный ARM) — это архитектура с постоянным числом бит на кодировку инструкции (в противовес, скажем, x64). Это означает, что хотя архитектура и оперирует 64-битными числами, инструкции не могут использовать полноразмерные 64-битные литералы — они банально не влезают. К примеру, инструкции mov*, помещающие значение в регистр, могут принимать литералом только 16-битное число. Подобные ограничения действуют и для инструкций, использующих побитовые логические операции. Однако там используется особый формат кодировки значений — т. н. bitmask immediate, который эксплуатирует тот факт, что на практике битовые маски, как правило, не произвольные числа, а имеют определённую структуру, и позволяет закодировать широкий набор битовых масок в всего 13 битах. Эта статья рассказывает, как устроена эта кодировка, и приводит код на Rust для того, чтобы переводить битовые маски в эту кодировку.

photo content

Repost from AlexTCH
Another piece of a bit stale news:
As of January 1, 2026, ACM completed its transition to full open access: all ACM-published articles and related research artifacts in the DL are freely available worldwide without barriers to reading or reuse.
https://www.acm.org/about-acm/acm-pres-on-oa-transition-and-dl-changes This ain't no small change!

Семь лет назад я занимался AR примеркой обуви. Однажды к нам пришел один из VC партнеров и спросил: "а почему у вас в приложении нет allbirds? В Долине все только их и носят". Процедура добавления новой модели предполагала покупку физической пары, потом их сканировали, делали фотограмметрию, а результат доводили до ума руками. Так на полке со скопившейся обувью осталась пара allbirds ровно моего размера, и при увольнении мне ее подарили. С тех пор я стоптал пар пять этих прекрасных кроссовок разных цветов, они подходили мне идеально. И вот эпоха ушла: allbirds официально переключаются с обуви на GPU инфраструктуру. Раньше мы нагружали видеокарты, чтобы рендерить их кроссовки, теперь они сами будут продавать GPU-часы.

photo content

Repost from AlexTCH
https://elixir-lang.org/blog/2026/01/09/type-inference-of-all-and-next-15/ For about five years Elixir contributors have been working on integrating a type system into the language and tooling. Starting with the development of a pretty novel and unorthodox type system. I'm fascinated by several things: — they still haven't dropped the project. Despite slow progress and obstacles in performance and usability they systematically overcome. — they are deeply committed to the soundness of their gradual type system, which is tricky (and to my eyes they sometimes confuse soundness and completeness in the blogs at least) — they put end-user (developer) usability front and center, in terms of speed and responsiveness, type inference to reduce annotation burden, meaningful error messages, etc. Towards that goals the post references their work on https://elixir-lang.org/blog/2023/09/20/strong-arrows-gradual-typing/ and the development of https://elixir-lang.org/blog/2025/12/02/lazier-bdds-for-set-theoretic-types/ which are cool in their own right.

Проджект-менеджеры раньше: девять женщин смогут родить ребенка за месяц. Проджект-менеджеры сейчас: восемь ИИ-агентов и одна женщина наконец сократит ТТМ и сможет родить ребенка за месяц.

Недавно мне подарили набор дайсов. На выбор было несколько вариантов, и, так как я мальчик, я разумеется, взял розовые
Недавно мне подарили набор дайсов. На выбор было несколько вариантов, и, так как я мальчик, я разумеется, взял розовые

Repost from N/a
It took thousands of talented people decades of hard work and innovation to build the giant and deep iceberg, that is the computer software infrastructure of today. I know that you are ignorant of the complexity of what you can’t comprehend, but if you think a fancy autocomplete machine has the slightest chance of maintaining this monumental human achievement, expand on it and keep it running for the years to come, then you might be in for an unpleasant surprise.
https://www.atns.net/post/don-t-vibe-over-what-you-don-t-understand