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


КДПВ


Rust 1.31 & Rust 2018


Самое важное событие декабря — выпуск 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 выложил отчет о поездке.


Генерация типаж-объектов на лету (или безумие с Rust)


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


Так ли страшен Rust, как его малюют


опасность


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


Rust Analyzer in 2018 and 2019


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


Игрострой


gamedev wg



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


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



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


  • '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 под конец года мной не было замечено, так что это все на сегодня, спасибо за внимание!


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


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

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


  1. ozkriff Автор
    10.01.2019 11:40
    +3

    Извиняюсь, что выкладываю аж 10ого числа, из-за праздников съехало расписание.


    Поскольку я пишу это уже задним числом, вот важная новость "из будущего": Стив Клабник уходит из Мозиллы.


    Грустно, я очень привык за эти годы что он является главным из официальных "лиц раста", но в целом это не критично, потому у раста еще куча толковых людей в "правительстве".


    1. alex-pat
      10.01.2019 12:50

      Well, the first thing is that I don’t plan to stop working on Rust.

      Мне показалось, что это означает, что хотя уходит из мозиллы, в core team останется, или я ошибся?


      1. ozkriff Автор
        10.01.2019 12:55

        Может и значит, а может и нет, время покажет. Быть в команде ядра, не работая в мозилле, сложнее все-таки. В любом случае его степень влияния на проект сильно упадет.


        1. VadimVP
          10.01.2019 13:18

          Не думаю что внутри в проекте что-то от этого изменится, Клабник в основном ездил по конференциям и постил в соц сетях, т.е. в некотором смысле "лицом раста" и работал, а техническими задачами и даже документацией уже давно практически не занимался.


          1. ozkriff Автор
            10.01.2019 13:31

            Да, именно так и думаю. Но мне все равно грустно. :)


      1. freecoder_xx
        10.01.2019 17:51

        Насколько я знаю, он в language team не входил. Так что его уход на дизайне самого языка никак отразиться не должен.


  1. amarao
    10.01.2019 18:06

    В КДПВ зубы у краба не такие страшные, как пасть крабов (и всех ракообразных IRL):

    i.gifer.com/7W4C.mp4


  1. Mingun
    10.01.2019 18:56

    А не подскажите, есть ли на rust какая-нибудь универсальная система сборки, не rust проектов (и это даже не совсем ПО)? Типа gulp из мира JS? Есть проект, для которого написаны утилиты на rust, требующий некоторых шагов сборки для получения конечного результата (вызов этих утилит). Не хочется разводить зоопарк инструментов, поэтому есть желание, чтобы вся сборка осуществлялась единообразно. Идеальное решение — если в результате можно склонировать репозиторий, запустить cargo build, и соберутся утилиты и финальный проект


    1. freecoder_xx
      10.01.2019 19:06

      В Cargo вы можете выполнять собственный скрипт при сборке. Дополнительно есть еще плагин cargo-script.


      Но если вам достаточно просто вызовов некоторых команд подряд, то проще сделать shell-скрипт с вызовом cargo build и прочего.


      1. Mingun
        10.01.2019 19:33

        Хочется кроссплатформенного скрипта :). build скрипт понятно, что есть, но ведь нужны всякие плюшки, типа объявления задач, выстраивания цепочек зависимостей, автосправку по доступным задачам и т.п.


        Глянул cargo-script — немного не то, мне не принципиально, чтобы можно было запускать прям текстовый файл. Если скрипту сборки нужно предварительно собраться, не страшно


  1. idubrov
    10.01.2019 20:10

    но, надеюсь, в реальные проекты оно все-таки не пойдет.

    Ничё-ничё, у меня уже продакшн версия на подходе. Надо статью написать (наверное, на английском в этот раз).