Українська Rust Спільнота – Telegram
Українська Rust Спільнота
500 subscribers
125 photos
1 video
221 links
Вітаємо на каналі Rust 🦀 ентузіастів!
Тут ви знайдете актуальну інформацію про мову програмування Rust.
Чат: https://news.1rj.ru/str/rustlang_ua
Канал англійською: https://news.1rj.ru/str/learn_rust
Запропонувати новину: @wandalen_me
Download Telegram
Друзі, раді опублікувати наступну доповідь “Fuzz testing in Rust” із UA Rust Conference 2023 🦀
Тут доповідач Григорій Гонта розповідає:

▪️What is fuzz testing
▪️When you need it
▪️Available tools
▪️Setup initial input
▪️Understand output
▪️Demo time

Переходьте за посиланням та ставте вподобайку!
🔥114
Наступна 🎤 доповідь про “Property-Based Testing”, яка була на UA Rust conference 2023 від Сергія Потапова. У ній доповідач розповідає:

▪️Що таке property-based тести та як вони працюють
▪️У чому різниця між property-based тестами та fuzzing'ом
▪️Існуючі бібліотеки для property-based тестів та їх порівняння
▪️Наглядний приклад використання бібліотек
▪️На що варто звернути увагу

Переходь за посиланням та став вподобайку!
🔥10👌1
Forwarded from Kostyantyn Wandalen
Прекомпільований serde_derive макрос та ризики пов'язані з ним

З версії 1.0.171 serde_derive використовує прекомпільований бінарник макросу. Процедурні макорси виконуються на машині розробника, як звичайна програма та генерують код на основі вхідних аргументів. serde дуже популярний крейт і це означає, що скомпільований автором бінарник буде виконуватися на мільйонах машин, що потенційно є загрозою безпеці, бо такий бінарник має повний доступ до середовища в якому збирається програма і якщо відбудеться підміна файла на сервері то середовище розробника разом із всіма його секретами стане доступним зловмиснику.

Зі слів, dtolnay, це було зроблено з метою пришвидшення компіляції проєктів, які використовують `serde. Проте такий хід dtolnay, веде до порушення декількох умов контракту між розробником FOSS та користувачами, а саме:

- прозорість процесу компіляції - це безпекові ризики
- обіцяна кросплатформеність, - бо бінарник був зібраний лише для x64 систем.
- версіонування змін, зміна лише "патчу" 1.0.170 -> 1.0.171 порушує semver домовленість і потенційно ламає системи в продакшені ( саме так світ і дізнався про зміну сховану під капотом )

Створюється враження, що цією зміною dtolnay намагався змусити мейтнейнрів crates.io зробити зміни, котрі необхідні для оптимізації швидкості збірки. І хоча такі мотиви загальнокорисні, але методи їх досягнення через нав'язування, а також тон спілкування лишають осад, а порушення договору робить появу форка serde ймовірною.

Навіть після відкату цих нововведень мейнтейнер serde стоїть на своєму, що можна зрозуміти зокрема із опису релізу 1.0.184.
👾4🔥2😱1
Що нового в Rust 1.72.0

Мова

* Змінена поведінка #![cfg(FALSE)] - раніше він видаляв всі атрибути з, а
видаляє лише атрибути нижче себе
* Лінти clippy перенесено в Rust: undropped_manually_drops, invalid_utf8_in_unchecked, cast_ref_to_mut, cmp_nan
* Прибрана вимога мати асоційовані типи з Self: Sized баундом на dyn Trait об'єктах

Компілятор

* Імена об'єктів які конфігуруються фічами тепер видно в діагностиці (наприклад використання Deserialize без фічі derive в serde буде краще описуватись)
* Всі нативні бібліотеки тепер примусово лінкуються статично, якщо збирається статична бібліотека
* Виправлення відображення діагностичної інформації про 128-бітних enum'ів

Бібліотеки

* Детальніше розписана документація для thread::{park, unpark}, HashSet::insert, io::Write::write
* Прибрані явні T: Sized баунди на BufReader<T>, BufWriter<T> та LineWriter<T>
* Повернення Ok при спробі вбити процес який вже завершився
* Додана імплементація PartialOrd на Vec для різних алокаторів
* Використання u128 для TypeId хешу замість u64

Документація

* Оновлена гарантія часу виконання select_nth_unstable з O(n) на O(n log n)
* Тепер пробіл можна використовувати як сепаратор шляху, так само як ::
* Тип об'єктів тепер видно в пошуку і текстом, а не просто кольором, як раніше
* Фіча пошуку в документації, як анбоксінг - Vec<i32> можна знайти по i32
* Пошук слайсів та масивів тепер можна робити по []

Cargo

* При запуску тестів документації поточна директорія ставиться на сам крейт в воркспейсах, а не увесь воркспейс
👍53🔥2
Хотіли асинхронність? Зробіть самі!

Відправтесь в глибини асинхронного рантайму та дізнайтесь що таке epoll, як він допомагає нам будувати аплікації що виконують декілька задач одночасно, як за допомогою нього написати свій рантайм, за що треба любити вже готові async/await елементи синтаксису та як боляче було без них!

Подорож починається з простого блокуючого вебсервера та закінчується асинхронним, в якого під капотом абстракція на абстракції та з абстракцією абстрагуються. Пропонуємо кожному ознайомитись з цією статтею, особливо, якщо вам цікаво розібратися як async працює під капотом.

Повна стаття тут
Приємної подорожі!
🔥21🥰4
🔥Наступна доповідь із UA Rust Conference 2023 - “Low latency backend (UDP pub/sub)”!
Максим Воробйов у ній розкриває такі питання:

▪️What is low latency?
▪️What problems are we trying to solve?
▪️Deep dive to microseconds level
▪️Discover CPU cache and system scheduler impact

Переходь за посиланням, став вподобайку та підписуйся на канал 😉
🔥10👍2
RustRover - A Standalone Rust IDE by JetBrains

Компанія JetBrains анонсує випуск RustRover - окремого середовища розробки (IDE) для Rust 🦀.

📌 Функціонал RustRover можна встановити як плагін до IntelliJ IDEA Ultimate та CLion. Компанія не планує додавати фічі їхнього опенсорсного плагіна, вони його залишать відкритим, але усі нові фічі будуть у rr. 

📌 Як і багато інших IDE від JetBrains, середовище буде платним. Проте, RustRover буде безкоштовним під час Public Preview, а модель ліцензування буде остаточно уточнена ближче до дати комерційного релізу.

📌 Окрім цього, компанія JetBrains приєднюється до Rust Foundation та обіцяє підтримувати їхні ініціативи у розвитку.

Такі кроки свідчать лиш про те, що компанія вірить у майбутнє та потенціал екосистеми і спільноти Rust 🔥

Детальніше читайте у статті. А що ви думаєте про це?
🔥192👍1👏1🙉1
Українська Rust Спільнота pinned «RustRover - A Standalone Rust IDE by JetBrains Компанія JetBrains анонсує випуск RustRover - окремого середовища розробки (IDE) для Rust 🦀. 📌 Функціонал RustRover можна встановити як плагін до IntelliJ IDEA Ultimate та CLion. Компанія не планує додавати…»
Вчора відбулася перша лекція та практичні заняття із курсу “Мова програмування Rust” у Києво-Могилянській Академії! 💥

Вдячні факультету Інформатики за можливість запуску вибіркового курсу, на який записалось 33 студенти! Навчальну програму склали наші євангелісти, а викладає наш лідер Костянтин.

Це перший крок до інтеграції Rust 🦀 в систему освіти України та він би не був можливим без праці та сприяння Павла і Андрія, а також інших активних резидентів нашої спільноти. Сподіваємось, студентам припаде Rust до душі та ми побачимо багатьох з них серед нас 🙂
29👍4🔥4👀2
Що нового в Rust 1.73.0

Мова

* Новий лінт clippy що повідомляє, що вказівник на функцію ніколи не може бути null [link]
* Додане попередження про виклики функцій, що не виконують операцій (noop)
[link]
* Додана підтримка передачі блоків для try та async в макросах [link]
* Додане попередження до unconditional_recursion при рекурсивному дропі [link]
* Покращений лінт що виникає при невалідному касту посиланнь (наприклад self as *const Self as *mut Self що є UB) [link]

Компілятор

* Додана підтримка .comment секцій в скомпільованому бінарнику яка містить версію компілятора [link]
* Стабілізація thiscall ABI [link]
* Зроблена перевірка лайфтаймів на impl відносно лайфтаймів трейту, тепер статичні лайфтайми не перекривають лайфтайми зазначені в impl [link]
* Зроблена перевірка типу для слайс паттерну для масивів з фіксованим розміром [link]
* Прибрана дефолтна імплементація auto трейтів, якщо існує явна [link]
* Додані нові таргети компіляції: teeos, csky, riscv64-android, riscv64gc-hermit, unikraft, ohos, та wasm32-wasi-threads з підтримкою  std::thread::spawn [link]

Бібліотеки

* Додані Read, Write, та Seek імплементації для Arc<File> [link]
* Змерджили функціонал io::Sink в io::Empty, тепер io::Empty імплементує io::Read + io::Write [link]
* Додана дефолтна імплементація для ExitStatus [link]
* Змінений дефолтний формат повідомлення про паніку, тепер текст помилки буде на наступному рядку, значно покращує читабельність [link]
* Поліпшені повідомлення про паніку в макросах assert_eq! та assert_ne! [link]

Cargo

* Виправлення енкодінгу параметрів посилання для SourceId в Cargo.lock [link]
* Додана помилка якщо cargo:: використовується в кастомному build.rs скрипту [link]

Сумістність

* Оновлена мінімальна версія LLVM до 15 [link]
* Додана перевірка на визначність типу при повернені impl Trait (прозорий тип невідомий до повернення) [link]

Та деякі внутрішні зміни: оптимізації, оновлення до LLVM 17, новий шаблон для issues.
🔥13🦄1
Українська Rust Спільнота pinned «Що нового в Rust 1.73.0 Мова * Новий лінт clippy що повідомляє, що вказівник на функцію ніколи не може бути null [link] * Додане попередження про виклики функцій, що не виконують операцій (noop) [link] * Додана підтримка передачі блоків для try та async…»
Ferrocene для Rust в промислових середовищах

Чи ви вже чули про альтернативу Rust компілятору сертифіковану для розробки у автомобільному та промисловому середовищах?

Наразі Ferrocene перебуває на завершальних стадіях кваліфікації, яка є більше юридичною ніж технічною вимогою. Ця кваліфікація гарантує відсутність недопустимих ризиків, пов'язаних із некоректною роботою електричних або електронних систем, а також забезпечує безпеку від потенційних ушкоджень або шкоди здоров'ю людей в результаті аварій чи впливу на навколишнє середовище. Додатково, в майбутніх планах проєкту передбачено розширення кваліфікацій для залізничних та аерокосмічних стандартів.

Протягом двох років розробки, компілятор став готовим до використання в комерційних проєктах. Він ліцензований під Apache 2.0 & MIT, так само як і звичайний rustc. Ferrocene буде пропонуватися за ціною €25 на місяць за одне робоче місце. Хоча ліцензія не відмінна від rustc, можна користуватися Ferrocene без підтримки і з публічною документацією. Однак, приватна документація буде доступна лише для клієнтів компанії. Якщо ви плануєте реалізовувати продукт у автомобільній сфері, покупка Ferrocene є обов'язковою, адже до комплекту входять також сертифікати кваліфікації, необхідні для комерційного використання.

Не важко передбачити зростаючий попит на Rust розробників у сферах, таких як автомобільна промисловість, промислова робототехніка, системи управління для літаків та потягів, а також у дослідницьких роверах.

Репозиторій компілятора можна знайти тут
Та публічну документацію за посиланням
22👍2🔥1
Вчора наші євангелісти Павло та Микола відвідали Київську Школу Економіки із гостьовою лекцією для студентів “Знайомство із Rust та її алгебраїчними типами”💥
Також ми зібрали у студентів фідбек та розіграли книгу по Rust 🎁.

В планах налагодити співпрацю й із іншими передовими університетами України.
👍17🔥9
Наш Євангеліст Ігор та активний учасник спільноти Назар відвідали із гостьовою лекцією Український Католицький Університет у Львові! 🔥
Вони провели доповідь на тему “Знайомство із Rust та алгебраїчними типами даних, а також розіграли книгу по 🦀 Rust серед активних студентів!

Радіємо, що все більше провідних університетів України відкриті до співпраці із нашою спільнотою 😊
15👍5
💥 Доповідь "DMBS ecosystem of Rust" із UA Rust Conference 2023!
Доповідач Максим Макаричев розповів про:

▪️Choice Dilemma
▪️Abstraction Layers
▪️The Basic Layer (bindings, pure rust)
▪️Database abstraction layer
▪️ORM (Diesel and SeaORM)

Переходь за посиланням, став вподобайку та підписуйся на канал 😉
🔥14
Цього тижня наш Євангеліст Ігор був одним із спікерів на конференції Franko IT Day у ЛНУ ім. Івана Франка.

Ігор розповів про Rust та алгебраїчні типи даних студентам факультету електроніки та комп’ютерних технологій. Подискутували, як Rust може замінити С++ та розіграли книгу по Rust серед тих, хто пройшов невеликий квіз.

Продовжуємо популяризувати Rust серед українських університетів 🦀💪
12👍6
🔥 Наступна доповідь, яка пролунала на UA Rust Conference 2023 - “Evolution of blockchains written in Rust”.
Тут доповідач Олександр Михайленко розкриває такі питання:

▪️ який шлях ми пройшли у світі блокчейнів
▪️ оцінка стигми навколо технології
▪️ що може нам запропонувати світ Rust-based блокчейнів сьогодні
▪️ куди технологія може розвиватись, а головне - до чого тут ми

Переходь за посиланням, став вподобайку та підписуйся на канал 😉
6🔥3
У суботу 18 листопада відбудеться зустріч групи Rust User Group Tbilisi!

Ця зустріч збере 🦀 Rust ентузіастів будь-якого рівня для спілкування, обміну знаннями та вивчення Rust у всій його красі.
На захід запрошені спікери із невеличкими доповідями, а також вас очікують частування та подаруночки 💥. Мова спілкування - англійська.

Щоб дізнатись більше - переходьте за посиланням та не забудьте зареєструватись!
👍102🥱2
Коротко про зміни в Rust 1.74.0

Окрім стабілізації великої кількості фіч стало можливо вказувати директиви, лінтеру та clippy, не в lib файлі, а в cargo файлі

Тому ваших сотня lint та clippy директив можливо покласти в cargo.toml файл:

[lints.rust]
rust_2018_idioms = "deny"
missing_docs = "deny"


Замість того щоб дблювати в кожному lib.rs файлі:

#![deny(rust_2018_idioms)]
#![deny(missing_docs)]


Також зверніть увагу на стабілізацію Saturating за допомогою, якої можливо організувати математику, котра робить clamp до максимального значення замість переповнення:

let three = Saturating(3_u8);
let one = Saturating(1_u8);
assert_eq!((three + one).0,3_u8);


А також стабілізовані розширені можливості переадресації stdout/stderr підпроцеса.

Про повний перелік змін читайте тут
Що оновитися до останньої версії виконайте команду
rustup update
👍7🔥1
🔥 Збирамо на 2 ДРОНИ від Української Rust Спільноти! 🇺🇦🦀

Екіпаж фпвшників Сини Грому дуже просять про допомогу.
FPV-дрони вже показали, що можуть змусити русню ходити й озиратися, відтягнути техніку і живу силу подалі. Дрон буде носити важкі подаруночки на 10км
Один багаторазовий дрон, який обрали, коштує 28 тис грн, під нього ще треба аккумулятори за 3300 грн. Тому на 2 дрони та батареї до них НАША ЦІЛЬ - 65 тис. грн

📌Банка: https://send.monobank.ua/jar/j9txBppAe

Сторінка представниці підрозділу.

Якщо наша спільнота назбирає на дрони, то їх зможуть застилізувати з нашим лого і зроблять для нас пару відосиків.

Тож, давайте, друзі растеціанці, зробимо свій вклад та допоможемо нашим бійцям 💙💛

UPD: ви також можете придбати власний дрон-камікадзе за 13к із власною кастомізацією на ньому)
👍11🔥41🥰1