Поскольку праздники кончились, предлагаю вашему вниманию субъективную подборку ржавых новостей за декабрь. В этой подборке: безумие с растом, страшен ли раст, волна пророчеств, Rust 2018, Rust Analyzer.
Rust 1.31 & Rust 2018
Самое важное событие декабря — выпуск Rust 1.31 и Rust 2018, конечно. Туда очень много всего вошло:
редакция 2018, нелексические времена жизни, изменения системы модулей, дополнительные правила вывода времен жизни, const fn, новые инструменты, инструментальные проверки качества кода, документация, новый веб-сайт, улучшения в cargo.
Изменений так много, что обзор всех не получилось запихнуть в один пост, так что через несколько дней были опубликованы вспомогательные заметки:
- Procedural Macros in Rust 2018 (обсуждение) — о процедурных макросах;
- Tools in the 2018 edition (обсуждение) — о расширении инструментария;
Так же, имеет смысл полистать мозиловский хорошо структурированный обзор/ликбез 2018й редакции языка: Rust 2018 is here… but what is it? (перевод, обсуждение).
Волна постов про планы на 2019й год
Был кинут официальный запрос сообществу делиться мнениями о 2019м годе — A call for Rust 2019 Roadmap blog posts (обсуждение). В ответ последовала волна из более чем сотни статей (со всеми можно ознакомиться на readrust.net/rust-2019). Вот несколько интересных ответов:
- Лодочник: "Rust 2019: Organizational Debt" (обсуждение);
- Грейдон: "Rust 2019 and beyond: limits to (some) growth" (обсуждение, перевод);
- Клабник: "Thoughts on Rust in 2019" (обсуждение);
- Ральф: "My thoughts on Rust 2019" (перевод);
RustRush 2018
15-16 декабря в Москве проходил RustRush 2018.
Записи докладов будут постепенно опубликованы на Youtube канале, пока доступны два:
- Keynote. Ashley Williams — про дух сообщества и wasm-bindgen;
- Libp2p, a Rust peer-to-peer library. Pierre Krieger;
Так же, Pierre Chevalier выложил отчет о поездке.
Генерация типаж-объектов на лету (или безумие с Rust)
idubrov написал занятную статью о низкоуровневых хаках с лютым unsafe'ом. Отличный эксперимент в целях обучения, но, надеюсь, в реальные проекты оно все-таки не пойдет.
Так ли страшен Rust, как его малюют
PsyHaSTe борется с восприятием ржавчины исключительно как системного языка.
Rust Analyzer in 2018 and 2019
Леша matklad поделился информацией о ходе проекта rust-analyzer, который является альтернативой RLS (обсуждение).
Важное дело, учитывая что IDE это очень болезненная тема для раста.
Игрострой
- 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 под конец года мной не было замечено, так что это все на сегодня, спасибо за внимание!
Если я не добавил какую-то важную ссылку или событие, смело закидывайте в комментарии. :)
(КДПВ взята отсюда, остальные картинки из сайтов соответствующих проектов.)
Автор: ozkriff