Блог*
前往频道在 Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
显示更多1 963
订阅者
无数据24 小时
-27 天
无数据30 天
数据加载中...
吸引订阅者
八月 '26
八月 '26
+42
在4个频道中
七月 '26
+78
在2个频道中
Get PRO
六月 '26
+29
在2个频道中
Get PRO
五月 '26
+45
在4个频道中
Get PRO
四月 '26
+51
在3个频道中
Get PRO
三月 '26
+31
在4个频道中
Get PRO
二月 '26
+34
在3个频道中
Get PRO
一月 '26
+56
在9个频道中
Get PRO
十二月 '25
+76
在11个频道中
Get PRO
十一月 '25
+106
在7个频道中
Get PRO
十月 '25
+56
在10个频道中
Get PRO
九月 '25
+46
在6个频道中
Get PRO
八月 '25
+44
在5个频道中
Get PRO
七月 '25
+62
在9个频道中
Get PRO
六月 '25
+42
在2个频道中
Get PRO
五月 '25
+85
在6个频道中
Get PRO
四月 '25
+52
在5个频道中
Get PRO
三月 '25
+62
在3个频道中
Get PRO
二月 '25
+57
在4个频道中
Get PRO
一月 '25
+90
在6个频道中
Get PRO
十二月 '24
+61
在4个频道中
Get PRO
十一月 '24
+167
在5个频道中
Get PRO
十月 '24
+95
在5个频道中
Get PRO
九月 '24
+84
在4个频道中
Get PRO
八月 '24
+98
在9个频道中
Get PRO
七月 '24
+66
在8个频道中
Get PRO
六月 '24
+59
在3个频道中
Get PRO
五月 '24
+47
在4个频道中
Get PRO
四月 '24
+73
在10个频道中
Get PRO
三月 '24
+65
在7个频道中
Get PRO
二月 '24
+88
在1个频道中
Get PRO
一月 '24
+80
在3个频道中
Get PRO
十二月 '23
+88
在5个频道中
Get PRO
十一月 '23
+59
在2个频道中
Get PRO
十月 '23
+46
在2个频道中
Get PRO
九月 '23
+93
在0个频道中
Get PRO
八月 '23
+78
在0个频道中
Get PRO
七月 '23
+59
在0个频道中
Get PRO
六月 '23
+57
在0个频道中
Get PRO
五月 '23
+41
在0个频道中
Get PRO
四月 '23
+55
在0个频道中
Get PRO
三月 '23
+39
在0个频道中
Get PRO
二月 '23
+36
在0个频道中
Get PRO
一月 '23
+118
在0个频道中
Get PRO
十二月 '22
+56
在0个频道中
Get PRO
十一月 '22
+48
在0个频道中
Get PRO
十月 '22
+62
在0个频道中
Get PRO
九月 '22
+24
在0个频道中
Get PRO
八月 '22
+46
在0个频道中
Get PRO
七月 '22
+34
在0个频道中
Get PRO
六月 '22
+34
在0个频道中
Get PRO
五月 '22
+36
在0个频道中
Get PRO
四月 '22
+49
在0个频道中
Get PRO
三月 '22
+19
在0个频道中
Get PRO
二月 '22
+41
在0个频道中
Get PRO
一月 '22
+49
在0个频道中
Get PRO
十二月 '21
+88
在0个频道中
Get PRO
十一月 '21
+75
在0个频道中
Get PRO
十月 '21
+172
在0个频道中
Get PRO
九月 '21
+63
在0个频道中
Get PRO
八月 '21
+130
在0个频道中
Get PRO
七月 '21
+74
在0个频道中
Get PRO
六月 '21
+79
在0个频道中
Get PRO
五月 '21
+66
在0个频道中
Get PRO
四月 '21
+100
在0个频道中
Get PRO
三月 '21
+81
在0个频道中
Get PRO
二月 '21
+42
在0个频道中
Get PRO
一月 '21
+103
在0个频道中
Get PRO
十二月 '20
+663
在0个频道中
| 日期 | 订阅者增长 | 提及 | 频道 | |
| 26 八月 | 0 | |||
| 25 八月 | 0 | |||
| 24 八月 | +1 | |||
| 23 八月 | +2 | |||
| 22 八月 | 0 | |||
| 21 八月 | +1 | |||
| 20 八月 | +1 | |||
| 19 八月 | +2 | |||
| 18 八月 | +3 | |||
| 17 八月 | +3 | |||
| 16 八月 | +1 | |||
| 15 八月 | +2 | |||
| 14 八月 | +5 | |||
| 13 八月 | +1 | |||
| 12 八月 | +1 | |||
| 11 八月 | +2 | |||
| 10 八月 | +1 | |||
| 09 八月 | +1 | |||
| 08 八月 | 0 | |||
| 07 八月 | +1 | |||
| 06 八月 | +1 | |||
| 05 八月 | +2 | |||
| 04 八月 | +2 | |||
| 03 八月 | +2 | |||
| 02 八月 | +4 | |||
| 01 八月 | +3 |
频道帖子
Repost from diablogang
+1
Юбисофт это единстванная компания, которая может выпустить игру в стиме с единственным битым экзешником в 24 киллобайта...
Теперь представьте, что если бы они это сделали в пс сторе, где нету легкого возврата денег, как в стиме.
| 2 | #prog #rust #article
Replacing a Rust Enum with a 64-bit Word Made My Interpreter 17% Faster
<...> That being said, sha256_unfixed is still running 12% faster with the new value representation than with the old version, even though it's allocating a total of 3,149,052 boxed integer values in a span of about 490 ms. That seemed a bit crazy to me, but having a copying GC with a bump allocator means that we can allocate objects really fast. | 370 |
| 3 | Вспомнил, как однажды я почти принял свою внешность и почти поверил, что я норм, а потом вышло интервью со мной
18+ НАСТОЯЩИЙ МАТЕРИАЛ (ИНФОРМАЦИЯ) ПРОИЗВЕДЕН, РАСПРОСТРАНЕН И (ИЛИ) НАПРАВЛЕН ИНОСТРАННЫМ АГЕНТОМ АЛЕСИНЫМ ДЕНИСОМ ВЛАДИМИРОВИЧЕМ ЛИБО КАСАЕТСЯ ДЕЯТЕЛЬНОСТИ ИНОСТРАННОГО АГЕНТА АЛЕСИНА ДЕНИСА ВЛАДИМИРОВИЧА. | 483 |
| 4 | #prog #rust
В Rust стабилизировали тип never. Да, опять. Но на этот раз вроде окончательно, все крейты, сломанные из-за смены фоллбека или получили апдейты, или дико старые. Если всё пройдёт гладко, дойдёт до stable в красивой версии 1.100. | 564 |
| 5 | #video
Every living creature is 1 hit point | 557 |
| 6 | 没有文字... | 589 |
| 7 | Вы только представьте себе эту хрупкую мужественность, которой нужен антивок-мод, который делает жопу игрового персонажа более плоской.
А теперь представьте, что таких модов больше одного. | 618 |
| 8 | #prog #rust
Ииииии на этой версии обнаружили P-Critical баг: компилятор может генерировать vtable с null. К счастью, должны пофиксить быстро, потому что на бете уже не воспроизводится. | 657 |
| 9 | ▪️Стабилизировали API:
🔸format_into на примитивных числовых типах (и используемый аргументом fmt::NumBuffer) для форматирования числа в переданный по ссылке буфер. Это избегает использования оверхеда от write! и может сильно повысить производительность — бенчи показывают, что новый метод по производительности сопоставим с itoa (крейт, не функция из C).
🔸str::substr_range и <[T]>::subslice_range, которые возвращают диапазон, в котором располагается переданная подстрока/подслайс. Эти методы не смотрят на содержимое самой строки, а вычисляют позицию, используя сравнения указателей, поэтому на посторонних аргументах (не лежащих внутри self) этот метод возвращает None. Документация, правда, предупреждает, что методы могут возвращать Some(0..0) или Some(self.len()..self.len()), если переданная строка/слайс пустая и лежит в памяти непосредственно до или после self.
🔸NonZero::from_str_radix. Ошибка от этого метода может возвращать из метода kind значение IntErrorKind::Zero.
🔸String::from_utf16{be, le}_{, lossy} для получения строки из UTF-16 с порядком байт, отличных от нативного.
🔸str::strip_circumfix и <[T]>::strip_circumfix, которые возвращают строку/слайс без указанных префикса и суффикса. Возвращает None, если префикс и/или суффикс не содержатся в self или если они перекрываются.
🔸Atomic<T>::{from_mut, from_mut_slice} для получения атомиков из уникальных ссылок. Уникальность ссылок гарантирует корректность этого преобразования. Также стабилизировали Atomic<T>::get_mut_slice, который является логичным продолжением уже стабильного Atomic<T>::get_mut. | 660 |
| 10 | #prog #rust #rustreleasenotes
Вышел Rust 1.98.0! Как всегда, кусочки — тут, мясо — там.
▪️Обычно я пишу про новые вещи в порядке: фичи языка, добавления в std, изменения в cargo. В этот раз я напишу сначала про фичу, которая номинально является новым API в std, но которая даёт возможности, ранее невыразимые в языке (без использования интринсиков, по крайней мере).
Как известно, типы с плавающей точкой не обладают свойствами, которые имеются у действительных чисел в математике — в частности, у чисел с плавающей точкой сложение не является ассоциативной операцией. Это связывает руки оптимизатору, который обязан предохранять поведение. Например, если есть код типа
fn dot(a: &[f32], b: &[f32]) -> f32 {
let mut sum = 0.0;
for i in 0..a.len() {
sum += a[i] * b[i];
}
sum
}
, то компилятор обязан генерировать код, который считывает и суммирует произведения чисел из слайсов по одному. Он не может, скажем, векторизовать код, поскольку подобная трансформация неизбежно меняет порядок, в котором суммируются числа, и это может заметно повлиять на результаты (это, кстати, был мотивирующий пример для предложения добавить API, описанный ниже).
Типы f32 и f64 (а также f16 и f128, но их ещё не стабилизировали) обзавелись методами algebraic_{add, sub, mul, div, rem}. Они выполняют указанные арифметические операции, но, в отличие от обычных арифметических операций, оптимизатор может переупорядочивать их, используя тождества, справедливые для действительных чисел и, вообще говоря, неверные для чисел с плавающей точкой. Взамен компилятор в состоянии оптимизировать код значительно лучше — в частности, пример выше можно переписать в виде
fn dot(a: &[f32], b: &[f32]) -> f32 {
let mut sum = 0.0f32;
for i in 0..a.len() {
sum = sum.algebraic_add(a[i].algebraic_mul(b[i]));
}
sum
}
, и тогда генерируемый код теперь использует SIMD и на процессорах, поддерживающих набор инструкций AVX2, код может работать до восьми раз быстрее!
Данные операции идейно схожи с ключами -ffast-math, но обладают большей гранулярностью и, в отличие от них, не страдают от драконовских ограничений в виде UB на операциях с NaN.
▪️Компилятор теперь реагирует на #[no_mangle] функции, которые некорректно переопределяют функции, ожидаемые рантаймом (ошибка компиляции) и ожидаемые std (предупреждение).
▪️Компилятор теперь предупреждает, если функция возвращает core::ffi::c_void по значению. Тип void в C и C++ отображается на () в Rust, а c_void нужно использовать, только через указатель.
▪️Атрибут #[repr(transparent)] можно применить на структуру, где одно поле "значимо", а остальные имеют "тривиальные" типы. Ранее ими считались все типы нулевого размера с единичным выравниванием, но с этой версии из этого списка исключили #[repr(C)] типы, типы с приватными полями и #[non_exhaustive] типы.
▪️#[derive(PartialOrd)] в генерируемом коды теперь просто возвращает Some(self.cmp(rhs)), если используется одновременно с #[derive(Ord)]. Из-за ограничений инфраструктуры по раскрытию макросов есть забавное особенность: комбинации
#[derive(PartialOrd, Ord)]
struct A;
#[derive(Ord, PartialOrd)]
struct B;
#[derive(Ord)]
#[derive(PartialOrd)]
struct C;
получают упрощённый вариант кода, а вот
#[derive(PartialOrd)]
#[derive(Ord)]
struct D;
— нет. | 556 |
| 11 | #gamedev
Разработчики Artisan of Glimmith (советую btw) недавно опубликовали пост про апдейт, главной темой которого была в основном оптимизация. Пост советую к прочтению целиком, отчасти из-за того, что для, в общем-то, относительно казуальной игры подобные технические моменты разработчики обычно освещают редко.
Из занятных моментов могу отметить, что разработчики перенесли обработку частиц с GPU на CPU. Как оказалось, в игре они используются с достаточно небольшом количестве, чтобы оверхед на вызовы графического API каждый кадр и перенос данных на GPU перекрывал выгоды от параллелизации. Более того, после удаления этих вызовов суммарная нагрузка на CPU в итоге снизилась — даже на CPU эти расчёты занимают меньше времени, чем общение с видеокартой. | 639 |
| 12 | Эх, вот бы кто прислал фото для рубрики "прекрасные папищеки"... | 646 |
| 13 | #ml #предложка, пожалуй | 659 |
| 14 | #prog #rust
Enabling the next-generation trait solver on nightly
И о том, что это значит для Rust | 770 |
| 15 | #prog #rust #article
Protecting the Rust standard library from accidental breakage
Accidental breakage can happen in any codebase. The Rust standard library isn't magically exempt from this — so it too now uses cargo-semver-checks to prevent accidental breakage. Here's why this took months of work by multiple Rustaceans, dozens of pull requests, and 15,000+ lines of code across the Rust repo, cargo-semver-checks, and its component libraries. | 818 |
| 16 | 没有文字... | 758 |
| 17 | Source
И это почти не преувеличение | 939 |
| 18 | KotlinLLM is Going Open Source - The JetBrains Blog
https://blog.jetbrains.com/research/2026/07/kotlinllm-open-source/
забавно, раньше мы шутили, что будут такие функции, но похоже дошутились :) | 943 |
| 19 | Я — ненастоящий мужчина, потому что у меня нету шуруповёрта :( | 849 |
| 20 | На перекрестке в автобус въехал грузовик с большой надписью "техническая помощь" на борту. Уж помогли так помогли
не #услышано | 859 |
