Rust новости #5 (январь 2019)

Предлагаю вашему вниманию субъективную подборку ржавых новостей за январь. В этой подборке: Rust 1.32, уход Стива Клабника и Ника Камерона, киш от Cloudflare, устройство rust-analyzer и страничной памяти, поиски GUI и async, Oxydyze конференция для встроенщиков.

КДПВ

Вышел Rust 1.32. По сравнению с масштабным прошлым выпуском, на котором было сконцентрировано множество сил всего сообщества, тут серьезных нововведений не очень много:

Подробности в переводе новости.


Стив Клабник и Ник Камерон уходят из Mozilla

NYT firefox 1.0

Печальные новости: Стив Клабник и Ник «nrc» Камерон покидают Мозиллу.

В посте Стива «thank u, next» (обсуждение) говорится о том, что главными причинами являются терки с «внешней» по отношению к Rust частью Мозиллы и всякие приземленные денежные вопросы. Стив хочет найти связанную с Rust работу и постарается продолжить принимать участие в жизни и развитии языка, хотя уже точно не в старом объеме.

В «Leaving Mozilla and (most of) the Rust project» (обсуждение) Ник говорит, что просто устал за семь лет от этого проекта и хочет смены обстановки. Он уже вышел на работу в PingCAP:
«Starting at PingCAP» (обсуждение).


Guide to the rust-analyzer & Salsa

схемка логики анализатора

Леша @matklad выложил руководство/экскурсию по структуре rust-analyzer (что это?, обсуждение):

rust-analyzer использует библиотеку инкрементальной рекомпиляции Salsa, про ее устройство тоже недавно публиковался пост и пара видео:


ОС на Rust: Страничная память

схема из статьи про память

Цикл статей Writing an OS in Rust пополнился двумя статьями про страничную память:

лого старкрафта

humbug перевел на английский свою статью «Бот для Starcraft на Rust, C и на любом другом языке».


Написание динамической библиотеки под Windows, которая могла бы загружаться в адресное пространство игры StarCraft: Brood War и управлять юнитами.

Если кто не читал, то вот повод ознакомиться. :)


Are We Async Yet?

Вокруг втаскивания асинхронного синтаксиса в язык последнее время так много активности (например), что вот завели отдельную обновляемую страничку со статусом ключевых RFC/обсуждений: areweasyncyet.rs (обсуждение).


Are We GUI Yet?

areweguiyet.com (обсуждение) — похожая попытка собрать в одном месте всю информацию о статусе вечно актуальных попыток родить надежный и идиоматичный GUI для Rust.

Отличный обзор библиотеки crossbeam, предоставляющей эффективные lock-free структуры данных, и пути ее эволюции за последние годы (обсуждение).


Ржавые реализации протокола QUIC: Quiche от Cloudflare и Quinn

лого quiche в виде тортика

Экспериментальный протокол QUIC (альтернатива TCP, ликбез) потихоньку набирает популярность. В этом месяце:


  • Вышел Quinn v0.2 (код, обсуждение), теперь он является одной из наиболее точных реализаций протокола. В первую очередь эта библиотека ориентирована на идиоматичном Rust API, включая поддержку футур;


  • Cloudflare выпустили свою реализацию — Quiche (обсуждение) — более сфокусированную на проработанном Си API для интеграции в приложения на других языках.


симба, не ходи в unsafe

Перевод мозилловской статьи «Fearless Security: Memory Safety», рассказывающей об основах того, как Rust обеспечивает безопасную работу с памятью.


Embedded

кусок схемы из поста

картинка из статьи про встраивание WASM'а


  • imgui-ext (обсуждение) — экспериментальный процедурный макрос для быстрого построения отладочных GUI на основе imgui (пример кода + картинка результата);
  • Using Rust for Gamedev (обсуждение) — Matthew Michelotti рассказывает о своем опыте работы над игрой про пингвина;
  • fl3 замутил WASM/WebGL движок good-web-game, API-совместимый с подмножеством GGEZ, так что у моего Земерота внезапно появилась полноценная веб версия: ozkriff.itch.io/zemeroth (обсуждение);
  • WebGL + Rust: Basic Water Tutorial (обсуждение) — в статье есть интерактивное демо;
  • Lokathor активно работает над серией уроков по gfx-hal;
  • The State Of GGEZ, 2019 (обсуждение) — Icefoxen хочет выпустить GGEZ v0.5 и взять «отпуск», делегировав разработку соавторам; кроме этого, в статье описан текущий статус поддержки мобильных и веб платформ + мысли о переходе на новый gfx-hal;
  • Большой список того, что stevebob сделал игрового на Rust за прошлый год, в том числе: библиотека коллапса волновой функции (картинка), платформерный физический движок, попиксельное определение зоны видимости и еще много чего (много гифок);
  • After Hours Game Development (обсуждение) — рассказ о хобби-разработке и структуре DF-подобной игры; длинное гиф демо текущего игрового процесса
  • Game Server in 150 lines of Rust (обсуждение) — короткий урок по написанию простого асинхронного игрового сервера;
  • kaiju (обсуждение) — встраиваемый игровой ассемблер + эмулятор ольдскульных игр (GIF демо);
  • Packaging a game for Windows, Mac, and Linux with Rust (обсуждение);
  • OpenMoonstone (обсуждение) — открытый клон старого ролевого боевика Moonstone (видео демо);
  • Идет активная работа над воксельной РПГ Veloren, например вот видео анимационной системы с демо прикрепления объектов к костям;
  • Обновления проекта Roboinstruct:
  • Ammolite (код, обсуждение) — физически корректный glTF движок рендера реального времени с фокусом на VR/AR (GIF);


Одной строкой


  • Январские обновления IntelliJ-Rust (#90, #91) включают в себя: поддержку переименования зависимостей в Cargo.toml, начальную поддержку macro 2.0, быстрое исправление «Make mutable» (GIF), рефакторинг «Introduce Parameter» (GIF) и выведение типов для try блоков и генераторов;
  • WebRender был опубликован на crates.io (обсуждение) — теперь с ним проще будет делать другие проекты;
  • dtolnay/request-for-implementation (обсуждение) — список «пакетов, которые не существуют, а должны бы» с довольно подробным описанием идей и информацией о том, где искать помощь и менторство;
  • Rust сейчас является 13 м по популярности языком на GitHub’е (обсуждение);
  • Джон Кармак учит Rust (обсуждение);
  • My experience converting a Python library to Rust (обсуждение) — отчет о переписывании Python библиотеки целиком на Rust (время разработки существенно больше, зато бед с оптимизациями не много);
  • Многоэкранная шпаргалка по Rust для новичков (обсуждение) — ЛКМ для перетаскивания;
  • Is It Time to Rewrite the Operating System in Rust? (обсуждение) — презентация с QCon о том, что не надо пытаться за раз переписать что-то масштабное на Rust, надо идти путем создания и внедрения небольших, полезных и качественных ржавых строительных блоков;
  • Cборка ripgrep 0.10 (и его зависимостей) в Debian теперь воспроизводима (обсуждение) — это как раз важно для проникновения rust пакетов в другие экосистемы;
  • /r/rust: «Your favourite Rust tricks?» — обсуждение со всякими Rust-трюками и неочевидными приемами;
  • /r/rust: Rust в Benchmarks Game в среднем на 3% быстрее C++ и на 4% медленнее Си» — ползет вверх потихоньку, но с бенчмарками все всегда сложно и неоднозначно;
  • доклад «Rust at speed — building a fast concurrent database» (обсуждение) — о построении быстрой многопоточной БД на Rust;
  • librsvg движуха: график «ржавения» librsvg, более подробный отчет о статусе процесса и отдельный отчет об упрощении работы с GObject из Rust;
  • Red Hat Developer: Speed up your Python using Rust (обсуждение) — как и для чего расширять Python код Ржавчиной, сравнение с решением задачи при помощи numpy, подборка ссылок для дальнейшего погружения в вопрос;
  • QtCreator и его использование в качестве IDE для Rust;
  • /r/rust: Building JavaScript Development Tools with Rust — представляет три «Rusty ECMAScript» пакета — Scanner (RESS), Syntax Analyzer (RESSA), Writer (RESW) — позволяющих разрабатывать на Rust средства разработки для JavaScript;
  • When Rust is safer than Haskell (обсуждение) — сравнение безопасности Rust и Haskell;
  • /r/rust обсуждение на тему перспектив rust-vs-go в контексте веба;
  • /r/rust: «Where do you think Rust will be in 3 years?» — вангование о будущем Rust’а, есть интересные мнения в комментариях;


Новые и обновленные пакеты


  • Ropey (обсуждение) — эффективная и utf8 совместимая реализация структуры данных Rope/Cord, которая часто используется в редакторах текста;
  • hexyl (обсуждение) — консольный хекс-просмотрщик, активно использующий цвета для обозначения групп шестнадцатеричных значений;
  • cargo-cache (обсуждение) — позволяет выборочно чистить куски ~/.cargo/;
  • typetag (обсуждение) — макро-атрибут, дающий возможность безболезненной сериализаций &dyn Trait и десериализации Box типаж-объектов;
  • dness (обсуждение) — динамический dns клиент;
  • regex-automata (обсуждение) — предоставляет низкоуровневый интерфейс для работы с регулярными выражениями (в отличие от regex), который менее удобен, но зато позволяет детально контролировать потребление памяти и время поиска; использует DFA и поддерживает сериализацию;
  • Stretch (код, обсуждение) — ржавая реализация флексбокса, используется в Shard (как оно запихивается в андроид и в ios);
  • arbalest (обсуждение) — альтернатива обычному Arc, но слабые ссылки не запрещают изменяющий доступ к данным;
  • Toshi (обсуждение) — движок полнотекстового поиска, аналогичный Elasticsearch (альтернатива what Tantivy, который ориентируется на Lucene);
  • inferno — ржавый порт перлового визуализатора результатов профилирования flamegraph, процесс разработки выкладывается в виде стримов (видео 1, видео 2);
  • DataFusion v0.6 (обсуждение, код) — первая версия in-memory движка запросов, использующая официальную Rust реализацию Apache Arrow;
  • cargo-expand v0.4 (обсуждение) — «раскрыватель» макросов теперь поддерживает работу с конкретными модулями/типами/функциями;
  • fluent-rs v0.5 (обсуждение) — ржавая реализация современной системы локализации Fluent обновила подход к выделению ресурсов, получила zero-copy парсер и улучшила документацию;
  • Tokei v9.0 (код, обсуждение) — программа подсчета строк в исходном коде получила поддержку конфигурационных файлов, количество понимаемых ЯП выросло до 170;
  • cargo-crev v0.4 (обсуждение) — UX системы распределенного ревью пакетов был переработан в сторону сильного упрощения;
  • Smithay v0.2 (код, обсуждение) — в библиотеке для разработки оконных менеджеров для Wayland был добавлен пример Anvil, улучшена поддержка цветов и XWayland, переписан DRM;
  • oxide-auth v0.4 (обсуждение) — OAuth2 библиотека была полностью переписана и теперь совместима с actix, rocket и rouille;


Хабр недавно ослабил гайки и теперь разрешает ссылаться на внешние ресурсы-сообщества, так что всех желающих познакомиться с Rust приглашаю заглядывать за помощью и советами в русскоязычные ресурсы по Rust’у:


Это все, спасибо за внимание!

Если я не добавил какую-то важную ссылку или событие, смело закидывайте в комментарии. :)

КДПВ взята отсюда, остальные картинки из сайтов соответствующих проектов.

© Habrahabr.ru