Поддержка целевых платформ OpenBSD и NetBSD — полная маршрутизация по платформам с динамически генерируемыми тройками целевых параметров с использованием std::env::consts::ARCH и std::env::consts::OS. Затрагивает команды build, run, clean и модуль платформы.
src/platform/bsd.rs — новый специальный модуль платформы BSD, общий для FreeBSD, OpenBSD и NetBSD, предоставляющий bin_path, lib_path, elf_path, efi_path и shared_lib_path.
Параметр конфигурации build.out_dir — настраиваемый каталог вывода, который переопределяет путь по умолчанию target/<triple>/<profile> для конечных артефактов. Поддерживается в build, run и при проверке конфигурации.
Команда dcr fmt — новая команда CLI, которая форматирует все исходные файлы C/C++ (*.c, *.cpp, *.h, *.hpp) в src/ и tests/ с помощью clang-format.
Инкрементальная компоновка — функция needs_link() в common.rs, которая проверяет, не является ли какой-либо объектный файл более новым, чем скомпонованный результат, пропуская ненужную повторную компоновку. Реализовано для всех бэкэндов (unix_cc, msvc, gas, nasm).
build.kind = «none» и «custom» — два новых типа проектов для специальных сценариев сборки, при которых не создается стандартный артефакт.
install_bsd.sh — специальный скрипт установки, совместимый с POSIX, для систем BSD (FreeBSD, OpenBSD, NetBSD) с режимами загрузки бинарных файлов и сборки из исходного кода.
Поддержка Linux ARM64 в install.sh — добавлено определение целевой тройки Linux:aarch64|Linux:arm64 для загрузки готовых бинарных файлов.
Обнаружение ОС BSD в install.sh — обнаружение FreeBSD, OpenBSD, NetBSD и определение целевой тройки.
rust-toolchain.toml — явное привязывание инструментария к каналу stable.
Изменена семантика build.target — теперь строго содержит тройку целей (например, x86_64-unknown-linux-gnu) или короткое имя (linux, macos, windows). Больше не используется в качестве пользовательского каталога вывода — эта функциональность перенесена в build.out_dir.
build.standard стал опциональным — изменен с String на Option<String>. Проверка обеспечивает только непустоту для языков, отличных от ASM. Пропускается в выводе dcr.toml, если пуст.
dcr run с out_dir — теперь определяет целевой каталог с учетом build.out_dir, если он настроен, через get_build_string_with_profile() из build.rs.
collect_sources() возвращает пустой вектор вместо ошибки, если не найдено ни одного исходного файла, что позволяет проектам с kind = «none» или kind = «custom» не иметь исходных файлов.
Рефакторинг рабочего процесса выпуска CI/CD — git2 стал целевым (без vendored-openssl на Windows), кросс-компиляция на основе Zig для целей Linux, отличных от x86_64, очистка версий пакетов Arch Linux (тире → точки), символьная ссылка gmake для NetBSD.
Таблица совместимости README — статус сборки/работы на FreeBSD, OpenBSD, NetBSD повышен с «сообщество/по возможности» до «официально поддерживается».
Обновлена документация — build-section.md описывает новые поля build.target и build.out_dir. target-directory.md переписан для уточнения различия.
Проверка зависимостей канала Dev в install.sh — проверяет наличие python3 или jq перед попыткой установки с канала Dev.
stdout/stderr dcr run не наследуются — вывод дочернего процесса захватывался и выводился вручную, что приводило к сбоям интерактивных программ. Исправлено путем перехода на Command::status().
Условие гонки в CI релиза — задания матрицы сборки могли загружать ресурсы в релиз, который еще не существовал. Исправлено добавлением специального задания create-release.
Релиз GHA — переопределение стабильного набора инструментов — устранены проблемы с переопределением набора инструментов Rust в CI.
Очистка версий пакетов Arch Linux — строки версий с дефисами (например, 0.7.0-dev) являются недопустимыми для pkgver в Arch Linux. Исправлено путем замены дефисов точками.
Права доступа GPG после Docker — операции Docker изменяли владельца каталога GPG. Исправлено путем запуска chown после команд Docker.
Пути к артефактам пакетов RPM — артефакты RPM размещались в rpm/x86_64/ вместо fedora/x86_64/. Исправлено в рабочем процессе Dexoron Packages Index.
Надежность разбора JSON в install.sh — добавлен jq в качестве основного парсера с резервным вариантом python3 для поиска релизов в канале dev.
Вспомогательная функция format_roots() — удалена из common.rs. Использовалась только старым путем обработки ошибок в collect_sources().
Отдельные шаги загрузки артефактов для каждой дистрибуции — три отдельных шага actions/download-artifact заменены на унифицированный gh release download --clobber.