LINUX.ORG.RU

Rust


261

19

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

SixtyFPS становится Slint

Группа Open Source

Slint — это набор инструментов для разработки графических пользовательских интерфейсов, подходящий как для встраиваемых устройств, так и для настольных приложений. Имеется поддержка Rust, C++ и JavaScript.

Исходный код Slint написан на Rust. На выбор предлагаются лицензия GPLv3 и альтернативные варианты для проприетарных проектов.

Проект основали Olivier Goffart и Simon Hausmann, которые участвовали в разработке KDE и работали в Trolltech над Qt. Разработка началась весной 2020 года под названием SixtyFPS, что символизировало плавные анимации со скоростью 60 кадров в секунду, но под напором советчиков было принято решение переименовать проект в Slint, что можно расшифровать, как Straightforward, Lightweight, Native Toolkit (простой, легковесный, нативный набор инструментов).

Для описания интерфейса используется специально созданный декларативный язык разметки Slint, который частично был вдохновлён Qt QML. Язык является строго типизированным, с удобной для дизайнера системой измерений и хорошим инструментарием. Для написания бизнес-логики может использоваться Rust, C++ или JavaScript. Для этих языков было разработано интуитивное и идиоматичное API. Язык разметки Slint транслируется в код на Rust или C++, что обеспечивает высокую производительность. Также можно загружать .slint-файлы во время выполнения программы с помощью интерпретатора.

Инструментарий включает реализацию LSP для языка разметки Slint, которая интегрируется с различными средами разработки и редакторами и обеспечивает автодополнение, семантическую подсветку синтаксиса и предпросмотр.

Демонстрационные примеры можно запустить в браузере по ссылке https://slint-ui.com/#demos

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

 , ,

Legioner
()

RustCon Contest 2021

Группа Конференции и встречи

RustCon Contest — индивидуальные соревнования по программированию на языке Rust, которые пройдут с 12 октября по 15 ноября 2021 года. Присоединиться можно в любой момент.

Соревнование состоит из двух частей. Первая часть — решение задач на языке Rust. Вторая — Open-source contribution contest. Участвовать можно как в одной части, так и в обеих. Первая часть создана специально для новичков, а вторая — для разработчиков на Rust со стажем.

Победитель любой части получит билет на RustCon, бейдж победителя и фирменный мерч.

Занявшие второе место получат билет на RustCon.

Занявшие третье место получат скидку на билет 30 % и фирменный мерч RustCon.

Всем участникам даётся скидка 10 % на билет на RustCon.

>>> Правила и регистрация

 ,

it-people
()

RustCon Russia — конференция по языку программирования Rust

Группа Конференции и встречи

RustCon — конференция для тех, кто пишет на Rust, и тех, кто им интересуется.

Конференция пройдёт 3 декабря в Москве.

В программе: 8 докладов, мастер-класс «начинаем embedded на Rust», погружение в rust-тусовку, обед и кофе-брейки.

Некоторые из тем:

  • Rust и Python — как в небольшой команде просто, прозрачно и с минимальными трудозатратами переписать узкие места на Rust (и почему не C++);
  • под капотом у процедурных макросов (доклад про «кишки» rustc и низкоуровневые особенности процедурных макросов);
  • неочевидные прелести Rust.

По промокоду linux.org действует скидка 10 % на билет.

>>> Программа и билеты

 

it-people
()

Rust 1.55.0

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

Команда Rust рада объявить о новой версии языка программирования Rust, 1.55.0!

Основные изменения:

  • Cargo теперь дедуплицирует ошибки компилятора.
  • Ускорен и исправлен парсинг чисел с плавающей точкой по алгоритму Eisel-Lemire.
  • Обновлены варианты для std::io::ErrorKind.
  • Добавлены шаблоны открытого диапазона. (Подробности.)
  • Стабилизированы многочисленные API.

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

 ,

umren
()

Корректирующий выпуск Firefox 91.0.1

Группа Mozilla

Почти сразу после релиза Firefox 91 вышла новая версия браузера, в которой появились важные баг-фиксы и изменения:

  • Исправлена уязвимость (CVE-2021-29991), касающаяся как браузера Firefox так и Thunderbird, с помощью которой было возможно провести атаку по разделению HTTP-заголовков. Проблема вызвана некорректным принятием символа перевода строки в заголовках HTTP/3, что позволяет указать заголовок, который будет принят как два разных заголовка.
  • Исправлен баг, из-за которого менялась высота табов при использовании математических символов.
  • Исправлена проблема, приводящая к отображению вкладок из окон, открытых в приватном режиме, в обычных окнах при просмотре рекомендаций в адресной строке.

Также объявлено о главном изменении в грядущей 92-й версии, которая должна будет выйти 7-го сентября. Разработчики планируют включить опцию WebRender для всех пользователей по умолчанию (касается всех платформ: Linux, MacOS, Windows и Android), а уже в версии 93 отключить WebRender станет невозможно, опции gfx.webrender.force-legacy-layers и MOZ_WEBRENDER=0 будут убраны.

WebRender написан на языке Rust и позволяет добиться существенного увеличения скорости отрисовки и снижения нагрузки на центральный процессор за счёт выноса на сторону видеокарты операций отрисовки содержимого страницы, которые реализованы через выполняемые в GPU шейдеры. Для систем со старыми видеокартами или проблемными графическими драйверами в WebRender будет использован режим программной растеризации gfx.webrender.software=true.

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

 , , , ,

claire
()

Google профинансирует работу над Rust for Linux

Группа Open Source

Компания оплатит год работы Мигеля Охеда (Miguel Ojeda) над его проектом Rust for Linux. Работа будет вестись в рамках проекта Prossimo под эгидой организации ISRG (Internet Security Research Group) — учредителя проекта Let's Encrypt.

По данным Microsoft около 70% всех уязвимостей, описанных в CVE, вызваны небезопасной работой с памятью. Написание на Rust таких компонентов, как драйверы устройств, может снизить риск появления уязвимостей.

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

 , ,

LikeABoss
()

Линус Торвальдс раскритиковал Rust в ядре

Группа Linux General

Линус Торвальдс критикует использование Rust в ядре. Причины: возможность panic(), неделимость библиотеки и соответственно опасные попытки использования 128 bit типов (в ядре запрещено), бесполезность предложенных примеров драйверов.

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

 ,

anonymous
()

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
()