8052
Rust programming language По всем вопросам- @haarrp @ai_machinelearning_big_data - машинное обучение @programming_books_it - бесплатные it книги @pythonl - 🐍 @ArtificialIntelligencedl - AI @datascienceiot - ml 📚 #VRHSZ
🦀 Rust понижает поддержку 32-битной сборки для Windows (i686-pc-windows-gnu)
26 мая 2025 года команда Rust официально объявила: начиная с версии Rust 1.88.0, цель i686-pc-windows-gnu (32-битная сборка под Windows с GNU toolchain) больше не будет Tier 1. Её статус понижен до Tier 2 с поддержкой хост-инструментов.
🔧 Что изменится:
• Бинарники и стандартная библиотека по-прежнему будут доступны через rustup
• Однако автоматическое тестирование на CI сокращается
• Возможны баги и сниженная стабильность без гарантий быстрой починки
📉 Почему так:
• Нет активных мейнтейнеров для *-windows-gnu целей
• Сложно отлаживать ошибки без специалистов
• 32-битная сборка почти не используется в сравнении с x86_64-pc-windows-gnu
📌 Что дальше:
Если ситуация не изменится, возможен полный отказ от поддержки этой цели. Сообщество Rust призывает желающих подключиться к поддержке *-windows-gnu.
📖 Подробнее:
https://rust-lang.github.io/rfcs/3771-demote-i686-pc-windows-gnu.html
@rust_code
🦀 Rust и магия динамики: как создать Python‑подобный API с помощью Serde
В новой статье *Ohad Dravid* демонстрирует, как в языке Rust можно добиться удобства динамического доступа к данным — в духе Python — но без потери строгой типизации и производительности. Всё это — с помощью мощной библиотеки serde.
📌 Статья: *“A Rust API Inspired by Python, Powered by Serde”*
🔗 [ohadravid.github.io/posts/2025-05-serde-reflect](https://ohadravid.github.io/posts/2025-05-serde-reflect/)
🔍 Проблема
Python позволяет обращаться к произвольным полям объектов, например при работе с WMI:
for fan in c.Win32_Fan():
print(fan.Name, fan.DesiredSpeed)
get_attr, делать match, проверять типы и всё это каждый раз.serde и аккуратной архитектуры.raw_api.rs — примитивный уровень
pub enum Value { Bool(bool), I1(i8), UI8(u64), String(String), Object(Object) }
impl Object {
pub fn get_attr(&self, name: &str) -> Value { /* ... */ }
}
match, приведения типов, извлечения значений.v1_api.rs — пользователь сам описывает структуру + ручная десериализацияstruct, и сам реализует для него трейт, чтобы распаковать поля.v2_api.rs — Serde‑магию включеноquery() возвращает Vec<T>:
#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Fan {
name: String,
active_cooling: bool,
desired_speed: u64,
}
let res: Vec<Fan> = query();
for fan in res {
if fan.active_cooling {
println!("Fan `{}` is running at {} RPM", fan.name, fan.desired_speed);
}
}
match serde::Deserialize meta.rs, который: Deserialize, можно использовать как результат запроса.serde-reflection для полного introspection serde — это не только про производительность и безопасность, но и про удобный API, если правильно подойти к задаче. Этот проект показывает, как можно сделать гибкий, декларативный, типобезопасный интерфейс для работы с данными — без костылей и магии рантайма.
🦀 Как упростить изучение Rust: советы от Corrode
Rust — мощный и надёжный язык, но его обучение часто вызывает трудности даже у опытных разработчиков. В свежем блоге [Corrode Rust Consulting](https://corrode.dev/blog/flattening-rusts-learning-curve/) делятся рекомендациями, как сгладить кривую обучения Rust без боли и выгорания.
🔑 Основные советы:
- Примите особенности языка
Не сопротивляйтесь системам владения и заимствования — воспринимайте их как инструменты безопасности, а не ограничения.
- Начинайте с "грязных" решений
Используйте clone(), unwrap(), expect() на старте — позже замените на идиоматичный и безопасный код.
- Учитесь постепенно
Разбивайте обучение на этапы, пишите много маленьких программ в [Rust Playground](https://play.rust-lang.org/).
- Читайте ошибки компилятора вдумчиво
В Rust компилятор — это не враг, а учитель. Он подсказывает, как мыслить «по-растовски».
- Пишите вручную, не полагайтесь на IDE
Автокомплит мешает усвоению синтаксиса — набирайте код вручную, чтобы лучше понять структуру.
- Проектируйте через типы
Rust даёт мощную систему типов — используйте её как инструмент проектирования, а не просто проверки.
📖 Полный текст: https://corrode.dev/blog/flattening-rusts-learning-curve/
Хороший Rust-разработчик — не тот, кто никогда не ошибается, а тот, кто умеет читать сообщения компилятора и не сдаваться.
🦀 Задача на Rust: "Найди пропавшее число"
Условие
У тебя есть Vec<String>, в котором находятся строки от "1" до "100", но одно число отсутствует.
Найди его без использования sort, HashMap, iter().sum() и т. д.
Можно использовать parse::<u32>().
Формат функции:
fn find_missing_number(data: &Vec<String>) -> u32
fn find_missing_number(data: &Vec<String>) -> u32 {
let mut xor_full = 0;
let mut xor_data = 0;
for i in 1..=100 {
xor_full ^= i;
}
for s in data {
if let Ok(n) = s.parse::<u32>() {
xor_data ^= n;
}
}
xor_full ^ xor_data
}
fn main() {
let mut data: Vec<String> = (1..=100)
.filter(|&x| x != 42)
.map(|x| x.to_string())
.collect();
use rand::seq::SliceRandom;
let mut rng = rand::thread_rng();
data.shuffle(&mut rng);
let missing = find_missing_number(&data);
println!("Пропущено: {}", missing); // Ожидается 42
}
[dependencies]
rand = "0.8"
a ^ a = 0, 0 ^ b = b.
Читать полностью…
📌 napi-rs — мост между Node.js и Rust. Это фреймворк для создания нативных расширений Node.js на Rust через Node-API, без необходимости работать с node-gyp или другими инструментами сборки C++.
Достаточно добавить аннотацию #[napi] к Rust-функциям и они становятся доступными в JavaScript как обычные модули. Под капотом napi-rs автоматически генерирует binding-код, поддерживает асинхронные операции через tokio и даже предоставляет CLI для удобной сборки. Собранные `.node`-файлы работают на Windows, macOS, Linux и даже Android.
🤖 GitHub
🛡Децентрализованные приложения (dApps) — от идеи до реального продукта
Вы узнаете, как создаются современные приложения на блокчейне — без серверов, посредников и единого центра управления.
Простыми словами разберем:
- Что такое dApps и чем они отличаются от обычных мобильных приложений.
- Как превратить свою идею в работающий блокчейн-проект — пошаговый план.
- Какие инструменты используют разработчики (и как в этом разобраться без технического бэкграунда).
На живом примере вместе пройдем путь от задумки до готового прототипа — вы увидите, как выглядит процесс разработки "под капотом".
👉 Регистрация и подробности о курсе “Разработка децентрализованных приложений”
https://otus.pw/xxlS/?erid=2W5zFJSTFWx
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🎉 С днём рождения, Rust! 🦀
10 лет с момента выхода Rust 1.0 — языка, который подарил миру безопасное, быстое и конкурентное программирование.
Отпразднуем вместе с невероятным сообществом и тысячами проектов, созданных на Rust!
#rust #Rust10Years #программирование
https://blog.rust-lang.org/2015/05/15/Rust-1.0/
🚀 Nova — новый движок JavaScript/Wasбm на Rust. Этот экспериментальный проект пытается переосмыслить архитектуру JS-движков через призму data-oriented design. Вместо классических указателей Nova использует индексы и векторы, чтобы минимизировать накладные расходы и улучшить кэширование.
Пока движок далёк от готовности, но подход к разработке вызывает интерес, например safepoint garbage collector, построенный на особенностях системы заимствований Rust — это попытка максимально приблизить структуру кода к ECMAScript-спецификации.
🤖 GitHub
🦀 Rust-задача с подвохом: “Ловушка безопасного кэша”
📘 Условие
Ты хочешь реализовать простой кэш — если значение уже вычислено, вернуть его, иначе — сохранить и вернуть.
Вот пример:
use std::collections::HashMap;
fn main() {
let mut cache = HashMap::new();
let key = "user_123".to_string();
let result = get_or_insert(&mut cache, &key, || {
println!("Computing...");
"result for user_123".to_string()
});
println!("Result: {}", result);
}
fn get_or_insert<'a, F>(map: &'a mut HashMap<String, String>, key: &str, compute: F) -> &'a String
where
F: FnOnce() -> String,
{
map.entry(key.to_string()).or_insert_with(compute)
}
or_insert_with(compute) и владении ключом..entry() требует ключ во владение (`String`), а key у нас — &str. or_insert_with происходит вызов compute(), который может вернуть ссылку на строку, но Rust не может доказать, что ссылка будет жить достаточно долго.&'a String, полученное из HashMap::entry, не может быть безопасно связано с временем жизни `map`, потому что key.to_string() создаёт временное значение, и lifetime не совместим.map.entry().or_insert_with() выглядит «канонично»
Senior Rust Developer в BlockSniper
Удалёнка | full-time | 400–700K ₽ + премии
Мы лидеры в снайпинге токенов на Solana. Пишем трейдинг-ботов и высокоскоростные стратегии. Уже 4 года в деле, 50 человек в команде, работаем без бюрократии — только результат. Премии от прибыли: топы получают +300K к зп.
💻 Что важно:
— Опыт в Rust, Solana (Anchor, CLI, деплой)
— Знание JS/TS, понимание RPC/DApps/PoS
— Опыт с HFT, трейдингом или ботами
— Умение вести проект от идеи до продакшена
🧩 Ищем тех, кто не боится челленджей:
у нас нужно разбираться, предлагать, выстраивать. Самостоятельность — must-have. Взамен даём максимум свободы, зп и роста.
🎁 Можете быть уверены в:
— Конкурентной зп + доход от прибыли команды
— Полной удаленке, оплачиваемом отпуске и больничном
— Том, что мы вкладываемся в рост: обсуждаем бенефиты, помогаем развиваться
Напиши нашему HR Маргарите 👉 @m_dereviakina, если ищешь место, где можно развиваться, расти и хорошо зарабатывать.
С этим вашим Kubernetes отладка превратилась в квест на выживание!
Часами гребёшься в логах, метрики пляшут как попало, а деплой через Helmfile — вообще отдельный вид искусства.
Чтобы K8s помогал, а не топил в рутине, нужно понять, как он работает под капотом. Иначе — вечные страдания 🥲
➡️ Приходи на курс «Kubernetes для разработчиков» от Слёрма.
Там ты:
👉 Научишься нормально дебажить свои приложения прямо в Кубе
👉 Разберёшься с логами и метриками
👉 Подружишься с Helm’ом
👉 Наконец заведёшь CI/CD как надо
То есть получишь скиллы, чтобы работать с K8s в кайф.
📅 Старт — 26 мая
🔗 Запрыгивай на борт курса «Kubernetes для разработчиков» — пока есть места!
Реклама ООО «Слёрм» ИНН 3652901451
🛡Безопасность в разработке dApps: уязвимости и защита
На уроке мы разберем основные угрозы безопасности в децентрализованных приложениях (dApps) и научимся защищать смарт-контракты от атак. Вы узнаете, какие уязвимости наиболее распространены в Solidity, как хакеры эксплуатируют ошибки в коде и какие методы защиты можно применять. В практической части занятия мы рассмотрим реальные примеры атак на смарт-контракты, проанализируем их причины и предложим решения для их предотвращения.
В результате занятия получите:
- Понимание ключевых уязвимостей в Solidity и способах их эксплуатации
- Практические навыки защиты смарт-контрактов от атак
- Разбор реальных кейсов атак и методов их предотвращения
-Четкое представление о том, как разрабатывать безопасные dApps
👉 Регистрация и подробности о курсе “Разработка децентрализованных приложений”
https://otus.pw/t9GS/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
🔥CocoIndex — это современный ETL-фреймворк с открытым исходным кодом, предназначенный для подготовки данных к использованию в системах искусственного интеллекта. Он поддерживает пользовательскую логику трансформации и инкрементальные обновления, что делает его особенно полезным для задач индексации данных.
🔧 Основные возможности
- Инкрементальная обработка данных: CocoIndex отслеживает изменения в исходных данных и логике трансформации, обновляя только изменённые части индекса, что снижает вычислительные затраты.
- Поддержка пользовательской логики: Фреймворк позволяет интегрировать собственные функции обработки данных, обеспечивая гибкость при построении пайплайнов.
- Модульная архитектура: Встроенные компоненты для чтения данных (локальные файлы, Google Drive), обработки (разбиение на чанки, генерация эмбеддингов) и сохранения результатов (PostgreSQL с pgvector, Qdrant).
- Поддержка различных форматов данных: Поддержка текстовых документов, кода, PDF и структурированных данных, что делает CocoIndex универсальным инструментом.
🚀 Примеры использования
- Семантический поиск: Индексация текстовых документов и кода с эмбеддингами для семантического поиска.
- Извлечение знаний: Построение графов знаний из структурированных данных, извлечённых из документов.
- Интеграция с LLM: Извлечение структурированной информации из неструктурированных данных с помощью больших языковых моделей.
## ⚙️ Быстрый старт
1. Установите библиотеку CocoIndex:
pip install -U cocoindex
🦀 Компания System76 представила седьмую альфа-версию своей революционной DE COSMIC — полностью написанной на Rust альтернативы GNOME. Новый выпуск примечателен не только встроенным Wayland-композитором, но и уникальными режимами работы с окнами: гибридной мозаичной компоновкой и браузерным группированием вкладок.
Среди свежих изменений — улучшенная навигация между рабочими столами, экспериментальное дробное масштабирование для XWayland и тонкие настройки звука. При этом проект остаётся кроссплатформенным: пакеты уже доступны для Fedora, Arch, NixOS и даже нишевых дистрибутивов вроде Redox.
🔗 Ссылка - *клик*
@rust_code
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
Нерйросети t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
⚡️ Pydantic Core — Rust-ядро для валидации данных в Python. Этот низкоуровневый валидатор демонстрирует впечатляющую скорость: до 17x быстрее оригинальной реализации на чистом Python.
Хотя напрямую с ним обычно не работают (используя вместо этого основной пакет pydantic), проект интересен как пример интеграции Rust в Python-экосистему. Валидация описывается через JSON-схемы, поддерживая сложные условия вроде ge: 18 для чисел или вложенных структур. Сборка требует Rust toolchain, но результат стоит того: например, валидация списка из 10к элементов занимает миллисекунды.
🤖 GitHub
RustScan – Инструмент для быстрого сканирования портов
Данный проект может похвастаться высокой скоростью работы(Сканирует все 65 тыс. портов за 3 секунды), гибкой расширяемостью и адаптивным методом работы.
https://github.com/bee-san/RustScan
⚡️Почему Rust — один из самых любимых языков среди разработчиков? Почему он всё чаще выбирается вместо C++ и других языков для разработки высокопроизводительных приложений?
На открытом вебинаре 22 мая в 20:00 мск мы расскажем, почему Rust привлекает так много разработчиков по всему миру. Вы узнаете, какие проблемы решает этот язык, почему его производительность и безопасность привлекают специалистов, а также как Rust занимает свою нишу в программировании.
Если вы хотите перейти на Rust или улучшить свои навыки, вы получите ответы на все вопросы. Мы обсудим его ключевые особенности, нововведения и возможности для использования в реальных проектах.
👉Запишитесь на открытый урок и получите скидку на большое обучение «Rust Developer. Basic»: https://otus.pw/GPhS/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
🤖 Тест по Rust проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на курс "Rust Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса
За 5 месяцев обучения ты разберёшь ключевые особенности Rust и сможешь не только разрабатывать сложные программные продукты, но и в целом лучше проектировать ПО.
➡️ ПРОЙТИ ТЕСТ
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
OpenAI представляет Codex — облачного агента для генерации кода, способного выполнять множество задач параллельно.
В основе — модель codex-1.
🧠 Ключевые особенности:
• Codex работает прямо в браузере
• Поддерживает многозадачность: можно одновременно проверять код, задавать вопросы и переключаться между задачами
• Построен на **новой модели Codex-1** — самой мощной модели для кодинга от OpenAI
• Интеграция с GitHub — можно подключить свой аккаунт, и агент будет работать с вашими репозиториями
🚀 Codex — это шаг в сторону полуавтоматизированной разработки, где ИИ способен выполнять рутинную и аналитическую работу без постоянного контроля со стороны разработчика.
📅 Запуск ожидается уже сегодня.
▪ Релиз: https://openai.com/index/introducing-codex/
@ai_machinelearning_big_data
#OpenAI #Codex #AI #CodeAutomation #DevTools
Выпуск Rust 1.87
🔧 Основные изменения
- Улучшения системы типов: Введены новые возможности для более точного определения типов, что повышает безопасность и выразительность кода.
- Оптимизации компилятора: Улучшена производительность компиляции, особенно для крупных проектов, что сокращает время сборки.
- Расширения стандартной библиотеки: Добавлены новые функции и улучшены существующие модули, такие как std::fs и std::net, что упрощает разработку приложений.
- Улучшения в работе с асинхронным кодом: Обновления в async/await механизмах обеспечивают более стабильную и предсказуемую работу асинхронных операций.
Полный список изменений и подробности:http
⁉️ Хотите научиться разрабатывать веб-сервисы на Rust?
📅 19 мая в 20:00 МСК на открытом вебинаре мы покажем, как создать мощный и эффективный веб-сервис с использованием HTTP и gRPC API на Rust.
Что вас ждёт:
— Разбор бизнес-логики веб-сервиса.
— Реализация HTTP и gRPC API.
— Разработка клиентского приложения и тестов для сервиса.
🎁 Открытый урок проходит в преддверие старта курса «Rust Developer. Professional». Все участники получат скидку на обучение.
➡️ Запишитесь прямо сейчас, чтобы не пропустить: https://otus.pw/ESP2/?erid=2W5zFGbnWVE
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🔐 Как сделать код на Rust надёжнее и безопаснее?
📅 14 мая в 20:00 МСК мы разберём ключевые аспекты работы с контрактами и инвариантами в Rust на открытом вебинаре.
❗️Что вас ждёт:
— Разберём понятие инварианта и как он работает в Rust.
— Обсудим инвариант безопасности и его роль в написании надежного кода.
— Узнаем, как создавать удобные и безопасные контракты для API.
🦀 Вы освоите использование системы типов Rust для создания надёжных решений и узнаете, как компилятор и система типов помогают писать безопасный и эффективный код.
➡️ Регистрируйтесь и получите скидку на программу обучения «Rust Developer. Professional»: https://otus.pw/9LnV/?erid=2W5zFHCHQ3a
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Virviil/oci2git
Это консольное приложение на Rust, которое преобразует контейнерные образы (Docker и др.) в Git-репозитории. Каждая слоя образа превращается в отдельный коммит, что позволяет сохранять всю историю и структуру исходного образа
Основные возможности:
- Поддержка разбора Docker-образов и извлечения информации о слоях.
- Генерация Git-репозитория, где каждый слой соответствует одному коммиту (включая «пустые» слои вроде ENV и WORKDIR)
- Экспорт всей метаинформации об образе в файл Image.md в формате Markdown.
- Расширяемая архитектура для работы с разными движками контейнеров (docker, nerdctl, tar)
- Типичные сценарии использования:
- Сравнение слоёв (Layer Diffing): благодаря git diff можно увидеть точные изменения между любыми двумя слоями образа и выявить, какие файлы были добавлены, изменены или удалены
- Отслеживание происхождения (Origin Tracking): команда git blame помогает быстро понять, в каком слое и какой Dockerfile-инструкции был впервые создан или изменён конкретный файл
GitHub
- История файла (File Lifecycle): с помощью git log --follow можно проследить путь любого файла через все слои: от создания до удаления
GitHub
- Исследование слоёв (Layer Exploration): переключаясь на любой коммит, вы получаете файловую систему образа в состоянии этого слоя, что удобно для отладки и аудита безопасности
Github
💫 GlueSQL — SQL-движок, превращающий любые данные в полноценную базу данных. Этот инструмент умеет выполнять JOIN между CSV и MongoDB, работать с Git как с хранилищем данных и даже запускать SQL-запросы прямо в браузере через WebAssembly.
Что отличает GlueSQL от классических СУБД?
- Поддержка schemaless-данных
- Встроенные адаптеры для 10+ форматов
- Возможность добавлять свои хранилища через реализацию двух traits на Rust
Проект активно развивается: недавно добавили поддержку транзакций в Sled-бэкенде и анонсировали облачную версию. Для теста достаточно cargo add gluesql и уже можно писать SQL-запросы к данным в памяти.
🤖 GitHub
🔥 Burn — Rust-фреймворк для глубокого обучения с акцентом на производительность. В отличие от монолитных решений вроде PyTorch, Burn изначально заточен под кросс-платформенное выполнение: одна и та же модель может работать на NVIDIA/AMD GPU через CUDA/ROCm, на Apple-чипах через Metal и даже в браузере через WebGPU.
Главная фишка проекта в модульной архитектуре с подключаемым бэкендом и автоматической оптимизацией вычислений. Например, система умеет объединять операции ядер без ручного вмешательства. Для исследователей есть встроенный дашборд для мониторинга обучения, а для продакшна простая конвертация в ONNX.
🤖 GitHub
👣 Pyrefly — это новая, высокопроизводительная система статической типизации и IDE-платформа, написанная на Rust, для Python, разрабатываемая командой Facebook.
Главное:
🔍 Наследник Pyre
Pyrefly задуман как следующая версия проверяльщика типов Pyre от Meta, но с упором на скорость, модульную архитектуру и возможность генерации «типизированного» AST.
🚀 Реализовано на Rust
Большая часть кода написана на Rust для лучшей безопасности памяти и конкурентности. Только ~1 % кода в Python и ~6 % в TypeScript (для интерфейса сайта и LSP).
⚙️ Три этапа проверки
Сбор экспорта каждого модуля (решение всех import * рекурсивно)
Преобразование кода в набор «байндингов» (definitions, uses, anon) с учётом потоковых типов
Решение этих байндингов (flow-types, phi-функции при ветвлениях и рекурсии)
💡 Масштабируемость и инкрементальность
Модульно-ориентированный подход: проверка каждого модуля целиком, с возможностью параллельного запуска и минимальной сложности по сравнению с тонкозернистыми DAG-алгоритмами.
🛠️ Интеграция и упаковка
Разработчикам Rust: cargo build, cargo test
Во внутренних проектах Meta: запуск через Buck2 (buck2 run pyrefly -- check file.py)
Для PyPI: сборка колес через Maturin (pip install maturin && maturin build)
📡 IDE-функции и LSP
Включена поддержка Language Server Protocol для автодополнения, перехода к определению и интерактивной отладки в редакторах.
📆 Планы
Полная замена Pyre к концу 2025 года с выпуском стабильных версий на PyPI каждую неделю.
📜 Лицензия
MIT — свободное использование и вклад в проект приветствуются.
🔜 Узнать подробнее и принять участие можно в репозитории: Github
@rust_code
🎥 Cap — open-source проект Cap, предлагающий функционал, аналогичный популярному сервису Loom. Инструмент уже сейчас позволяет записывать и редактировать видео прямо с рабочего стола, а в ближайших планах — запуск self-hosted версий для Vercel и Render.
Гибридная архитектура проекта сочетает Rust для десктоп-приложения и Next.js для веб-версии, с единой системой компонентов на React. Разработчики активно привлекают сообщество к доработке, особенно в части создания инструкций по самостоятельному развертыванию.
🤖 GitHub
@react_tg
👣 Задача: "Безопасная многопоточная очередь с приоритетами в Rust"
📌 Условие:
Реализуйте потокобезопасную структуру данных — очередь с приоритетами (`PriorityQueue`), которая:
- Позволяет добавлять элементы с приоритетом через push(value: T, priority: u32).
- Позволяет забирать элемент с наивысшим приоритетом через pop() -> Option<T>.
- Гарантирует:
- Безопасную работу из нескольких потоков без блокировок на долгие периоды (желательно через минимальные локи или атомарные операции).
- Отдачу элементов в порядке убывания приоритета.
- Высокую производительность при массовых операциях.
Ограничения:
- Можно использовать стандартные библиотеки Rust (`std::sync`, `std::collections`).
- Нельзя использовать внешние библиотеки вроде tokio, crossbeam, rayon и др.
- Структура должна быть универсальной (`Generic`), т.е. работать с любыми типами данных.
---
▪️ Подсказки:
- Для внутреннего хранения можно использовать BinaryHeap из std::collections.
- Для обеспечения многопоточности можно использовать Arc<Mutex<...>>.
- Чтобы минимизировать блокировки, можно подумать о:
- Разделении кучи на несколько шардов (`sharding`),
- Использовании тонкой блокировки только на операции изменения состояния.
---
▪️ Что оценивается:
- Умение правильно работать с владением (`ownership`) и заимствованием (`borrowing`) в многопоточной среде.
- Аккуратное управление блокировками (`Mutex`, `RwLock`).
- Оптимизация под высокую нагрузку (минимизация времени блокировки).
- Чистота и читабельность кода.
- Способность правильно обрабатывать ошибки (`PoisonError` при падении потока).
---
▪️ Разбор возможного решения:
Идея архитектуры:
- Основная структура — Arc<Mutex<BinaryHeap<...>>>.
- Каждый push и pop блокирует мьютекс на короткое время (захватывает лок на минимальное изменение).
- При push(value, priority):
- Оборачиваем значение в структуру, которая реализует Ord так, чтобы приоритет был главным критерием сортировки.
- При pop():
- Просто pop() из BinaryHeap.
- Обработка ошибок:
- При отравлении мьютекса (`PoisonError`) безопасно восстанавливать структуру или пробрасывать ошибку выше.
---
▪️ Мини-пример структуры:
use std::collections::BinaryHeap;
use std::sync::{Arc, Mutex};
#[derive(Eq, PartialEq)]
struct Item<T> {
priority: u32,
value: T,
}
impl<T> Ord for Item<T> {
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
other.priority.cmp(&self.priority) // обратный порядок для max-heap
}
}
impl<T> PartialOrd for Item<T> {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
Some(self.cmp(other))
}
}
pub struct PriorityQueue<T> {
heap: Arc<Mutex<BinaryHeap<Item<T>>>>,
}
impl<T> PriorityQueue<T> {
pub fn new() -> Self {
PriorityQueue {
heap: Arc::new(Mutex::new(BinaryHeap::new())),
}
}
pub fn push(&self, value: T, priority: u32) {
let mut heap = self.heap.lock().unwrap();
heap.push(Item { priority, value });
}
pub fn pop(&self) -> Option<T> {
let mut heap = self.heap.lock().unwrap();
heap.pop().map(|item| item.value)
}
}
PoisonError — если поток паникует при блокировке, вся очередь будет "сломана".push или pop, особенно при больших объемах данных.Mutex через небезопасный код (`unsafe`).pop() (если очередь пуста — ждать максимум N миллисекунд)?Atomic примитивы?
👣 Tessa-Rust-T1-7B-Q8_0-GGUF — компактная 8-битная версия Rust-ориентированной модели Tessa-Rust-T1 в формате GGUF для llama.cpp.
Создана для генерации и автодополнения кода на Rust с учётом лучших практик языка.
Hugging Face
🚀 Обзор модели
Архитектура: трансформер на базе Qwen2.5-Coder-7B-Instruct, дообученный на специализированном Rust-датаcете от Tesslate.
Цель: автономная генерация идиоматичного Rust-кода — функции, структуры, трейты и модули; интеграция в AI-агенты для автоматизации backend-разработки и CLI-утилит.
Hugging Face
Размер: ~7.62 B параметров (после квантования Q8_0) → файл ~8.1 GB в формате GGUF.
⚙️ Ключевые особенности
Глубокое Rust-мышление: поддерживает включение «think-тегов» в промпт для структурированного, многоэтапного рассуждения перед выдачей результата.
Контекстно-чувствительная генерация: учитывает зависимости (crates), lifetimes и идиомы Rust, что снижает количество ошибок после генерации.
Интеграция с агентами: модель готова для использования в автономных системах разработки, быстрой генерации backend-логики, тестов и CLI-утилит.
https://huggingface.co/Tesslate/Tessa-Rust-T1-7B-Q8_0-GGUF
@rust_code