#prog #rust #rustlib #article
Deser: Rethinking Rust Serialization
Статья про новую библиотеку (де)сериализации. Решает проблемы, которые есть в serde и которые очень сложно или почти невозможно решить из-за архитектуры.
Разумеется, это не строго лучше serde, и в статье подробно об этом рассказывается. В частности, в отличие от serde, deser поддерживает только self-describing форматы.
Deser: Rethinking Rust Serialization
Статья про новую библиотеку (де)сериализации. Решает проблемы, которые есть в serde и которые очень сложно или почти невозможно решить из-за архитектуры.
Разумеется, это не строго лучше serde, и в статье подробно об этом рассказывается. В частности, в отличие от serde, deser поддерживает только self-describing форматы.
Armin Ronacher's Thoughts and Writings
Deser: Rethinking Rust Serialization
Can we do better than Serde?
👍8❤1
Forwarded from Технологический Болт Генона
https://t.me/AlexCarrier/16988
Ор вышегор 10000 подписчиков
Это точно поможет продвижению Макса
Спасибо подписчику за наводку
Ор выше
Это точно поможет продвижению Макса
Спасибо подписчику за наводку
🤣10😁2
Кампейн Abomination vaults, в котором я участвовал и который продолжался больше года, сегодня закончился TPK 🫡
❤4🤔1
#prog #rust #rustreleasenotes
Вышел Rust 1.99.0! Бла-бла-бла, детали.
▪️В Rust добавили вариадики! ...Сишные. Раньше эти функции можно было декларировать, а теперь можно и определять:
Список типов, значения которых можно доставать через
Также такие функции могут быть
▪️Пачка линтов
▪️Теперь гарантируется, что получить доступ к содержимому
▪️
▪️Если имя метода неправильное (несуществующее), но является именем из
▪️Стабилизировали API, включая:
🔸
🔸VecDeque::retain_back: выкинуть из деки все элементы, кроме указанного числа последних.
🔸Box::into_non_null и Box::from_non_null.
🔸
🔸
🔸
▪️В rustdoc добавили линт, предупреждающий о неиспользованных сносках в документации.
Вышел 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 добавили линт, предупреждающий о неиспользованных сносках в документации.
blog.rust-lang.org
Announcing Rust 1.99.0 | Rust Blog
Empowering everyone to build reliable and efficient software.
👍6💩2👎1
#prog #rust #article
Generic Const Args and You
Статья о текущем состоянии экспериментальной поддержки констант в типовой системе Rust.
Generic Const Args and You
Статья о текущем состоянии экспериментальной поддержки констант в типовой системе Rust.
blog.rust-lang.org
Generic Const Args and You | Inside Rust Blog
Want to follow along with Rust development? Curious how you might get involved? Take a look!
❤7
Forwarded from HN Best Comments
Re: I spent $220 on Google app ads and 60% of the installs were robots
My favorite story:
1. Dev publishes app with Google Admob integration to the Play Store.
2. Buys Google Ads to drive traffic to the app.
3. Google Admob bans his account for invalid traffic.
https://www.reddit.com/r/admob/comments/1vzg3fu/i_paid_googl...
yunusabd, 5 hours ago
My favorite story:
1. Dev publishes app with Google Admob integration to the Play Store.
2. Buys Google Ads to drive traffic to the app.
3. Google Admob bans his account for invalid traffic.
https://www.reddit.com/r/admob/comments/1vzg3fu/i_paid_googl...
yunusabd, 5 hours ago
😁9🫡7