Новости Rust #1 (Сентябрь 2018)
Мой комментарий к новости про Rust 1.28 с обзором ржавых событий за месяц неплохо зашел, так что вот держите очень субъективный срез ржавых новостей за прошлый месяц.
В этой подборке: Rust 1.29, записи докладов с Rustconf 2018, gfx-rs, Rust2018, порт Flatbuffers, новые версии ripgrep и Alacritty.
Rust 1.29
Вышел Rust 1.29. Основные нововведения — доступные сразу из rustup
'а cargo fix
и cargo clippy
(подробнее в хабропереводе).
Следом была выпущена версия 1.29.1, закрывшая ошибку в std: repeat (обсуждение).
Rust 1.30 и 1.31 будут очень значительными.
Точного списка пока нет, но ожидается что:
- в 1.30 (2018.10.26) войдет частичная стабилизация процедурных макросов;
- в 1.31 (2018.12.07) войдут Rust 2018 + non-lexical lifetimes (NLL).
Видео с Rustconf 2018
Стали доступны видео с RustConf 2018 (программа докладов). Список видео в порядке очень примерной субъективной интересности:
- Using Rust For Game Development — Kyren из Chucklefish рассказывает про ECS; Доступа расширенная текстовая версия доклада;
- Integrating Rust into Tor: Successes and Challenges — как Tor потихоньку ржавеет (треть кода Тора теперь на Rust);
- Using Raft in Rust — введение в pingcap/raft-rs;
- Space, The Rusty Frontier — Ржавые космические спутники;
- How to (not) introduce Rust at your workplace — о неудачном опыте внедрения Rust в компании и какие из него можно сделать выводы;
- Embedding Rust in C/C++ — от основ FFI до тонких моментов и набитых на практике шишек;
- Getting Something for Nothing — как Rust может помочь в программировании для встраиваемых систем;
- Benchmarking and Optimization of Rust Libraries — обзор средств и подходов к оптимизации и бенчмаркингу;
- The Dark Secrets Lurking Inside cargo doc — экскурсия по функционалу rustdoc, включая не всем известные возможности и немного о его устройстве;
- Project Mentat: a store for evolving data in Rust — зачем нужен и как устроен mozilla/mentat (прим. в начале сентября проект внезапно заморозили из-за смены приоритетов);
- C2Rust: Migrating Legacy Code to Rust — еще один способ (corrode и citrus-rs) частично автоматизировать перевод кодовой базы с Си на Ржавчину, как он работает, что может лучше/хуже, как проверить, что логика не сломалась, и какие потуги есть в «обезопашивании» сгенерированного кода;
- The Opposite of Spaghetti Code: Building for Understanding — как с умом использовать средства Rust для построения надежных, понятных и расширяемых API;
- My Little Procedural Macro — небольшой экскурс в мир написания процедурных макросов. как они работают, чем отличаются от декларативных, пример и советы;
- Writing Crates for Complete Beginners — A Tour of Turtle — turtle.rs как пример библиотеки для обучения программированию, Rust как чей-то первый ЯП, как спрятать всю сложность за очень простым АПИ и выдавать фичи раста очень дозированно;
- Rust and the Web Platform: A Rookie«s Guide — долгий путь интернета к WASM и как с этим связана Ржавчина.
Бонус: прилетело несколько записей с Rust Cologne:
WebAssembly
WebRender, gfx-rs и gfx-portability
Тут много движухи было последнее время:
Ржавый игрострой
Что бы вы убрали из Rust?
Занятная тема в /r/rust, где из комментариев можно узнать порядочно всяких шероховатостей языка.
Ржавый порт FlatBuffers
Завезли официальный порт гуглового FlatBuffers на Rust (обсуждение). Толстый слой тестов, фаззинг, производительность и все остальное присутствуют.
Don’t fear 1.0!
Интересное обсуждение в /r/rust почему экосистема медленно перебирается на > 1.0 пакеты.
TLDR:
- Чтобы автор стабилизриовал пакет, ему надо убедиться что АПИ адекватный — для этого ему надо увидеть, как люди им пользуются. Много людей не пользуются пакетами < 1.0, ожидая их стабилизации — от этого стабилизация замедляется;
- Для пользователей: хотите больше стабильных пакетов — пользуйтесь нестабильными и давайте обратную связь автору;
- Для авторов: не парьтесь так сильно насчет выпуска 1.0.
ripgrep 0.10
ripgrep (rg) это более быстрая и удобная альтернатива классическому grep (т.е. ржавый аналог The Silver Searcher и ack).
Вышла версия 0.10 (обсуждение, очень занятное) — теперь работает еще быстрее, поддерживает PRCE2 и многострочные запросы.
Также, пакет ripgrep пробрался в репозиторий ubuntu 18.10.
Alacritty 0.2
Alacritty это эмулятор терминала с GPU ускорением, который пытается быть очень-очень быстрым на любом 4К экране.
Вышла версия 0.2 (обсуждение) с поддержкой прокрутки. От ее добавления долго отказывались, говоря «используйте tmux», но в итоге получилось родить не сильно бьющую по производительности реализацию.
Кстати, как и ripgrep, Alacritty пролезает в линуксовые дистрибутивы: завезли в Арч;
Новые RFC
По RFC довольно удобно наблюдать, в какую сторону движется язык. В заголовке каждого PRа есть ссылка «Rendered», по которой RFC доступен в удобочитаемой форме.
RFC 2418 «Add futures and task system to libcore» опять отложен, не судьба ему стать частью нововведений Rust2018.
Идет обсуждение семантики импортов в Rust 2018.
Одной строкой
Это все, спасибо за внимание!
Если я не добавил какую-то важную ссылку или событие, смело закидывайте в комментарии. :)
КДПВ взята из статьи Looking to what to learn in 2018? Learn Rust!, остальные картинки из сайтов соответвующих проектов.