1.84K subscribers
3.27K photos
130 videos
15 files
3.55K links
Блог со звёздочкой.

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

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

You Really Shouldn't Roll Your Own Crypto: An Empirical Study of Vulnerabilities in Cryptographic Libraries (pdf)

<...> Among our most interesting findings is that only 27.2% of vulnerabilities in cryptographic libraries are cryptographic issues while 37.2% of vulnerabilities are memory safety issues, indicating that systems-level bugs are a greater security concern than the actual cryptographic procedures

<...>

Of the most severe CVEs, just 3.57% were cryptographic, a substantially lower percentage compared to 27.24% of all CVEs.
🤔5
🫡

В Госдуме и ФСБ поддержали предложение о том, чтобы исключить использование российскими операторами измерителя скорости интернета SpeedTest американской компании Ookla. 
. . .
Ookla работает в тесной связи со спецслужбами США — американцы смогли создать по всему миру систему тестового контроля сетей связи, объясняет свою обеспокоенность президент Международной академии связи Анастасия Оситис в своем обращении в Госдуму (документ есть у «Известий»).
. . .
Системы тестового контроля позволяют получить информацию о сетях связи: их конфигурации, используемом на них оборудовании, нагрузке, пропускной способности и многом другом, перечисляет академик МАС Сергей Мельник. По его словам, эти данные, попав в руки иностранных спецслужб, могут быть использованы, к примеру, для организации адресных DDoS-атак.

Скорость отступа: в РФ хотят запретить использование сервиса SpeedTest
https://iz.ru/1775426/valerii-kodacigov/skorost-otstupa-v-rf-hotat-zapretit-ispolzovanie-servisa-speedtest
🤡31🤣7
❤‍🔥13👍7💯6
#prog #rust #rustlib #article

Designing A Fast Concurrent Hash Table

Статья о дизайне papaya, многопоточной в основном lock-free хэш-мапы с упором на пропускную способность на операциях чтения из мапы и предсказуемые задержки (без пиков). Также пока что является, кажется, единственной подобной структурой данных, которую можно использовать из асинхронного кода.

Для того, чтобы избежать пиков задержки, использует инкрементальное изменение размера — и это одно из немногих мест, где используются блокировки.

Так как многопоточная мапа по определению не может иметь аналог entry API (по крайней мере, без кучи тонкостей из-за потенциальных гонок с другими потоками), papaya предоставляет операции по атомарной модификации отдельных записей, использующие переданные коллбеки для выполнения нужной операции. Для наиболее ходовых операций есть отдельные методы, а для тех, которые в эти методы не укладываются, есть операция compute. Коллбек, переданный в этот метод, должен возвращать значение типа Operation, описывающий требуемое действие:

enum Operation<V, T> {
Insert(V),
Remove,
Abort(T),
}


В конце автор сравнивает свою реализацию с другими подобными библиотеками для Rust и поясняет, почему может иметь смысл использовать их вместо papaya.
🔥75
#prog #rust #rustreleasenotes

Вышла версия Rust 1.82.0! Как всегда, тут только избранные части, а полный ченджлог отдельно.

▪️Теперь в некоторых случаях можно использовать pattern matching, не упоминая ненаселённые паттерны:

enum Void {}

fn foo() -> Result<u32, Void> {
todo!()
}

fn main() {
let Ok(x) = foo();

match foo() {
Ok(x) => {}
}
}


▪️Добавили новый синтаксис, который позволяет явно указать, какие лайфтайм-параметры будут использованы для обобщённых параметров типа impl Trait в возвращаемой позиции: + use<'a>. Это позволяет, в частности, убрать из списка лайфтайм-параметров те, которые по факту не используются в возвращаемом типе. У меня не получилось кратко объяснить, для чего это нужно, читайте блогпост. Из досадных ограничений: анонимный тип обязан перечислять в use все обобщённые типы и константные параметры из окружения, даже если они не используются. Это планируют исправить в будущих версиях.

▪️Стабилизировали операции на числами с плавающей точкой в const fn. В качестве не вполне приятного дополнения const fn теперь могут возвращать разные результаты в о время компиляции и в рантайме. С другой стороны, в настоящий момент эта оговорка существует лишь из-за тонкостей насчёт гарантий битового представления NaN. Если вас это не интересует (а так оно, скорее всего, и есть), то const fn продолжают сохранять равенство рантайм и компилтайм поведения.

▪️Стабилизировали операции для взятия адреса place expression без создания промежуточной ссылки: &raw const и &raw mut, ранее доступные через макросы std::ptr::addr_of{, _mut}. Также в качестве багфикса их использование на static определениях теперь не триггерит сообщение о небезопасной операции.

▪️В Rust добавили ключевое слово safe... Ну, почти. extern-определения по определению не могут быть проверены компилятором на корректность, поэтому в общем случае доступ к ним требует unsafe-блока. Начиная с этой версии определение в extern-блоке можно пометить, как safe, обозначая тем самым, что доступ к определению не требует соблюдения каких-либо специальных предусловий. Например, таковыми можно пометить большинство функций из libm — математической составляющей стандартной библиотеки C.

▪️Макрос offset_of! теперь можно использовать для вычисления сдвига вложенного поля:

struct Inner {
field: u32,
}

struct Outer {
inner: Inner,
}

const _: usize = std::mem::offset_of!(Outer, inner.field);


▪️Некоторые атрибуты — например, #[no_mangle] и #[export_name] — могут приводить к некорректным программаv даже в отсутствие какого-либо unsafe кода. Например, вот эта простая программа при запуске на *nix-системе почти наверняка упадёт с SIGSEGV:

fn main() {
println!("Hello, world!");
}

#[no_mangle]
fn malloc() -> usize { 1 }


С edition 2024 (да, ещё не стабилизированной) подобные атрибуты нужно будет помечать, как unsafe:

#[unsafe(no_mangle)]
fn this_is_not_in_global_namespace() {}


В предыдущих edition по соображениям обратной совместимости это не требуется, но есть соответствующий линт (по умолчанию выключенный).

⬇️⬇️⬇️
👍7🔥6🥰1😍1
▪️Стабилизировали пачку API. Некоторые из них:
🔸{Rc,Arc}::make_mut() теперь работает с другими unsized типами: Path, OsStr и CStr.
🔸std::thread::Builder::spawn_uncheckedunsafe функция для запуска потоков без проверки времени жизни. Не очень нужная функция сама по себе, но позволяет строить поверх API, работающий с потоками — такие, как scoped threads, например — без грязных хаков с transmute-ом в 'static-типы.
🔸is_sorted (включая *_by и *_by_key варианты) на слайсах и итераторах.
🔸Временами нужная std::iter::repeat_n. В отличие от repeat(x).take(n) может не клонировать на последней итерации.
🔸...Но чуть менее нужная, поскольку Take<Repeat<T>> и Take<RepeatWith<T>> теперь реализуют ExactSizeIterator, а Take<Repeat<T>> ещё и DoubleEndedIterator.
🔸Функции на умных указателях для выделения неинициализированной памяти (new_uninit/new_uninit_slice) и соответствующие небезопасные функции для утверждения инициализированности (assume_init/assume_init). Есть для Box, Rc и Arc.
🔸from_str_radix в const-контексте

▪️Для cargo теперь доступна команда cargo info для отображения информации о пакете. Удобнее, чем читать непосредственно манифест.
👍11❤‍🔥1🥰1
#meme, от которого больно
😭214🌚1🤣1🤷1
#meme о полном запрете
👍31😁14😭4🔥1😱1
Друзья, до RustCon еще полтора месяца и наверняка кое-кто из вас думает, что времени для покупки билетов достаточно. Это правда, но хотим напомнить, что через две недели цена на них увеличится.

Лучше забронировать себе место на конференции прямо сейчас. Сэкономленная сумма наверняка пригодится вам на афтепати 😊 Билеты пока-еще-со-скидкой на сайте.

А еще вы можете посмотреть доклады с прошлого года — они выложены в нашем канале на YouTube и до сих пор причиняют немало пользы. До встречи 6 декабря в Москве!
Please open Telegram to view this post
VIEW IN TELEGRAM
🖕42🍌1
#неігрове не забути потім в журнал обліку журналів записати😐
😁7🫡4🌚1
🤖Депутатские хроники🤖

🍏«ГОСТ на единый подарок для всех новорожденных страны разработают в России в 2025 году. Об этом сообщила Татьяна Буцкая».

🇷🇺«На форуме "Моя семья - моя крепость" в Тюмени она представила каталог, в котором указаны товары с государственной символикой, отечественного производства, которые могут войти в набор для новорожденного».

🇷🇺"Это не просто российские производители, это когда патриот с рождения, это когда у тебя триколор, герб, уже первая твоя одежда, которая говорит о том, что ты родился в России, что ты нужен для России, ты важен, тебя уже с рождения любят. <…> Мы очень хотим, чтобы каждый ребенок, который родился в любом регионе, мог получить такой подарок", - сказала она.

🎉Шутки про патриотизм с роддома вышли на новый уровень.
😌

📎Источник
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡5😍4😁3💩3🥴2
Аааааааа!

Пруфы не искала, но знаете, верю))
😁25🤣42
Блог*
Photo
Девушка из Китая увидела мои ногти и спросила, гей ли я 🙄
😁13🤮4🤡32
Немного забавного Твиттера. Джонатан Блоу, программист и геймдизайнер Braid, пожаловался, что каждый раз, как ему присылают ссылку на GitHub, то у людей могут быть месяцы или годы без коммитов. После этого Джонатану начали пояснять, что у людей бывает работа, семья и прочие радости жизни, и они не могут 24/7 работать на какими-то неоплачиваемыми проектами, чтобы заливать их на ГитХаб.

И данный Твит просто забавен в свете того, что переиздание Braid, Anniversary Edition, было отложено на ТРИ ГОДА после анонса даты выхода, а основная критика переиздания состояла в том, что создатель пообещал отдельный мир с новыми головоломками, и расширенные комментарии, но на деле новые уровни были либо ни о чём, либо вообще ранними версиями уже существующих.

Быть может, если не тратить всё своё время на GitHub, то получится успешно заниматься реальной работой.
👍12🤡5😁2🤔1