1.98K subscribers
3.98K photos
157 videos
15 files
4.12K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #rust #rustlib

Fearless SIMD v1.0 is here

fearless_simd takes unsafe out of SIMD.
🤔4❤1👍1
#prog #rust #article

Rewriting an entire UI in Rust

(С Tauri на Iced)

So. Was it worth it?

I answer: Yes.

И рандомная цитата:
One would think, that the software known as Windows, would be good at managing windows. One would, of course, be wrong.
❤13😁6
#prog #rust #rustlib #article

Deser: Rethinking Rust Serialization

Статья про новую библиотеку (де)сериализации. Решает проблемы, которые есть в serde и которые очень сложно или почти невозможно решить из-за архитектуры.

Разумеется, это не строго лучше serde, и в статье подробно об этом рассказывается. В частности, в отличие от serde, deser поддерживает только self-describing форматы.
👍7❤1
маниакальный смех
❤11🤔2
😁30🤝5🫡4
https://t.me/AlexCarrier/16988

Ор выше гор 10000 подписчиков

Это точно поможет продвижению Макса

Спасибо подписчику за наводку
🤣9😁1
Кампейн Abomination vaults, в котором я участвовал и который продолжался больше года, сегодня закончился TPK 🫡
❤4🤔1
Что, простите?
🤯8❤3
#prog #rust #rustreleasenotes

Вышел Rust 1.99.0! Бла-бла-бла, детали.

▪️В Rust добавили вариадики! ...Сишные. Раньше эти функции можно было декларировать, а теперь можно и определять:

/// SAFETY: must be called with (at least) 2 i32 arguments.
unsafe extern "C" fn sum(mut args: ...) -> i32 {
// SAFETY: guaranteed by the caller.
let a = unsafe { args.next_arg::<i32>() };
let b = unsafe { args.next_arg::<i32>() };
a + b
}

fn foo() -> i32 {
unsafe { sum(0i32, 2i32) }
}


Список типов, значения которых можно доставать через next_arg, ограничен sealed трейтом VaArgSafe. Связано это с тем, что в C значения некоторых типов при передаче в вариадическую функцию кастуются в более крупные типы, поэтому их по определению из VaList достать нельзя. Кстати, сам VaList, если сильно нужно, можно передавать явно и даже клонировать.

Также такие функции могут быть #[naked], и по очевидным причинам их нужно писать на ассемблере.

▪️Пачка линтов unused теперь включает в себя unreachable_cfg_select_predicates.

▪️Теперь гарантируется, что получить доступ к содержимому UnsafeCell<T> можно через каст сырого указателя в указатель на T, использовать UnsafeCell::get необязательно. Общие правила насчёт unsafe, соблюдающего правила языка, остаются в силе.

▪️RangeInclusive исторически плохо оптимизировался из-за того, что последняя итерация должна была обрабатываться отдельно. Это в какой-то мере исправили, добавив в трейт Step, на который опираются диапазоны, методы для итерации с возвратом флага переполнения.

▪️Если имя метода неправильное (несуществующее), но является именем из #[doc(alias)] на существующем методе, то этот метод будет предложен в первую очередь, выше имён со схожим написанием.

▪️Стабилизировали API, включая:
🔸IntoIterator на Box<[T; N]>, &Box<[T; N]> и &mut Box<[T; N]>.
🔸VecDeque::retain_back: выкинуть из деки все элементы, кроме указанного числа последних.
🔸Box::into_non_null и Box::from_non_null.
🔸Vec::into_parts и Vec::from_parts, где parts — это тройка из NonNull указателя на аллокацию, длины и ёмкости.
🔸core::mem::{size_of_val_raw, align_of_val_raw} и core::alloc::Layout::for_value_raw, аналогичные существующим функциям без *_raw, но работающие на сырых указателях. Разумеется, unsafe.
🔸std::fs::{set_times, set_times_nofollow} для установки временных отметок на файлах. На всех OS можно менять время доступа и модификации. Дополнительно на Windows и OS от Apple можно менять время создания. *_nofollow вариант при использовании на символической ссылке меняет атрибуты самой ссылки, а не файла, на который она указывает (довольно кривой дизайн, кмк: что, если потом нужно расширить набор флагов? Не делать же по функции на каждую комбинацию).

▪️В rustdoc добавили линт, предупреждающий о неиспользованных сносках в документации.
👍5👎1💩1
#prog #rust #article

Generic Const Args and You

Статья о текущем состоянии экспериментальной поддержки констант в типовой системе Rust.
❤4