ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

Rust

Rust

前往频道在 Telegram

Rust programming language По всем вопросам- @workakkk #VRHSZ

显示更多
9 119
订阅者
-324 小时
+1127 天
+20330 天
帖子存档
Rust
9 118
Уязвимости в Rust-библиотеках zip-rs и librsvg В библиотеке zip-rs, написанной на языке Rust и насчитывающей около 10 млн загрузок в неделю, выявлена уязвимость (CVE-2026-115905), позволяющая создавать архивы, которые выглядят безобидными, но при распаковке из них извлекаются другие, изначально не показанные в списке, файлы. Файлы могут быть размещены в архиве вне структуры Central Directory, из-за чего при просмотре списка файлов показывается одно содержимое, но при распаковке через API ZipStreamReader извлекаются другие файлы. Проблеме присвоен уровень опасности 10 из 10. Уязвимость исправлена в версии zip-rs 9.0.5. Полный текст: https://opennet.ru/66555/ https://opennet.me/66555/

Rust
9 118
BeautifulRust – бесплатный набор навыков, который помогает ИИ-агентам писать более качественный Rust. Проект объединяет реком
BeautifulRust – бесплатный набор навыков, который помогает ИИ-агентам писать более качественный Rust. Проект объединяет рекомендации Google, Microsoft, Rust API Guidelines, Effective Rust и Rust Design Patterns. Когда источники расходятся, автор выбирает подход и объясняет причину. Внутри – навыки для написания и ревью кода, а также конфигурация Clippy для автоматических проверок. Перед сдачей результата агенту предписано запускать форматирование, Clippy с предупреждениями как ошибками, тесты и сборку документации. В авторской оценке на трёх задачах навык повысил результат с 24 до 29 пройденных проверок из 30, расходуя примерно на треть больше токенов. Выборка небольшая, но результат интересный. Работает с Claude Code, Codex, Cursor и другими клиентами Agent Skills. Лицензия – MIT. Установка:

npx skills add morganlinton/BeautifulRust
https://github.com/morganlinton/BeautifulRust

Rust
9 118
📘 На Mentorix вышел курс — «Rust-разработчик: подготовка к собеседованию» Хотите на собеседовании спокойно объяснить, откуда
📘 На Mentorix вышел курс — «Rust-разработчик: подготовка к собеседованию» Хотите на собеседовании спокойно объяснить, откуда E0502, чем Send отличается от Sync и как устроен Future? Этот курс — полный путь от диагностики пробелов до пробных собеседований junior, middle и senior. • Владение и заимствование: E0382, E0502, E0597, NLL • Времена жизни: elision, HRTB, variance • Типажи: dyn Trait, object safety, blanket impl • Умные указатели: Box, Rc, Arc, RefCell, Cow • Конкурентность: Send и Sync, Mutex, атомики и Ordering • Async изнутри: Future, Waker, Pin — без tokio • Unsafe и FFI: UB, MaybeUninit, repr(C) • Live-coding: LRU-кэш, трие, Dijkstra, парсер выражений • Карьера: резюме, оффер, торг о зарплате 🎓 Сертификат — добавьте в резюме или LinkedIn 🏷 Скидка 50%, действует 48 часов 12 990 ₽ → 6 495 ₽ ➜ Пройти курс на Mentorix Ещё 25 курсов бесплатно — доступны после регистрации

Rust
9 118
Rust официально появился в systemd - с жёсткими ограничениями. В основную ветку проекта приняли поддержку новых программ на R
+1
Rust официально появился в systemd - с жёсткими ограничениями. В основную ветку проекта приняли поддержку новых программ на Rust. Изменения готовятся для systemd 263. Systemd отвечает за запуск системы и управление службами во многих Linux-дистрибутивах. Теперь часть новых утилит можно разрабатывать на Rust по следующим правилам: - Только самостоятельные компоненты, от которых не зависят другие части systemd. - Сборка через Meson, без Cargo. - Режим `no_std` — без стандартной библиотеки Rust и произвольных сторонних зависимостей. - Взаимодействие с существующим кодом — через C-интерфейсы. Переписывать существующий C-код не планируют. Поддержка Rust опциональна: проект по-прежнему можно собрать без него. Первый запланированный компонент — systemd-keyring-setup. Он будет загружать X.509-сертификаты в хранилища ключей ядра Linux при загрузке. Сама утилита пока находится в отдельном, ещё не принятом PR. Rust постепенно входит в базовую инфраструктуру Linux: через новые компоненты с чёткими границами и общей системой сборки. https://github.com/systemd/systemd/pull/44324

Rust
9 118
Rust выбирают для связи медицинских устройств: Vector заново разработала на нём стек IEEE 11073 SDC. SDC позволяет приборам р
Rust выбирают для связи медицинских устройств: Vector заново разработала на нём стек IEEE 11073 SDC. SDC позволяет приборам разных производителей обнаруживать друг друга, обмениваться измерениями, состояниями и тревожными сигналами. Это основа для совместной работы оборудования в операционных и реанимации. Почему Rust? По объяснению Vector, безопасность памяти и типов помогает предотвращать распространённые ошибки ещё при разработке, снижая риск части сбоев и уязвимостей. При этом переписывать всё приложение не требуется: стек подключается к существующему коду на C и C++ через FFI. Его можно встроить в устройство или использовать через шлюз. Vector также заявляет рост производительности благодаря оптимизации обработки XML и структуры данных, описывающей состояние прибора. Конкретных результатов бенчмарков компания не привела. Доступность ожидается в первом квартале 2027 года. О сертификации или регуляторном одобрении в анонсе не сообщается. Заметный пример практического внедрения Rust: производитель инженерного ПО выбирает его для компонента, предназначенного работать внутри медицинского оборудования. https://www.vector.com/en/company/press/press-releases/vector-announces-new-rust-based-ieee-11073-sdc-stack-for-the-medical-device-industry/

Rust
9 118
Rust сократил расходы на CI примерно на 75% - и сознательно оставил лишние сборки компилятора. В интервью Serokell Марко Иени
Rust сократил расходы на CI примерно на 75% - и сознательно оставил лишние сборки компилятора. В интервью Serokell Марко Иени из Rust Foundation объяснил компромисс. Основную экономию дал переход с GitHub large runners на стандартные. По Enterprise-плану проекту доступны до 500 стандартных раннеров одновременно, а большие расходуют ограниченные спонсорские кредиты. Часть тестов разделили между двумя стандартными раннерами. Каждый заново собирает компилятор — вычисления дублируются. Можно собрать один раз и раздать артефакты. Но команда отказалась: такой обмен сделал бы CI медленнее и хрупче. Доступных раннеров хватает, поэтому простота оказалась ценнее экономии CPU. Тот же принцип - в мониторинге: с собственного Prometheus и Grafana перешли на Datadog, поскольку старую систему никто не успевал обновлять. Самый ограниченный ресурс здесь - время инженеров. Небольшая команда, во многом состоящая из волонтёров, не может оптимизировать каждый цент. Хорошая инфраструктура укладывается в бюджет и остаётся посильной в сопровождении. Иногда ради этого стоит выполнять одну и ту же работу дважды. https://serokell.io/blog/the-hidden-challenges-of-rust-infrastructure-interview-with-marco-ieni

Rust
9 118
photo content

Rust
9 118
👣 Rust предлагает включить новый trait solver по умолчанию: крупнейшее изменение языка со времён 1.0 В rust-lang/rust открыт
👣 Rust предлагает включить новый trait solver по умолчанию: крупнейшее изменение языка со времён 1.0 В rust-lang/rust открыт PR #164209 от lcnr, и сам автор называет его крупнейшим одиночным изменением Rust после версии 1.0. Важная оговорка: PR ещё не влит, он находится на стадии предлагаемого final comment period. Над новым солвером работали четыре года несколько человек, опираясь на опыт многолетнего Chalk. Он меняет поведение системы типов в пограничных случаях, скорость и сам способ рассуждения о ней. Если предложение одобрят, новый солвер уйдёт в beta, а затем в stable, начиная с Rust 1.101. Beta cutoff назначен на 6 ноября, после него старый солвер удаляют, так что стабилизация может сдвинуться максимум на один релиз. Ближайшая выгода это TAIT и RTN, которые ждали переработки opaque types. Основные плюсы придут позже, с возможностями, доступными только новому солверу. Авторы честно перечисляют недостатки: остались зависания, производительность в среднем хуже, часть диагностик слабая, открыты мелкие баги. Аргументы за выкатку такие: два солвера в компиляторе усложняют код и делят покрытие тестами, работа блокируется ожиданием нового, а новые крейты уже начинают зависеть от некорректного поведения старого. Crater нашёл меньше 500 затронутых крейтов, почти все из-за нескольких корневых, и поломки описаны как ожидаемые. Прогон перформанса на основной метрике числа инструкций заметных изменений не показал. lcnr отдельно благодарит compiler-errors и adwinwhite, без работы которых такая стабилизация, по его словам, вряд ли была бы возможна. Источник: http://github.com/rust-lang/rust/pull/164209

Rust
9 118
🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют По данным Минфин 32% граждан покинули своё место р
🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют По данным Минфин 32% граждан покинули своё место работы поскольку в среднем уже в первый месяц смогли заработать 250 000 рублей, а через 2-3 месяца с легкостью вышли на семизначные числа. Самое смешное, что лишь 8% россиян что-то слышали об этой профессии хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют Там объясняют, как имея телефон и доступ в интернет заработать свои первые $3000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка! Ссылка для входа — https://t.me/+n8X2lGzXalNkYmRi

Rust
9 118
"am rustacean 🦀 "
"am rustacean 🦀 "

Rust
9 118
🦀 Задача на Rust: распакуй строку, не запутавшись во вложенности Запись k[текст] означает: повторить содержимое скобок k раз
🦀 Задача на Rust: распакуй строку, не запутавшись во вложенности Запись k[текст] означает: повторить содержимое скобок k раз. Но внутри могут быть другие такие же конструкции. Напиши функцию:

fn decode_string(s: String) -> String
Она должна проходить эти проверки:

assert_eq!(decode_string("2[a]".into()), "aa");

assert_eq!(
    decode_string("2[2[2[a]]]".into()),
    "aaaaaaaa"
);

assert_eq!(
    decode_string("2[a]2[b]2[c]".into()),
    "aabbcc"
);

assert_eq!(
    decode_string("2[abc]3[cd]ef".into()),
    "abcabccdcdcdef"
);
Усложнение: число повторений может быть многозначным, например 12[ab]. Вход считаем корректным, цифры используются только для количества повторений. Что выберешь для решения: стек или рекурсивный разбор? 👇

Rust
9 118
Imagining how many days it would take to debug these problems in Python or Javascript
Imagining how many days it would take to debug these problems in Python or Javascript

Rust
9 118
Ник Матсакис предлагает для Rust северную звезду эпохи ИИ-агентов: ноль unsafe-кода Один из ключевых людей в дизайне Rust опу
Ник Матсакис предлагает для Rust северную звезду эпохи ИИ-агентов: ноль unsafe-кода Один из ключевых людей в дизайне Rust опубликовал текст о том, что кодинг-агенты значат для языка. Это письменная версия доклада на REBASE в рамках SPLASH. Сам автор называет содержимое «недопечёнными идеями», так что это видение, а не предложение новых фич. Выводы такие: люди в программировании всё ещё нужны, дизайн языков по-прежнему важен, а Rust хорошо подходит для агентной разработки и может подойти ещё лучше. По производительности аргумент простой. Хорошие значения по умолчанию плюс явные ручки для тонкой настройки. По словам автора, люди, которые раньше вручную оптимизировали криптографический код, теперь обращаются к агентам. Вместе с профайлером вроде dial9 получается цикл: бенчмарк, профиль, агент предлагает правку, PR в репозитории. С надёжностью сложнее. Типы удерживают агента в рамках, но тесты показывают наличие багов, а не их отсутствие, и типы гарантируют лишь отсутствие определённых классов ошибок, а не корректность результата. Тут нужны доказательства. Для Rust уже есть Verus, Creusot, Aeneas и Kani. При этом типы продолжают играть роль, потому что делают доказательства дешевле. &mut даёт гарантию уникальности, и Verus опирается на borrow checker именно ради этого, чтобы солверу было проще. Куда, по мнению Матсакиса, стоит двигаться: более выразительная система типов (view types, внутренние ссылки, даже проверка вроде «в лог не попадают персональные данные»), расширяемый компилятор, чтобы инструменты доказательств не жили на костылях из макросов и привязке к конкретным версиям компилятора, и поддержка доказательства корректности unsafe-кода. Северная звезда: больше никакого unsafe. Это не значит убрать ключевое слово. Это значит уметь доказать, что весь unsafe-код корректен и не приводит к неопределённому поведению. Главной открытой проблемой автор называет дизайн, то есть решение о том, что вообще строить. Ставка на специализированные языки дизайна, которые превращают высокоуровневое намерение в проверки типов, линты или теоремы. Для контекста Матсакис цитирует Дэвида Толная: инженеры Meta в этом году написали первосторонний Rust-кода вдвое больше, чем за предыдущие девять лет вместе взятые. Блог: https://smallcultfollowing.com/babysteps/blog Источник: https://smallcultfollowing.com/babysteps/blog

Rust
9 118
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_ci Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.

Rust
9 118
photo content

Rust
9 118
👣 Rust предлагает включить новый trait solver по умолчанию: крупнейшее изменение языка со времён 1.0 В rust-lang/rust открыт
👣 Rust предлагает включить новый trait solver по умолчанию: крупнейшее изменение языка со времён 1.0 В rust-lang/rust открыт PR #164209 от lcnr, и сам автор называет его крупнейшим одиночным изменением Rust после версии 1.0. Важная оговорка: PR ещё не влит, он находится на стадии предлагаемого final comment period. Над новым солвером работали четыре года несколько человек, опираясь на опыт многолетнего Chalk. Он меняет поведение системы типов в пограничных случаях, скорость и сам способ рассуждения о ней. Если предложение одобрят, новый солвер уйдёт в beta, а затем в stable, начиная с Rust 1.101. Beta cutoff назначен на 6 ноября, после него старый солвер удаляют, так что стабилизация может сдвинуться максимум на один релиз. Ближайшая выгода это TAIT и RTN, которые ждали переработки opaque types. Основные плюсы придут позже, с возможностями, доступными только новому солверу. Авторы честно перечисляют недостатки: остались зависания, производительность в среднем хуже, часть диагностик слабая, открыты мелкие баги. Аргументы за выкатку такие: два солвера в компиляторе усложняют код и делят покрытие тестами, работа блокируется ожиданием нового, а новые крейты уже начинают зависеть от некорректного поведения старого. Crater нашёл меньше 500 затронутых крейтов, почти все из-за нескольких корневых, и поломки описаны как ожидаемые. Прогон перформанса на основной метрике числа инструкций заметных изменений не показал. lcnr отдельно благодарит compiler-errors и adwinwhite, без работы которых такая стабилизация, по его словам, вряд ли была бы возможна. Источник: http://github.com/rust-lang/rust/pull/164209

Rust
9 118
🦀 Кто должен доказывать корректность реализации трейта в Rust: сама реализация или код, который её использует? Нико Матсакис разобрал этот вопрос на примере циклических зависимостей, когда доказательство может замкнуться само на себя. Допустим, есть трейт Magic: Copy. Любой тип с Magic обязан реализовывать Copy. Два подхода: • Модульный: проверяем обязательства при проверке impl. Поэтому impl Magic for String недопустим: String не реализует Copy. • Внешний: разрешаем такой impl, но при его использовании требуем отдельно доказать String: Copy. Реализация есть, воспользоваться ей нельзя. Второй вариант помогал обойти проблему циклических доказательств. Но упирался в unsafe-трейты. Когда автор пишет unsafe impl, остальной код доверяет его гарантиям. Если реализация ошибочно обещает, что Box<T> может содержать нулевой указатель, ответственность лежит на ней. Выходит странная модель: гарантии безопасности у impl принимаем, а выполнение требований супертрейтов заставляем перепроверять вызывающий код. Вывод Нико: реализация должна сама устанавливать выполнение своего контракта. Следующая часть будет о том, как совместить этот подход с циклами. https://smallcultfollowing.com/babysteps/blog/2026/10/10/modular-vs-external-proofs/ #Rust

Rust
9 118
🦀 В Rust нашли баг, который 11 лет обходил гарантии безопасности памяти. Ошибка позволяет нарушить ограничения времени жизни
🦀 В Rust нашли баг, который 11 лет обходил гарантии безопасности памяти. Ошибка позволяет нарушить ограничения времени жизни при присваивании полю структуры. В результате код без `unsafe` может сохранить ссылку на уже уничтоженные данные, а затем обратиться к ним. В issue есть примеры чтения освобождённой памяти и падения программы. Один из них воспроизводится начиная с Rust 1.4. Разработчики присвоили ошибке высокий приоритет `P-high`. По оценке команды, случайное проявление маловероятно: для показанного нарушения безопасности нужна специально сконструированная реализация Drop. Комментарии ограничили, чтобы предотвратить спам и бесполезные обсуждения. Гарантии Rust тоже зависят от корректности компилятора. Здесь нашли дыру именно в их реализации. https://github.com/rust-lang/rust/issues/164250

Rust
9 118
👣 Campfire переписали на Rust, почти без ручного Rust. DHH пишет, что сегодня уже гоняет beta-версию Campfire на Rust. Самое
👣 Campfire переписали на Rust, почти без ручного Rust. DHH пишет, что сегодня уже гоняет beta-версию Campfire на Rust. Самое интересное: - код пока получился «уродливым» - стал примерно в 6 раз более многословным - сам перенос, по его словам, практически ничего не стоил - и главное — ему не пришлось напрямую разбираться в Rust-коде То есть AI уже позволяет переносить реальные приложения между языками почти как между разными runtime. Пусть результат пока далёк от красивого production-кода, сам факт показательный: миграция большого приложения на другой язык становится задачей не месяцев, а агентного workflow. https://github.com/basecamp/once-campfire

Rust
9 118
Repost from Golang
🦀 1,8 млн ошибок из-за одного пробела: как разработчик собирал Kubernetes Ingress на Rust и Go Автор Silex разделил систему
🦀 1,8 млн ошибок из-за одного пробела: как разработчик собирал Kubernetes Ingress на Rust и Go Автор Silex разделил систему на две части: • Go-контроллер наблюдает за Ingress и EndpointSlice, отслеживая маршруты и адреса бэкендов. • Rust-движок на Tokio принимает трафик и ищет маршруты в конкурентной таблице DashMap. Обработка запросов отделена от взаимодействия с Kubernetes API. Первый нагрузочный тест выглядел обнадёживающе только по счётчику соединений: движок принимал около 55 тысяч в секунду, но не отдавал успешных ответов. Причина оказалась в разборе конфигурации. Вместо JSON-парсера код искал точную подстроку:

Ожидал:  "host":"silex.local"
Получил: "host": "silex.local"
Допустимый в JSON пробел ломал поиск. Обработчик молча завершался и закрывал TCP-соединение. Итог: 1,8 млн ошибок чтения. После исправления автор сравнил Silex с NGINX Ingress: K3s, HTTP echo-бэкенд, wrk, 400 соединений, 4 потока, 30 секунд. Silex: 2536 запросов/с. NGINX: 2274. Разница: +11,5%. Но максимальная задержка у обоих была около двух секунд, таймауты тоже остались. У Silex их даже больше: 302 против 286. По объяснению автора, нагрузка упёрлась в Node.js-бэкенд. На момент статьи TLS-терминация, активные проверки бэкендов и Prometheus-метрики ещё были в планах. Самое ценное здесь: увидеть, как устроен небольшой ingress, где ломается взаимодействие компонентов и почему throughput нужно читать вместе с ошибками и задержками. https://dev.to/sysalchemist/how-i-built-a-custom-kubernetes-ingress-in-rustgo-that-outperforms-nginx-by-11-4iag @Golang_google