Выпуск Rust 1.83. Развитие инструментария Xen и табличного процессора на Rust

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

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

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

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

Дополнительно можно отметить несколько проектов на языке Rust:

  • Разработчики платформы XCP-ng, развиваемой проектом Xen, опубликовали отчёт о развитии проекта по созданию нового низкоуровневого инструментария для гипервизора Xen, написанного на языке Rust и идущего на смену libxl. Инструментарий планируют задействовать в платформе XCP-ng для низкоуровневого управления хост-окружением и гостевыми системами. В настоящее время работа сосредоточена на создании crate-пакетов на языке Rust, способных заменить Си-библиотеки из пакета xen-libs. Например, ведётся работа над созданием Rust-аналогов библиотек xenctrl и xeneventchan с реализацией интерфейса для гипервызовов Xen и каналов обработки событий.
  • Проект IronCalc развивает движок для создания табличных процессоров, написанный на языке Rust, а также сопутствующий инструментарий для работы с электронными таблицами. Движок рассчитан на встраивание в приложения на языках программирования Rust, Python и JavaScript (возможно появится поддержка R, Julia и Go). Поддерживается встраивание как пользовательского интерфейса для создания и редактирования электронных таблиц (стиль и оформление настраивается по желанию разработчиков), так и средств автоматизации работы с электронными таблицами. Предоставляются компоненты для манипуляции электронными таблицами в графическом режиме, консоли и в web-приложениях. Заявлено стремление к обеспечению полной совместимости с файлами в формате Microsoft Excel. Код проекта распространяется под лицензиями MIT и Apache 2.0. Доступна online-демонстрация, работающая в браузере.

    На текущем этапе развития IronCalc можно рассматривать как рабочий прототип, формирующий интерфейс для работы через браузер,
    поддерживающий около 200 функций, позволяющий управлять стилем и форматированием ячеек, обеспечивающий импорт и экспорт в формате xlsx, поддерживающий интеграцию с программами на Rust и Python. В версии IronCalc 1.0 планируется добиться 90% совместимости с Excel.

  • Опубликован выпуск проекта uutils coreutils 0.0.28, развивающего аналог пакета GNU Coreutils, переписанный на языке Rust. В состав coreutils входит более ста утилит, включая sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Целью проекта является создание кроссплатформенной альтернативной реализации Coreutils, способной работать в том числе на платформах Windows, Redox и Fuchsia. В отличие от GNU Coreutils реализация на Rust распространяется под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL.

    В новой версии uutils улучшена совместимость с эталонным тестовым набором GNU Coreutils, при прохождении которого успешно выполнено 476 тестов (на 21 больше, чем в прошлой версии), 94 тестов пока не удаётся пройти. Проведена оптимизация утилит cksum, mkdir и tr. Расширены возможности, улучшена совместимость и добавлены недостающие опции для утилит basenc, cat, cksum, cp, date, dd, dircolors, echo, hashsum, hostname, join, ls, ln, mkdir, mv, od, paste, printf, runcon, sort, sync, test, uptime, users, tr, tsort, uucore.

Источник: http://www.opennet.ru/opennews/art.shtml?num=62317