Rust новости #4 (декабрь 2018)

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

КДПВ

Самое важное событие декабря — выпуск Rust 1.31 и Rust 2018, конечно. Туда очень много всего вошло:


редакция 2018, нелексические времена жизни, изменения системы модулей, дополнительные правила вывода времен жизни, const fn, новые инструменты, инструментальные проверки качества кода, документация, новый веб-сайт, улучшения в cargo.

Изменений так много, что обзор всех не получилось запихнуть в один пост, так что через несколько дней были опубликованы вспомогательные заметки:

Так же, имеет смысл полистать мозиловский хорошо структурированный обзор/ликбез 2018й редакции языка: Rust 2018 is here… but what is it? (перевод, обсуждение).


Волна постов про планы на 2019й год

Был кинут официальный запрос сообществу делиться мнениями о 2019 м годе — A call for Rust 2019 Roadmap blog posts (обсуждение). В ответ последовала волна из более чем сотни статей (со всеми можно ознакомиться на readrust.net/rust-2019). Вот несколько интересных ответов:


RustRush 2018

rustrush logo

15–16 декабря в Москве проходил RustRush 2018.

Записи докладов будут постепенно опубликованы на Youtube канале, пока доступны два:

Так же, Pierre Chevalier выложил отчет о поездке.

idubrov написал занятную статью о низкоуровневых хаках с лютым unsafe’ом. Отличный эксперимент в целях обучения, но, надеюсь, в реальные проекты оно все-таки не пойдет.

опасность

PsyHaSTe борется с восприятием ржавчины исключительно как системного языка.

Леша matklad поделился информацией о ходе проекта rust-analyzer, который является альтернативой RLS (обсуждение).
Важное дело, учитывая что IDE это очень болезненная тема для раста.

gamedev wg


  • A simple agenda for the Rust Game Development WG (обсуждение) — Эрланд предлагает создать Игровую Рабочую Группу и сконцентрироваться вокруг Аметиста, сделав его локомотивом экосистемы;
  • Выпущена паззл игра «Adventures of Pascal Penguin» (обсуждение, трейлер) — работает в вебе, играбельна по ссылке;
  • Using Rust for Gamedev (обсуждение) — автор вышеупомянутого пингвина рассказывает о своем опыте работы над ним;
  • Russian AI Cup 2018 — в этом году мэйлрушный Russian AI Cup использует симулятор на Rust+WASM (GIF) (кстати, прошлогодний пост тоже очень интересный) ;
  • Sandspiel (обсуждение) — залипательная физическая WASM песочница;
  • Published my first game written in Rust: Energy Grid (обсуждение) — экономическая стратегия;
  • Dose Response (код, обсуждение) — небольшой наркоманский рогалик с ASCII графикой, проходится минут за пять-десять, доступна веб версия;
  • This year in gfx-rs: 2018 (обсуждение) — краткий обзор случившегося с проектом gfx от kvark;
  • кстати, пакет gfx-hal выложен на crates.io (обсуждение) — кажется, переработка gfx проекта потихоньку устаканивается и поверх новой версии может начинать расти экосистема;
  • nitric (обсуждение) — наследник/переработка specs для возвращения техдолга разросшегося проекта и повышения его гибкости;
  • 17cupsofcoffee/tetra (обсуждение) — еще одна попытка написать простой ржавый 2д движок, более высокоуровневый чем ggez;
  • Вышел Amethyst 0.10 (обсуждение): Rust 2018, переход на nalgebra, упрощение тестирования и много более мелких изменений;
  • This month in rustsim #3 (December 2018):
    • nphysics: Добавлены дешевые фиксированные точки для деформируемых тел: видео;
    • nphysics: Добавлена поддержка соединений для мультител, что дает возможность прикреплять другие тела к деформируемому телу: видео;
    • ncollide: добавлена поддержка капсул и карт высот: видео;
    • nalgebra: переработано индексирование матриц, что позволяет удобнее получать срезы;
    • nalgebra-glm: добавлены ортографические и перспективные проекции;
    • цели на следующий год: интеграция с аметистом, поддержка жидкостей, «непрерывное» обнаружение столкновений, улучшение производительности;


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

По васму и встройке в декабре заметной активности было мало, поэтому отдельных секций у них не будет.


  • Обновления от IntelliJ-Rust: #88, #89 — в том числе подсветка unsafe кода (GIF) и всякая стыковка с 2018й редакцией языка;
  • What are various red flags for you in Rust code reviews? — реддит-обсуждение со списками более-менее часто встречающихся запахов кода. Даже если вы не часто отсматриваете чужой код, такие списки могут просто лишний раз заставить задуматься над тем как вы пишете свой код;
  • How I Wrote a Modern C++ Library in Rust (обсуждение) — как написать ржавую библиотеку с полноценным плюсовым интерфейсом;
  • More on RLS version numbering (обсуждение) — споры про «стабилизацию» и позиционирование RLS продолжаются — RLS теперь будет иметь ту же версию что и компилятор (1.31 в посте), общественность в целом негодует что до 1.0 RLS и близко не дорос;
  • Async in Rust, circa 2018 (обсуждение) — статус интеграции async/await в язык;
  • async-io-demo (обсуждение) — обучающее демо асинхронного io: от mio до безстековых корутин;
  • Reflecting on Rust and WebAssembly in 2018 (обсуждение) — как принято, ретроспектива этого года и прогноз на следующий;
  • /r/rust «writing »*» for crates in cargo.toml won’t always mean «latest version» — еще одно напоминание, что не стоит использовать »*» версии зависимостей, потому что оно, например, вполне может взять и откатиться к старой версии зависимости;
  • The Swiss Army Knife of Hashmaps (обсуждение) — экскурсия по внутренностям hashbrown (быстрая альтернатива стандартному HashMap'у);
  • habr: Изучаю Rust: Как я UDP чат сделал c Azul — отчет от VanquisherWinbringer;
  • habr: Первые шаги по Rust — обзор языка от zharko_mi;
  • Alexa Skills in Rust (обсуждение) — написание навыков для виртуального помощника от амазона;
  • Inside Rust’s Async Transform (обсуждение) — экскурсия в async;
  • The Spirit tutorial (обсуждение) — урок по демонизации при помощи пакета spirit;
  • /r/rust: Porting C code to Rust- notes, questions, and request for review — опыт портирования status_monitor с Си на Rust и ревью кода;
  • A Rusty Advent of Code: My AOC Experience with the Rust Community (обсуждение) — отчет об участии в adventofcode;
  • Comparing Pythagorean triples in C++, D, and Rust (обсуждение);
  • /r/rust: Making Rust Float Parsing Fast and Correct — роскошный пост о быстром парсере чисел с плавающей точкой;
  • Tokio: A great 2018, an even better 2019 — (обсуждение) — рефлексия про прошедший год от проекта Tokio;
  • Using C libraries in Rust: making a *-sys crate — отличный экскурс в написание ржавых оберток к сишным библиотекам;


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


  • 'cargo-crev' and Rust 2019 fearless code reuse (обсуждение, код) — платформа для публичного ревью пакетов (демо скринкаст);
  • enum_dispatch (обсуждение) — макрос, помогающий в некоторых ситуациях удобно заменить типаж-объекты на перечисления (пробрасывает вызов функции кажому из вариантов перечисления);
  • structview (обсуждение) — позволяет безопасно получить представление бинарных данных в виде высокоуровневых структур;
  • cargo-call-stack (твит) — Japaric опубликовал расширение cargo для статического анализа стека вызовов;
  • swc (обсуждение) — очень быстрая альтернатива babel;
  • ds_store (обсуждение) — парсер .DS_Store файлов;
  • sd (обсуждение) — «s[earch] & d[isplace]», ржавая альтернатива sed с более интуитивным интерфейсом;
  • enigma (обсуждение) — игрушечная реализация виртуальной машины Erlang’а;
  • http_static (обсуждение) — простой статический веб сервер, использует tower-web;
  • ws-unix-framed-bridge (обсуждение) — перенаправляет сообщения из вебсокетов в юникс-сокеты и наоборот;
  • Exonum 0.10 — фреймворк для построения приватных блокчейнов сменил свою сериализацию на protobuf, изменил формат сообщений, а биткоин анкоринг теперь использует segwit;
  • Rocket v0.4 (обсуждение) — веб фреймворк получил типизированные URI, поддержку БД и переработанные запросы;
  • resvg 0.4 (обсуждение) — библиотека отрисовки svg файлов получила начальную поддержку фильтров, накладывающихся масок/clippath, условного рендеринга и много чего еще;
  • Tantivy 0.8 (обсуждение) — в библиотеке полнотекстового поиска был переработан апи коллекций и улучшена поддержка многопоточности;


Особо интересных RFC под конец года мной не было замечено, так что это все на сегодня, спасибо за внимание!

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

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

© Habrahabr.ru