кдпв


Мой комментарий к новости про Rust 1.28 с обзором ржавых событий за месяц неплохо зашел, так что вот держите очень субъективный срез ржавых новостей за прошлый месяц.


В этой подборке: Rust 1.29, записи докладов с Rustconf 2018, gfx-rs, Rust2018, порт Flatbuffers, новые версии ripgrep и Alacritty.


Rust 1.29


Вышел Rust 1.29. Основные нововведения — доступные сразу из rustupcargo 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 (программа докладов). Список видео в порядке очень примерной субъективной интересности:



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

Комментарии (6)


  1. Jenyay
    01.10.2018 16:54
    +1

    А на чем сейчас имеет смысл делать GUI на Rust?


    1. inv2004
      01.10.2018 19:10
      +2

      к сожалению, кажется, что особо не на чём, но если очень хочется, то варианты такие:
      gtk (relm или обычный), либо смотреть в сторону web (yew и ещё альтернативы).


    1. vsb
      01.10.2018 22:08

      Я планирую на обычном WinAPI попробовать.


    1. Webdesus
      01.10.2018 23:03
      +2

      Да, в принципе под все существующие библиотеки есть обертки. Я на данный момент тесно работаю с rust-qt-binding-generator. Он генерирует необходимую обертку для работы с qml. Пример TODO

      Список существующих GUI библиотек для RUST


    1. bugaevc
      02.10.2018 14:22
      +1

      Есть достаточно хорошие биндинги для GTK, glib и всей g-экосистемы: https://gtk-rs.org. Есть rust-qt-binding-generator. Но вообще для GUI Rust не очень-то подходит с его моделью памяти (ownership, отсутствие классов и наследования...); имеет смысл писать на Rust ядро/бэкэнд, а GUI — на более «родном» для платформы языке (Vala, Objective-C, Kotlin, ...)


  1. CodeRush
    01.10.2018 22:34
    +1

    Спасибо огромное, очень полезный дайджест, нашел для себя много пропущенного ранее.

    Следующий пост Брайана можно добавить, хоть он и озаглавлен неудачно:
    dtrace.org/blogs/bmc/2018/09/28/the-relative-performance-of-c-and-rust