LINUX.ORG.RU

Rust


248

19

Всего сообщений: 119

grex 1.2.0 — генератор регулярных выражений

grex 1.2.0 — генератор регулярных выражений
Группа Разработка

Вышла новая версия библиотеки и командной утилиты grex 1.2.0, которая позволяет создавать регулярное выражение из предоставленных пользователем тестовых данных. Созданное регулярное выражение имеет синтаксис PCRE.

grex начинался как порт JavaScript-утилиты regexgen и написан на языке программирования Rust.

>>> Подробности

 , , ,

dotcoder
()

Линус высказал своё мнение о Rust в ядре

Группа Ядро Linux

Поживем - увидим

Мне интересен проект внедрения Rust в ядро. Но я считаю, что авторы этого проекта предвзяты по отношению к Rust, и хотелось бы сначала посмотреть, как это обернется на практике.

Лично Торвальдс не продавливает Rust в ядро, но он «готов оценить обещанные преимущества и возможность избегания граблей, связанных с безопасностью», но также понимает, что «иногда обещанное не исполняется».

Торвальдс полагает, что первоначальной областью применения Rust в ядре могут быть драйверы, поскольку их написание представляет собой множество небольших и независимых задач. «Может, это не самое интересное применение, но оно самое очевидное». Он добавил, что поскольку многие устройства предназначены не для всех процессорных архитектур, недостаток их поддержки в Rust – не такая большая проблема.

>>> Источник

 , ,

anonymous
()

В linux-next добавлена возможность писать драйверы на Rust

Группа Ядро Linux

В ветку ядра linux-next включен код для написания драйверов на Rust, сам патч. Пока неясно, оставит Линус это или нет, он высказывается довольно туманно, из его слов не совсем понятно, есть ли четкие критерии включения.

>>> Подробности

 , linux-next, ,

anonymous
()

Почему Discord сменил Go на Rust. Блог разработчика.

Группа Разработка

В статье автор описывает успешный проект Discord, в котором Rust используется для потоковой обработки в Go Live и их Elixir NIFs’ сервере.

Автор пишет
«Хочу отметить, что мы потратили очень мало усилий на оптимизацию реализации на Rust. Но даже только с базовой оптимизацией Rust оказался быстрее супероптимизированной реализации на Go. Это заметный плюс для Rust, показывающий, насколько легко писать эффективные программы, используя Rust, по сравнению с глубоким погружением в Go.»

>>> Why Discord is switching from Go to Rust

 , ,

grim
()

Релиз Datanymizer — анонимайзера чувствительных данных, написанного на Rust

Группа Open Source

Очень часто в процессе разработки и тестирования бывает необходимо использовать в программе данные, максимально приближенные к реальным, уже имеющимся в продукте. Однако, чтобы избежать риска утечки реальных данных с продакшен-серверов, данные должны быть обработаны, из них должна быть удалена личная информация, такая как: имена и адреса пользователей, адреса электронной почты, номера телефонов, данные платёжных карт и пр.

Для этого предлагается использовать Datanymizer — он анонимизирует данные на стороне сервера и передаст в тестовую среду уже чистый SQL-дамп, в котором персональные данные удалены или заменены несуществующими данными, похожими по формату на реальные.

Datanymizer написан на Rust и поддерживает глобальные переменные, ограничения уникальности и встроенные правила.

Подробное описание установки и использования читайте в статье.

>>> Подробности

 , production, ,

Alve
()

Dotenv-linter обновился до v3.0.0

Группа Open Source

Dotenv-linter — это open source инструмент для проверки и исправления различных проблем в .env файлах, которые служат для более удобного хранения переменных окружения внутри проекта. Использование переменных окружения рекомендовано манифестом разработки «The Twelve Factor App» — набором лучших практик по разработке приложений для любых платформ. Следование этому манифесту делает ваше приложение готовым к масштабированию, удобному и быстрому развертыванию на современных облачных платформах.

Новая версия dotenv-linter помимо поиска и исправления, ещё может сравнивать .env файлы друг с другом, поддерживает многострочные значения, ‘export’ префикс и многое другое.

Подробное описание изменений с примерами читайте в статье.

>>> Статья

 , , , ,

Alve
()

Microsoft выпустила официальную Rust библиотеку для Windows API

Группа Open Source

Библиотека оформлена в виде Rust crate под MIT License, который можно использовать вот так:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

После этого в скрипте сборки build.rs можно сгенерировать те модули, которые нужны для вашего приложения:

fn main() {
    windows::build!(
        windows::data::xml::dom::*
        windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
        windows::win32::windows_programming::CloseHandle
    );
}

Документация о доступных модулях опубликована на docs.rs.

Пример кода:

mod bindings {
    ::windows::include_bindings!();
}

use bindings::{
    windows::data::xml::dom::*,
    windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
    windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
    let doc = XmlDocument::new()?;
    doc.load_xml("<html>hello world</html>")?;

    let root = doc.document_element()?;
    assert!(root.node_name()? == "html");
    assert!(root.inner_text()? == "hello world");

    unsafe {
        let event = CreateEventW(
            std::ptr::null_mut(),
            true.into(),
            false.into(),
            std::ptr::null(),
        );

        SetEvent(event).ok()?;
        WaitForSingleObject(event, 0);
        CloseHandle(event).ok()?;
    }

    Ok(())
}

Для некоторых вызовов функций используется unsafe, так как эти функции предоставляются как они есть, не адаптируя их к конвенциями Rust. По такому же принципу устроен crate libc, который служит базовым crate для доступа к libc и используется как основа для пострения библиотек с безопасным интерфейсом.

Проект создан в рамках Win32 Metadata Project, который призван облегчить создание API для разных языков программирования. Вторая библиотека, которая была создана на основе Metadata Project на первое фазе проекта - C#/Win32. Также Microsoft анонсировала начало работы над версией для С++, которая использует современный стиль языка.

>>> Github

 , , , ,

vertexua
()

Компания Open Source Security спонсирует разработку gccrs

Компания Open Source Security спонсирует разработку gccrs
Группа Разработка

12 января компания Open Source Security, известная разработкой grsecurity, объявила о спонсировании разработки фронтенда к компилятору GCC для поддержки языка программирования Rust — gccrs.

Изначально gccrs разрабатывался параллельно с оригинальным компилятором Rustc, но из-за отсутствия спецификаций к языку и частых ломающих совместимость изменений на раннем этапе разработка была временно заброшена и возобновилась только после выхода Rust 1.0.

Open Source Security мотивируют своё участие возможным появлениям кода на Rust в ядре Linux и тем, что ядро собирается чаще всего компилятором gcc. Дополнительно к этому, программы на нескольких языках сразу могут иметь уязвимости, вызванные именно этим фактом (см. Exploiting Mixed Binaries), которых бы не было в программах на чистом C или C++.

На данный момент Open Source Security спонсируют работу одного разработчика, который будет работать над gccrs в течение следующего года, с возможностью выделения средств на увеличение штата. Так же в процессе участвует британская компания Embercosm, специализирующаяся на разработке GCC и LLVM и предоставившая оформление официального трудоустройства разработчиков для данной инициативы.

>>> Подробности

 , gccrs, ,

hateyoufeel
()

Rust 1.49

Группа Разработка

Опубликован релиз 1.49 языка программирования Rust.

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

( читать дальше... )

>>> Подробности

 

fsb4000
()

Buttplug 1.0

Buttplug 1.0
Группа Open Source

Тихо и незаметно, поcле 3,5 лет разработки, состоялся первый мажорный релиз Buttplug – комплексного решения для разработки программного обеспечения в сфере дистанционного управления интимными устройствами с поддержкой различных способов подключения к ним: Bluetooth, USB и последовательные порты с помощью языков программирования Rust, C#, JavaScript и TypeScript.

Начиная с этой версии, имплементации Buttplug на C# и JavaScript отбрасываются в пользу соответствующих им библиотек, которые взаимодействуют с единственной оставшейся имплементацией на Rust посредством FFI, что позволило начать разработку библиотек для Python, C++, языков на платформе JVM и Unreal Engine.

Buttplug поддерживает управление с клавиатур, джойстиков и контроллеров виртуальной реальности, а также синхронизацию с фильмами посредством плагинов к VLC и Kodi.

>>> Подробности

 adult, , , ,

Princesska
()

Redox OS 0.6.0

Группа Open Source

Redox — UNIX-подобная операционная система с открытым исходным кодом, написанная на Rust.

Изменения в 0.6:

  • Переписан менеджер памяти rmm. Это устранило утечки памяти в ядре, которые стали серьёзной проблемой с предыдущим менеджером памяти. Также поддержка многоядерных процессоров стала стабильней.

  • Многие вещи от студентов Redox OS Summer of Code были включены в этот релиз. Включая работы по ptrace, strace, gdb, disk partitioning, logging, io_uring и т.д.

  • Переработана стандартная библиотека С relibc для обеспечения большей совместимости с приложениями.

  • Новый формат пакетов pkgar, который быстрее чем старый формат tar.

  • Обновлена коллекция с примерами пакетов: cookbook

  • Много времени к подготовке к этому выпуску было потрачено на адаптацию кода к ломающим изменениям в Rust Nightlies, где был изменён дизайн макроса asm. Также другие проблемы удерживали разработчиков от выпуска. Они надеются что новые версии теперь будут выходить чаще. (Предыдущий выпуск 0.5 был: 24 марта 2019 г.)

Скриншот из VirtualBox: https://i.imgur.com/QqylHXj.png

>>> Подробности

 ,

fsb4000
()

Veloren 0.8 — открытая многопользовательская RPG игра

Группа Игры

Veloren – многопользовательская ролевая игра с открытым исходным кодом на voxel-движке, написанная на языке Rust и вдохновленная такие играми, как Cube World, Legend of Zelda: Breath of the Wild, Dwarf Fortress и Minecraft. Игра находится на ранней стадии разработки, но в неё уже можно играть онлайн.

Veloren полностью открыта, лицензирована по GPL 3. В ней используется оригинальная графика и музыка, созданные её сообществом. У игры есть маленькое, но растущее сообщество в Discord и Reddit.

Игра доступна в виде flatpak и snap пакетов, а также через Airshipper – собственный кросплатформенный launcher игры.

Руководство по игре

Видео игрового процесса

>>> Подробности

 morpg, , ,

cocucka
()

Dotenv-linter обновился до версии 2.2.1

Группа Open Source

Вышло обновление dotenv-linter — полезного инструмента для проверки и исправления ошибок в .env файлах (файлы переменных среды Docker’а).

Многие программисты стараются при разработке ПО придерживаться манифеста двенадцати факторов. Такой подход позволяет избежать большого количества проблем, связанных с развертыванием приложений и их дальнейшей поддержкой. Один из принципов этого манифеста гласит, что все настройки должны хранится в переменных окружения. Это позволяет менять их под разные окружения (Staging, QA, Production) без изменения кода. Для хранения переменных и их значений широко используются .env-файлы.

dotenv-linter находит и исправляет самые частые проблемы в подобных файлах: дублирование имён, неправильный разделитель, переменные без значения, лишние пробелы и так далее. Для каждого файла при этом создаётся резервная копия, чтобы изменения можно было откатить.

Инструмент написан на Rust, он очень быстрый и универсальный — его можно подключить к любому проекту на любом языке программирования.

Dotenv-linter входит в «Awesome Rust Mentors» и помогает начинающим контрибьюторам пройти первые шаги в разработке открытого ПО.

Репозиторий проекта: https://github.com/dotenv-linter/dotenv-linter

Статья с примерами и описанием работы: https://www.mgrachev.com/2020/04/20/dotenv-linter/

>>> Подробности

 dotenv-linter, , ,

Alve
()

Вышел Cloud Hypervisor 0.11.0

Группа Open Source

Cloud Hypervisor (облачный гипервизор) — это монитор виртуальных машин, который работает поверх KVM и оптимизирован для решения задач, свойственных для облачных систем. Cloud Hypervisor написан на Rust и базируется на rust-vmm crates.

Новое в этой версии:

  • добавлена поддержка гостевой ОС Windows
  • добавлена поддержка по умолчанию io_uring для virtio-block
  • прекращена поддержка vhost-user
  • удалена поддержка использования транспорта virtio-mmio вместо PCI
  • добавлена поддержка снапшотов для ARM64
  • улучшено время загрузки Linux
  • изменён уровень ведения журнала по умолчанию
  • добавлен новый параметр –balloon для настройки virtio-balloon

>>> Подробности

 , ,

MaxPower
()

Выпуск языка программирования Rust 1.47

Группа Разработка

Опубликован релиз 1.47 языка системного программирования Rust, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Основные новшества:

  • Реализована поддержка типажей для массивов произвольного размера. Ранее, из-за невозможности определить generic-функции для всех целых значений, стандартная библиотека предоставляла встроенную поддержку типажей только для массивов, размер которых не превышал 32 элемента (типажи для каждого размера были определены статически). Благодаря созданию функциональности константных дженериков («const generics») появилась возможность определения generic-функций для любых размеров массива, но они пока не включены в состав стабильных возможностей языка, хотя реализованы в компиляторе и теперь задействованы в стандартной библиотеке для типажей массивов любого размера. Например, следующая конструкция в Rust 1.47 приведёт к выводу содержимого массива, хотя раньше привела бы к ошибке:
    fn main() {
        let xs = [0; 34];
        println!("{:?}", xs);
    }
  • Обеспечен вывод более коротких трассировок (backtrace), выводимых при внештатных ситуациях. Из трассировки исключены элементы, не представляющие интереса в большинстве ситуаций, но захламляющие вывод и отвлекающие внимание от первичных причин проблемы. Для возвращения полной трассировки можно использовать переменную окружения «RUST_BACKTRACE=full». Например, для кода
    fn main() {
        panic!();
    }

раньше выводилась трассировка в 23 этапа, а теперь она будет сведена к 3 этапам, позволяющим сразу уловить суть:

thread 'main' panicked at 'explicit panic', src/main.rs:2:5
    stack backtrace:
       0: std::panicking::begin_panic
                 at /rustc/d...d75a/library/std/src/panicking.rs:497
       1: playground::main
                 at ./src/main.rs:2
       2: core::ops::function::FnOnce::call_once
                 at /rustc/d...d75a/library/core/src/ops/function.rs:227
  • Компилятор rustc обновлён до сборки с использованием LLVM 11 (Rust использует LLVM в качестве бэкенда для генерации кода). При этом сохранена возможность сборки со старыми LLVM, вплоть до версии 8, но по умолчанию (в rust-lang/llvm-project) теперь используется LLVM 11. Релиз LLVM 11 ожидается в ближайшие дни.
  • На платформе Windows в компиляторе rustc обеспечена поддержка включения проверок целостности потока выполнения (Control Flow Guard), активируемых при помощи флага «-C control-flow-guard». На других платформах данный флаг пока игнорируется.
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы Ident::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from, f32::TAU и f64::TAU.
  • Признак «const», определяющий возможность использования в любом контексте вместо констант, применён в методах:
    • new для всех целых, отличных от нуля;
    • checked_add, checked_sub, checked_mul,checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub и saturating_mul для всех целых;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace и is_ascii_control для типов char и u8.
  • Для FreeBSD задействован инструментарий из FreeBSD 11.4 (FreeBSD 10 не поддерживает LLVM 11).

Взято с opennet.ru

>>> Подробности

 ,

MaxPower
()

Broot v1.0.2 (консольная утилита для поиска и манипуляции с файлами)

Broot v1.0.2 (консольная утилита для поиска и манипуляции с файлами)
Группа Open Source

Консольный файловый менеджер, написанный на языке rust.

Особенности:

  • Предприняты меры для комфортного просмотра больших каталогов.
  • Поиск файлов и каталогов (используется нечеткий поиск).
  • Манипуляция файлами.
  • Есть многопанельный режим.
  • Предварительный просмотр файлов.
  • Просмотр занимаемого места.

Лицензия: MIT
Установленный размер: 5,46 MiB

В зависимостях gcc-libs и zlib.

>>> Подробности

 , ,

greenman
()

Опрос о состоянии Rust 2020

Группа Разработка

Сообщество Rust запустило опрос о состоянии языка и экосистемы 2020 State of Rust Survey.

Цель опроса – выявить слабые и сильные стороны языка и определить приоритеты разработки.

Опрос опубликован на нескольких языках, участие анонимно и потребует около 10-15 минут. Ответы принимаются до 24 сентября.

Результаты прошлого года

Ссылка на форму 2020 State of Rust на русском языке

>>> Подробности

 

perl5_guy
()

Lemmy 0.7.0

Группа Open Source

Состоялся выпуск очередной мажорной версии Lemmy — в будущем федеративной, а сейчас централизованной реализации Reddit-like (или Hacker News, Lobsters) сервера — агрегатора ссылок. На этот раз было закрыто 100 отчётов о проблемах, добавлена новая функциональность, улучшена производительность и безопасность.

Сервер реализует типичную для такого рода сайтов функциональность:

  • создаваемые и модерируемые пользователями сообщества по интересам — сабреддиты, если выражаться терминологией Reddit;
    • да, у каждого сообщества свой собственный модераторский состав и задаваемые правила;
  • создание постов как в виде простых ссылок с превью метаданных, так и полноценные статьи в Markdown длиной в несколько тысяч символов;
  • кросспостинг — дублирование одного и того же поста в разные сообщества с соответствующим индикатором, отображающим это;
  • возможность подписаться на сообщества, посты из которых будут составлять личную ленту пользователя;
  • комментирование постов в древовидном стиле, опять же, с возможностью форматирования текста в Markdown и вставкой изображений;
  • оценивание постов и комментариев посредством кнопок «лайк» и «дизлайк», в сумме составляющие рейтинг, влияющий на отображение и сортировку;
  • система уведомлений в реальном времени со всплывающими сообщениями о непрочитанных сообщениях и постах.

Отличительной чертой реализации является минималистичность и адаптируемость интерфейса: кодовая база написана на Rust и TypeScript, используя технологию WebSocket, мгновенно вживую обновляя содержимое страницы, при этом занимая считанные килобайты в памяти клиента. В будущем планируется клиентское API.

Конечно же, нельзя не отметить практически готовую реализацию федерации серверов Lemmy по общепринятому протоколу ActivityPub, используемого во множестве других проектов сообщества Fediverse. С помощью федерации пользователи разных серверов Lemmy и, более того, пользователи других участников ActivityPub-сети, вроде Mastodon и Pleroma, смогут подписываться на сообщества, комментировать и оценивать посты не только в пределах их собственного сервера регистрации, но и остальных. Также планируется реализация подписки на пользователей и добавление глобальной федеративной ленты, как в упомянутых микроблогах.


Изменения в этом выпуске:

  • на главной странице теперь отображается лента с последними комментариями;
  • множество новых тем оформления, включая новую стандартную светлую (до этого была тёмная);
  • раскрываемые превью контента, сгенерированные iframely, прямо в ленте и на странице поста;
  • улучшенные пиктограммы;
  • автодополнение эмодзи при вводе, и появление интерфейса для их выбора;
  • упрощение кросспостинга;
  • и самое главное, замена pictshare, написанного на PHP, на pict-rs, реализацию на Rust, для управления медиафайлами;
    • pictshare комментируется как проект с серьёзными проблемами безопасности и производительности.

Также разработчики сообщают, что получили финансирование в размере €45,000 от организации NLnet.

Полученные средства планируют потратить на:

  • улучшение доступности (accessibility);
  • реализацию приватных сообществ;
  • введение новых серверов Lemmy;
  • переработку системы поиска;
  • создание дружелюбного сайта с описанием проекта;
  • инструменты модерации для блокировки и игнорирования пользователей.

Для простого ознакомления со стабильной версией можно использовать крупнейший англоязычный сервер — dev.lemmy.ml. На скриншоте запечатлён derpy.email.

>>> Подробности

 , , , ,

commagray
()

Deno 1.0

Deno 1.0
Группа Разработка

Состоялся мажорный релиз Deno – открытой, безопасной среды выполнения программ на языке TypeScript, обладающей следующими особенностями:

  • Исключительно явный доступ к файловой системе, сети и окружению через установку соответствующих разрешений пользователем;
  • Исполнение TypeScript без Node.JS и tsc;
  • Обратная совместимость с Javascript: любое подмножество программ для Deno, не ссылающееся на глобальное пространство имён Deno и являющееся валидным Javascript кодом можно исполнять в браузере;
  • Поставка в виде единственного исполняемого файла, также содержащего в себе дополнительные инструменты, такие как
    • deno run --inspect-brk: дебаг-сервер, взаимодействующий с Visual Studio Code и инструментами удалённой отладки в Google Chrome;
    • deno install: установщик программ для Deno из удалённых ресурсов. Производит загрузку вместе с зависимостями и добавляет в $HOME/.deno/bin cкрипт для запуска программы;
    • deno fmt: производит форматирование кода;
    • deno bundle: бандлер программ на Deno. Производит js-файл, содержащий в себе программу для Deno и её зависимости;
    • WIP: генератор документации и инструмент аудита зависимостей;
  • Отсутствие зависимости от npm и package.json: внешние модули подгружаются и используются (загрузка по сети происходит только во время первого выполнения, в дальнейшем модуль кэшируется вплоть до вызова с флагом --reload) после указания их URL прямо в программе:
    import * as log from "https://deno.land/std/log/mod.ts";
    
  • Абсолютно все асинхронные операции возвращают Promise, в отличие от Node.JS;
  • Выполнение программы всегда останавливается при возникновении необработанных ошибок.

Deno – встраиваемая среда, и может быть использована для расширения существующих программ на Rust с помощью крейта deno_core.

Также команда Deno поставляет стандартные модули без внешних зависимостей, аналогичные по функциональности со стандартной библиотекой в языке Go.

Deno подходит для использования в качестве выполнения скриптов – поддерживается вызов через shebang.
Есть REPL.
Написано на языке программирования Rust.

>>> Подробности

 ,

Princesska
()

Buttplug: набор открытого ПО для теледильдоники

Группа Open Source

Buttplug — открытый стандарт и набор ПО для управления интимными устройствами, такими как фаллоимитаторы, сексмашины, электростимуляторы и прочее.

Особенности:

  • Набор библиотек для Rust, C#, Javascript/Typescript и других популярных языков программирования;

  • Поддержка устройств Kiiroo, Lovense, Erostek и других. Полный список здесь;

  • Поддерживает управление по Bluetooth, USB, HID, Serial интерфейсам, а также звуковое управление;

  • Исходный код открыт по лицензии (BSD 3-Clause).

Среди ПО доступны:

  • Intiface Desktop — контрольный сервер управления устройствами;

  • LaunchControl — плагин для Kodi и VLC для синхронизации с фильмами;

  • Virtual Romance Club — игра с поддержкой устройств виртуальной реальности;

  • Intiface Game Haptics Router — программа для управления устройствами с геймпадов и ВР-контроллеров.

>>> Подробности

 , , , ,

cocucka
()