Rust новости #5 (январь 2019)

    Предлагаю вашему вниманию субъективную подборку ржавых новостей за январь. В этой подборке: Rust 1.32, уход Стива Клабника и Ника Камерона, киш от Cloudflare, устройство rust-analyzer и страничной памяти, поиски GUI и async, Oxydyze конференция для встроенщиков.


    КДПВ


    Rust 1.32


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



    Подробности в переводе новости.


    Стив Клабник и Ник Камерон уходят из Mozilla


    NYT firefox 1.0


    Печальные новости: Стив Клабник и Ник "nrc" Камерон покидают Мозиллу.


    В посте Стива "thank u, next" (обсуждение) говорится о том, что главными причинами являются терки с "внешней" по отношению к Rust частью Мозиллы и всякие приземленные денежные вопросы. Стив хочет найти связанную с Rust работу и постарается продолжить принимать участие в жизни и развитии языка, хотя уже точно не в старом объеме.


    В "Leaving Mozilla and (most of) the Rust project" (обсуждение) Ник говорит, что просто устал за семь лет от этого проекта и хочет смены обстановки. Он уже вышел на работу в PingCAP:
    "Starting at PingCAP" (обсуждение).


    Guide to the rust-analyzer & Salsa


    схемка логики анализатора


    Леша @matklad выложил руководство/экскурсию по структуре rust-analyzer (что это?, обсуждение):



    rust-analyzer использует библиотеку инкрементальной рекомпиляции Salsa, про ее устройство тоже недавно публиковался пост и пара видео:



    ОС на Rust: Страничная память


    схема из статьи про память


    Цикл статей Writing an OS in Rust пополнился двумя статьями про страничную память:



    A bot for Starcraft in Rust, C or any other language?


    лого старкрафта


    humbug перевел на английский свою статью "Бот для Starcraft на Rust, C и на любом другом языке".


    Написание динамической библиотеки под Windows, которая могла бы загружаться в адресное пространство игры StarCraft: Brood War и управлять юнитами.

    Если кто не читал, то вот повод ознакомиться. :)


    Are We Async Yet?


    Вокруг втаскивания асинхронного синтаксиса в язык последнее время так много активности (например), что вот завели отдельную обновляемую страничку со статусом ключевых RFC/обсуждений: areweasyncyet.rs (обсуждение).


    Are We GUI Yet?


    areweguiyet.com (обсуждение) — похожая попытка собрать в одном месте всю информацию о статусе вечно актуальных попыток родить надежный и идиоматичный GUI для Rust.


    Lock-free Rust: Crossbeam in 2019


    Отличный обзор библиотеки crossbeam, предоставляющей эффективные lock-free структуры данных, и пути ее эволюции за последние годы (обсуждение).


    Ржавые реализации протокола QUIC: Quiche от Cloudflare и Quinn


    лого quiche в виде тортика


    Экспериментальный протокол QUIC (альтернатива TCP, ликбез) потихоньку набирает популярность. В этом месяце:


    • Вышел Quinn v0.2 (код, обсуждение), теперь он является одной из наиболее точных реализаций протокола. В первую очередь эта библиотека ориентирована на идиоматичном Rust API, включая поддержку футур;


    • Cloudflare выпустили свою реализацию — Quiche (обсуждение) — более сфокусированную на проработанном Си API для интеграции в приложения на других языках.



    Бесстрашная защита: Безопасность памяти в Rust


    симба, не ходи в unsafe


    Перевод мозилловской статьи "Fearless Security: Memory Safety", рассказывающей об основах того, как Rust обеспечивает безопасную работу с памятью.


    Embedded


    кусок схемы из поста



    badge


    WebAssembly


    картинка из статьи про встраивание WASM'а



    Игрострой



    длинное гиф демо текущего игрового процесса



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



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


    • Ropey (обсуждение) — эффективная и utf8 совместимая реализация структуры данных Rope/Cord, которая часто используется в редакторах текста;
    • hexyl (обсуждение) — консольный хекс-просмотрщик, активно использующий цвета для обозначения групп шестнадцатеричных значений;
    • cargo-cache (обсуждение) — позволяет выборочно чистить куски ~/.cargo/;
    • typetag (обсуждение) — макро-атрибут, дающий возможность безболезненной сериализаций &dyn Trait и десериализации Box<dyn Trait> типаж-объектов;
    • dness (обсуждение) — динамический dns клиент;
    • regex-automata (обсуждение) — предоставляет низкоуровневый интерфейс для работы с регулярными выражениями (в отличие от regex), который менее удобен, но зато позволяет детально контролировать потребление памяти и время поиска; использует DFA и поддерживает сериализацию;
    • Stretch (код, обсуждение) — ржавая реализация флексбокса, используется в Shard (как оно запихивается в андроид и в ios);
    • arbalest (обсуждение) — альтернатива обычному Arc, но слабые ссылки не запрещают изменяющий доступ к данным;
    • Toshi (обсуждение) — движок полнотекстового поиска, аналогичный Elasticsearch (альтернатива what Tantivy, который ориентируется на Lucene);
    • inferno — ржавый порт перлового визуализатора результатов профилирования flamegraph, процесс разработки выкладывается в виде стримов (видео 1, видео 2);
    • DataFusion v0.6 (обсуждение, код) — первая версия in-memory движка запросов, использующая официальную Rust реализацию Apache Arrow;
    • cargo-expand v0.4 (обсуждение) — "раскрыватель" макросов теперь поддерживает работу с конкретными модулями/типами/функциями;
    • fluent-rs v0.5 (обсуждение) — ржавая реализация современной системы локализации Fluent обновила подход к выделению ресурсов, получила zero-copy парсер и улучшила документацию;
    • Tokei v9.0 (код, обсуждение) — программа подсчета строк в исходном коде получила поддержку конфигурационных файлов, количество понимаемых ЯП выросло до 170;
    • cargo-crev v0.4 (обсуждение) — UX системы распределенного ревью пакетов был переработан в сторону сильного упрощения;
    • Smithay v0.2 (код, обсуждение) — в библиотеке для разработки оконных менеджеров для Wayland был добавлен пример Anvil, улучшена поддержка цветов и XWayland, переписан DRM;
    • oxide-auth v0.4 (обсуждение) — OAuth2 библиотека была полностью переписана и теперь совместима с actix, rocket и rouille;



    Хабр недавно ослабил гайки и теперь разрешает ссылаться на внешние ресурсы-сообщества, так что всех желающих познакомиться с Rust приглашаю заглядывать за помощью и советами в русскоязычные ресурсы по Rust'у:





    Это все, спасибо за внимание!


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


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

    Поделиться публикацией

    Комментарии 12

      +8

      dbg! на самом деле настолько офигенная штука, что с трудом понимаешь, как раньше без нее жил.

        +1
        Полностью согласен.
        +7
        я бы добавил ещё про RustPython github.com/RustPython/RustPython — инициатива по переписыванию интерпретатора python3 полностью на Rust не используя биндингов к существующему CPython. Вроде как занимаются неглупые ребята, разбирающиеся в вопросе.
          0
          Что у них с многопоточностью?
            0
            Adam @cthulahoops Feb 06 15:06
            Just to note we're still really early stages, and implementing the core of the language. We currently don't have threading, async, or network support at all! (Or dictionaries!)
            Other than that, a web server in RustPython should be exactly the same as in normal python. I'd say the first step would be to write a rust port of the socket module.
              0
              Точно, спасибо. На данном этапе я и не ожидал. А как в будущем? Копируют GIL или будут применять своё ядро интерпретатора, где потоки нормально работают?
                0

                Из целей указаны только


                • Full Python-3 environment entirely in Rust (not CPython bindings)
                • A clean implementation without compatibility hacks

                Каким образом планируется все делать вероятно стоит спрашивать в gitter проекта. Судя по всему будет что-то свое. А так я не конрибьютор проекта, деталей особо не знаю, только немного по репозитория пошарил и гиттер почитал.

          0

          Отличная подборка, спасибо.

            0

            Почему так долго сидят в nightly такие штуки как Duration.as_millis()? Не понимаю.
            Там же одна строка кода, давно бы отметили стабильным.

              +2

              Думаю, что потому что это ->u128. Который был нестабильным не так давно, не знаю как сейчас.

              +1
              Спасибо за труд. Новости про Клабника и Кемерона нехорошие, но в команде ещё много тащеров, я уверен найдут кем заменить этих двоих.
                +1
                Спасибо, действительно уникальная подборка по сравнению с тем же this-week-in-rust.org

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое