#prog #rust #rustasync #article
Common Mistakes with Rust Async
Common mistake №0: using async Rust
Ну а если серьёзно — неплохая подборка неочевидных ошибок при использовании async. Правда, если вы читали Блог*, как минимум часть из них вам наверняка будет уже знакома.
Common Mistakes with Rust Async
Qovery
Common Mistakes with Rust Async
At Qovery, we start to have our fair share of Async Rust and to say the least it is not without caveats. Let’s be honest, Async Rust is hard. It has many more rough edges than Sync Rust and requires a different mindset, but it solves a problem space well…
Блог*
#rust #article Why Rust in Production? (советую включить режим чтения в вашем браузере, фон ядовито-оранжевого цвета) Статья о взгляде на Rust со стороны компаний. The intent is to provide an honest look at Rust's practicality for production to help decision…
#rust #article
Adopting Rust: the missing playbook for managers and CTOs
Взгляд на привнесение Rust в разработку с точки зрения руководящих должностей.
Adopting Rust: the missing playbook for managers and CTOs
Взгляд на привнесение Rust в разработку с точки зрения руководящих должностей.
Mainmatter
Adopting Rust: the missing playbook for managers and CTOs - Mainmatter
You want to kick off your first Rust project. How do you make it a success? Here is a playbook for building your first Rust team and, if all goes well, scaling it up.
👍1
#prog #amazingopensource
wuffs (Wrangling Untrusted File Formats Safely) — язык (и компилятор) для написания программ обработки данных, который компилируется в C. Язык намеренно весьма ограниченный — в частности, в нём отсутствует IO и способы динамически управлять памятью, да и в принципе доступ к сисколам. Язык также memory safe: компилятор отказывается компилировать программу, в которой индексы выходят за границу массива (а также если в ней где-то есть переполнение).
Несмотря на ограниченность языка и намеренно простые проверки диапазонов переменных, на практике он с успехом подходит для написания (де)кодировщиков медиаформатов — реализации на wuffs по производительности обгоняют существующие реализации на C и Rust.
(thanks @experimentalchill за привлечение внимания к этой вещи — взято из поста про ошибки реализации в CRC32 в Linux)
wuffs (Wrangling Untrusted File Formats Safely) — язык (и компилятор) для написания программ обработки данных, который компилируется в C. Язык намеренно весьма ограниченный — в частности, в нём отсутствует IO и способы динамически управлять памятью, да и в принципе доступ к сисколам. Язык также memory safe: компилятор отказывается компилировать программу, в которой индексы выходят за границу массива (а также если в ней где-то есть переполнение).
Несмотря на ограниченность языка и намеренно простые проверки диапазонов переменных, на практике он с успехом подходит для написания (де)кодировщиков медиаформатов — реализации на wuffs по производительности обгоняют существующие реализации на C и Rust.
(thanks @experimentalchill за привлечение внимания к этой вещи — взято из поста про ошибки реализации в CRC32 в Linux)
GitHub
GitHub - google/wuffs: Wrangling Untrusted File Formats Safely
Wrangling Untrusted File Formats Safely. Contribute to google/wuffs development by creating an account on GitHub.
👍8❤🔥2
Forwarded from 💞Gay Mems🔥 | Гей мемы 💪
Анекдот дня: Всероссийский научно-исследовательский геологический институт (ВСЕГЕИ) изменил логотип на сайте. Аббревиатура ВСЕГЕИ пропала, вместо неё появилась надпись «Институт Карпинского».
В Твиттере предполагают, что всё из-за нового закона о запрете ЛГБТ-движения. ВСЕГЕИ всё, Сергеям приготовиться!
В Твиттере предполагают, что всё из-за нового закона о запрете ЛГБТ-движения. ВСЕГЕИ всё, Сергеям приготовиться!
😁20👍1
Forwarded from Segment@tion fault
- приглашаем вас к нам на работу, у нас отличный коллектив, интересные проекты, каждому выдаём макбук
- надбавка будет?
- за что?
- за работу на макбуке
- надбавка будет?
- за что?
- за работу на макбуке
👍29💩9❤🔥3🤡3👎2🌚2💯2
Forwarded from I’m CEO, beach
Команда, скоро день зарплаты. Для меня это очень грустный день. Мне жаль снова осознавать, что вы работаете ради какой-то еды и одежды, а не ради нашей крутой идеи. Ну и денег тоже жалко.
🌚13💯1
#prog #rust хайлайты:
▪️Добавили линт на биндинги типа
▪️Стабилизировали ptr::addr_eq, которая сравнивает указатели по адресам без учёта метаданных.
▪️На
▪️Парсер теперь обрабатывает слайсинг с синтаксисом Python и предлагает использовать эквивалентный нативный синтаксис.
▪️К реализациям арифметических операций добавили #[track_caller].
▪️Серьёзность
▪️
▪️Стабилизировали {Rc, Arc}::unwrap_or_clone. Эти функции достают значение из счётчика ссылок при помощи клонирования, но избегают этого, если значение единственно.
▪️Реализация Vec::dedup_by теперь делает два прохода по вектору и начинает второй проход только в том случае, если элементы действительно нужно удалять. Это позволяет делать меньше работы для векторов уникальных значений, а также немного ускоряет все остальные случаи за счёт того, что теперь при перемещении элементов вместо
▪️Добавили линт на биндинги типа
()
. Линт не срабатывает, если ()
есть явно с одной или иной стороны или тип явно записан, как ()
, также не работает на коде из макросов.▪️Стабилизировали ptr::addr_eq, которая сравнивает указатели по адресам без учёта метаданных.
▪️На
NonNull
добавили методов с обычных указателей.▪️Парсер теперь обрабатывает слайсинг с синтаксисом Python и предлагает использовать эквивалентный нативный синтаксис.
▪️К реализациям арифметических операций добавили #[track_caller].
▪️Серьёзность
IMPLIED_BOUNDS_ENTAILMENT
подняли с обычного линта до фатальной ошибки компиляции. Этот линт указывает на ситуации, когда реализация трейта из-за implied bounds (таких, как 'b: 'a
в &'a &'b T
) является более ограничительной, чем декларация трейта.▪️
LinkedList
добавили retain{, _mut}▪️Стабилизировали {Rc, Arc}::unwrap_or_clone. Эти функции достают значение из счётчика ссылок при помощи клонирования, но избегают этого, если значение единственно.
▪️Реализация Vec::dedup_by теперь делает два прохода по вектору и начинает второй проход только в том случае, если элементы действительно нужно удалять. Это позволяет делать меньше работы для векторов уникальных значений, а также немного ускоряет все остальные случаи за счёт того, что теперь при перемещении элементов вместо
ptr::copy
используется ptr::copy_nonoverlapping
.GitHub
Add allow-by-default lint for unit bindings by jieyouxu · Pull Request #112380 · rust-lang/rust
Example
#![warn(unit_bindings)]
macro_rules! owo {
() => {
let whats_this = ();
}
}
fn main() {
// No warning if user explicitly wrote `()` on either side.
let expr = (...
#![warn(unit_bindings)]
macro_rules! owo {
() => {
let whats_this = ();
}
}
fn main() {
// No warning if user explicitly wrote `()` on either side.
let expr = (...
🎉5