Новости 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 logo

Стали доступны видео с 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К экране.

Снимок Alacritty

Вышла версия 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!, остальные картинки из сайтов соответвующих проектов.

© Habrahabr.ru