1.93K subscribers
3.74K photos
143 videos
15 files
3.94K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Forwarded from partially unsupervised
Семь лет назад я занимался AR примеркой обуви. Однажды к нам пришел один из VC партнеров и спросил: "а почему у вас в приложении нет allbirds? В Долине все только их и носят".

Процедура добавления новой модели предполагала покупку физической пары, потом их сканировали, делали фотограмметрию, а результат доводили до ума руками. Так на полке со скопившейся обувью осталась пара allbirds ровно моего размера, и при увольнении мне ее подарили.

С тех пор я стоптал пар пять этих прекрасных кроссовок разных цветов, они подходили мне идеально. И вот эпоха ушла: allbirds официально переключаются с обуви на GPU инфраструктуру. Раньше мы нагружали видеокарты, чтобы рендерить их кроссовки, теперь они сами будут продавать GPU-часы.
🤩8
💯19😁3🤔2🤡2
Forwarded 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!
🔥7🤔2
👍12🌚5😁3
#prog #article

AArch64 Bitmask Immediates

AArch64 (aka 64-битный ARM) — это архитектура с постоянным числом бит на кодировку инструкции (в противовес, скажем, x64). Это означает, что хотя архитектура и оперирует 64-битными числами, инструкции не могут использовать полноразмерные 64-битные литералы — они банально не влезают. К примеру, инструкции mov*, помещающие значение в регистр, могут принимать литералом только 16-битное число.

Подобные ограничения действуют и для инструкций, использующих побитовые логические операции. Однако там используется особый формат кодировки значений — т. н. bitmask immediate, который эксплуатирует тот факт, что на практике битовые маски, как правило, не произвольные числа, а имеют определённую структуру, и позволяет закодировать широкий набор битовых масок в всего 13 битах. Эта статья рассказывает, как устроена эта кодировка, и приводит код на Rust для того, чтобы переводить битовые маски в эту кодировку.
👍3
13🌚9😁5
#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 теперь предпочитает стабильные определения нестабильным при сортировке результатов поиска.
🎉92🔥1🥰1
Forwarded from Neural Machine
Я хочу быть максимально удовлетворен своей жизнью. Если окажется херня, я поделюсь, как этого добился.
👍8🥰1
#prog #article

Exceptions in Cranelift and Wasmtime

И немного о том, почему добавить поддержку исключений в уже существующий WASM-рантайм оказалось не самой тривиальной задачей
👍6🥰1😭1
Forwarded from Neural Machine
Я не знаю, что делают взрослые, какие-нибудь глупости.
👍6🥰1
#meme про идеальную форму
😁14🫡2🥰1
🥰1🥴1
😁25🔥4💯2🥰1🥴1
🤝17👎11❤‍🔥4🤡3😐3👍1🤮1💩1💯1🤣1🤨1
🔥10😁2🥰1🤔1
Раньше: "Если все пойдут с гаражей прыгать, ты тоже пойдёшь?"

Сейчас: "Если все пойдут вайбкодить, ты тоже пойдёшь?"
😭12👌32🥰1😁1🤔1
Forwarded from Neural Machine
Я мужчина. Я хочу подождать, пока я стану достаточно взрослым.
10😢2🍌2🥰1
👍6🔥2🥰1🤡1
#meme про скриншоты
🫡8😁5🥰1🍌1