#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.
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.
arXiv.org
You Really Shouldn't Roll Your Own Crypto: An Empirical Study...
The security of the Internet rests on a small number of open-source cryptographic libraries: a vulnerability in any one of them threatens to compromise a significant percentage of web traffic....
🤔5
Forwarded from Технологический Болт Генона
🫡
Скорость отступа: в РФ хотят запретить использование сервиса SpeedTest
https://iz.ru/1775426/valerii-kodacigov/skorost-otstupa-v-rf-hotat-zapretit-ispolzovanie-servisa-speedtest
В Госдуме и ФСБ поддержали предложение о том, чтобы исключить использование российскими операторами измерителя скорости интернета SpeedTest американской компании Ookla.
. . .
Ookla работает в тесной связи со спецслужбами США — американцы смогли создать по всему миру систему тестового контроля сетей связи, объясняет свою обеспокоенность президент Международной академии связи Анастасия Оситис в своем обращении в Госдуму (документ есть у «Известий»).
. . .
Системы тестового контроля позволяют получить информацию о сетях связи: их конфигурации, используемом на них оборудовании, нагрузке, пропускной способности и многом другом, перечисляет академик МАС Сергей Мельник. По его словам, эти данные, попав в руки иностранных спецслужб, могут быть использованы, к примеру, для организации адресных DDoS-атак.
Скорость отступа: в РФ хотят запретить использование сервиса SpeedTest
https://iz.ru/1775426/valerii-kodacigov/skorost-otstupa-v-rf-hotat-zapretit-ispolzovanie-servisa-speedtest
🤡31🤣7
#prog #rust #rustlib #article
Designing A Fast Concurrent Hash Table
Статья о дизайне papaya, многопоточной в основном lock-free хэш-мапы с упором на пропускную способность на операциях чтения из мапы и предсказуемые задержки (без пиков). Также пока что является, кажется, единственной подобной структурой данных, которую можно использовать из асинхронного кода.
Для того, чтобы избежать пиков задержки, использует инкрементальное изменение размера — и это одно из немногих мест, где используются блокировки.
Так как многопоточная мапа по определению не может иметь аналог entry API (по крайней мере, без кучи тонкостей из-за потенциальных гонок с другими потоками), papaya предоставляет операции по атомарной модификации отдельных записей, использующие переданные коллбеки для выполнения нужной операции. Для наиболее ходовых операций есть отдельные методы, а для тех, которые в эти методы не укладываются, есть операция compute. Коллбек, переданный в этот метод, должен возвращать значение типа Operation, описывающий требуемое действие:
В конце автор сравнивает свою реализацию с другими подобными библиотеками для Rust и поясняет, почему может иметь смысл использовать их вместо papaya.
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.
Ibraheem Ahmed
Designing A Fast Concurrent Hash Table
I recently released papaya, a fast and feature-complete concurrent hash table for Rust. In this post I want to dive into the design and research that went into creating it, as well as why you might consider using it over existing solutions.
🔥7❤5
#prog #rust #rustreleasenotes
Вышла версия Rust 1.82.0! Как всегда, тут только избранные части, а полный ченджлог отдельно.
▪️Теперь в некоторых случаях можно использовать pattern matching, не упоминая ненаселённые паттерны:
▪️Добавили новый синтаксис, который позволяет явно указать, какие лайфтайм-параметры будут использованы для обобщённых параметров типа
▪️Стабилизировали операции на числами с плавающей точкой в const fn. В качестве не вполне приятного дополнения const fn теперь могут возвращать разные результаты в о время компиляции и в рантайме. С другой стороны, в настоящий момент эта оговорка существует лишь из-за тонкостей насчёт гарантий битового представления NaN. Если вас это не интересует (а так оно, скорее всего, и есть), то const fn продолжают сохранять равенство рантайм и компилтайм поведения.
▪️Стабилизировали операции для взятия адреса place expression без создания промежуточной ссылки:
▪️В Rust добавили ключевое слово
▪️Макрос
▪️Некоторые атрибуты — например,
С edition 2024 (да, ещё не стабилизированной) подобные атрибуты нужно будет помечать, как
В предыдущих edition по соображениям обратной совместимости это не требуется, но есть соответствующий линт (по умолчанию выключенный).
⬇️⬇️⬇️
Вышла версия 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. Некоторые из них:
🔸
🔸std::thread::Builder::spawn_unchecked —
🔸
🔸Временами нужная std::iter::repeat_n. В отличие от
🔸...Но чуть менее нужная, поскольку
🔸Функции на умных указателях для выделения неинициализированной памяти (new_uninit/new_uninit_slice) и соответствующие небезопасные функции для утверждения инициализированности (assume_init/assume_init). Есть для
🔸
▪️Для cargo теперь доступна команда
🔸
{Rc,Arc}::make_mut()
теперь работает с другими unsized типами: Path
, OsStr
и CStr
.🔸std::thread::Builder::spawn_unchecked —
unsafe
функция для запуска потоков без проверки времени жизни. Не очень нужная функция сама по себе, но позволяет строить поверх 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
для отображения информации о пакете. Удобнее, чем читать непосредственно манифест.doc.rust-lang.org
Builder in std::thread - Rust
Thread factory, which can be used in order to configure the properties of a new thread.
👍11❤🔥1🥰1
Forwarded from RustCon - конференция по языку программирования Rust
Друзья, до RustCon еще полтора месяца и наверняка кое-кто из вас думает, что времени для покупки билетов достаточно. Это правда, но хотим напомнить, что через две недели цена на них увеличится.
Лучше забронировать себе место на конференции прямо сейчас. Сэкономленная сумма наверняка пригодится вам на афтепати😊 Билеты пока-еще-со-скидкой на сайте.
А еще вы можете посмотреть доклады с прошлого года — они выложены в нашем канале на YouTube и до сих пор причиняют немало пользы. До встречи 6 декабря в Москве!
Лучше забронировать себе место на конференции прямо сейчас. Сэкономленная сумма наверняка пригодится вам на афтепати
А еще вы можете посмотреть доклады с прошлого года — они выложены в нашем канале на YouTube и до сих пор причиняют немало пользы. До встречи 6 декабря в Москве!
Please open Telegram to view this post
VIEW IN TELEGRAM
🖕4❤2🍌1
Forwarded from Записки злого ГМа
#неігрове не забути потім в журнал обліку журналів записати😐
😁7🫡4🌚1
Forwarded from There will be no singularity
This media is not supported in your browser
VIEW IN TELEGRAM
🌚17😁3❤🔥1
Forwarded from Астапов Павел
🤖Депутатские хроники🤖
🍏 «ГОСТ на единый подарок для всех новорожденных страны разработают в России в 2025 году. Об этом сообщила Татьяна Буцкая».
🇷🇺 «На форуме "Моя семья - моя крепость" в Тюмени она представила каталог, в котором указаны товары с государственной символикой, отечественного производства, которые могут войти в набор для новорожденного».
🇷🇺 "Это не просто российские производители, это когда патриот с рождения, это когда у тебя триколор, герб, уже первая твоя одежда, которая говорит о том, что ты родился в России, что ты нужен для России, ты важен, тебя уже с рождения любят. <…> Мы очень хотим, чтобы каждый ребенок, который родился в любом регионе, мог получить такой подарок", - сказала она.
🎉 Шутки про патриотизм с роддома вышли на новый уровень.
😌
📎 Источник
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡5😍4😁3💩3🥴2
Forwarded from RuGG. Скандалы, игры, повесточка
Немного забавного Твиттера. Джонатан Блоу, программист и геймдизайнер Braid, пожаловался, что каждый раз, как ему присылают ссылку на GitHub, то у людей могут быть месяцы или годы без коммитов. После этого Джонатану начали пояснять, что у людей бывает работа, семья и прочие радости жизни, и они не могут 24/7 работать на какими-то неоплачиваемыми проектами, чтобы заливать их на ГитХаб.
И данный Твит просто забавен в свете того, что переиздание Braid, Anniversary Edition, было отложено на ТРИ ГОДА после анонса даты выхода, а основная критика переиздания состояла в том, что создатель пообещал отдельный мир с новыми головоломками, и расширенные комментарии, но на деле новые уровни были либо ни о чём, либо вообще ранними версиями уже существующих.
Быть может, если не тратить всё своё время на GitHub, то получится успешно заниматься реальной работой.
И данный Твит просто забавен в свете того, что переиздание Braid, Anniversary Edition, было отложено на ТРИ ГОДА после анонса даты выхода, а основная критика переиздания состояла в том, что создатель пообещал отдельный мир с новыми головоломками, и расширенные комментарии, но на деле новые уровни были либо ни о чём, либо вообще ранними версиями уже существующих.
Быть может, если не тратить всё своё время на GitHub, то получится успешно заниматься реальной работой.
👍12🤡5😁2🤔1