Files
dcr/docs-crowdin-export/ru-RU/docs/changelog.mdx.mdx
2026-07-06 15:01:09 +08:00

92 lines
12 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebar_label: Список изменений
---
# Список изменений
## 0.7.1 (02.06.2026)
### Добавлено:
* **`--help` для всех команд** — `dcr build --help`, `dcr run --help`, `dcr new --help`,
`dcr init --help`, `dcr clean --help`, `dcr add --help`, `dcr fmt --help`,
`dcr setup --help`, `dcr tree --help`, `dcr gen --help`, `dcr --update --help`,
`dcr test --help`. Во всех результатах вывода используются стилизованные заголовки (зелёного цвета) и строки с информацией об использовании (голубого цвета).
* **Справочные страницы** — 12 страниц в формате troff в каталоге `man/man1/`: `dcr.1`, `dcr-build.1`,
`dcr-run.1`, `dcr-new.1`, `dcr-init.1`, `dcr-clean.1`, `dcr-add.1`, `dcr-test.1`,
`dcr-gen.1`, `dcr-fmt.1`, `dcr-tree.1`, `dcr-setup.1`.
* **Справочные страницы во всех пакетах** — install.sh, install_bsd.sh, PKGBUILD из AUR,
Debian (cargo-deb), RPM (cargo-generate-rpm), Nix (postInstall), Homebrew
(ресурс), Snap, ресурсы релизов GitHub.
* **Проверка имени проекта** — команды `dcr init` и `dcr new` теперь проверяют имена перед созданием файлов
. Допускаются только буквы ASCII, цифры, символы `_` и `-`.
* **Поля `documentation` и `homepage`** — добавлены в файл `Cargo.toml`.
* **Оптимизации профиля релиза** — `opt-level = "z"`, LTO, `codegen-units = 1`,
`panic = "abort"`, `strip = true` для уменьшения размера бинарных файлов.
* **Платформы Linux i686, armv7, riscv64** — добавлены в рабочий процесс выпуска и скрипты установки.
* **Платформы Linux musl i686 и armv7** — скомпилированы с помощью zigbuild в системе непрерывной интеграции (CI).
* **Пакеты AUR** — рабочий процесс публикации `dcr-dev`, `dcr-dev-bin`.
* **Публикация Snap** — автоматическая публикация Snapcraft в рамках непрерывной интеграции (CI).
* **Значок Snap** — в файле README.
### Изменено:
* **`validate_package_name` стал общедоступным** — его можно вызывать из команд CLI.
* **Таблица платформы README** — реорганизована: варианты libc вынесены в отдельные строки по ОС,
удалены лишние столбцы. Обновлен список архитектур Linux.
* **Вывод `gen.rs` без аргументов** — теперь используется стилизованный вывод вместо необработанного `eprintln!`.
* **`tree.rs`, `fmt.rs` и `setup.rs`** — теперь поддерживают аргументы для опции `--help`.
* **Команды установки из файла README** — `| bash` → `| sh` для обеспечения совместимости с POSIX.
### Исправлено:
* **`dcr new \<invalid-name>` создает каталог, а затем завершается с ошибкой** — теперь проверка
выполняется до начала любых операций с файлами.
* **`dcr init` при указании недопустимого имени каталога** — то же исправление.
* **Отсутствующие справочные страницы в установленных пакетах** — теперь поставляются во всех форматах.
* **Ложное срабатывание по букве диска Windows** — в модуле анализа файлов зависимостей.
* **CRLF (`\r\n`) вызывает сбой в работе парсера зависимостей** — теперь поддерживается обработка смешанных символов окончания строк.
* **Новая строка после обратного слеша не обработана** — при обработке экранирующих символов в функции `parse_d_file`.
## 0.7.0 (01.06.2026)
### Добавлено
* **Поддержка целевых платформ 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_with_target_config` (проверяет `build.target = «linux»`) и `build_with_out_dir` (проверяет настраиваемый каталог вывода).
* **`get_build_string_with_profile` стал `pub`** — чтобы `run.rs` мог определять конфигурацию настраиваемого каталога вывода.
### Изменено
* **Изменена семантика `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` переписан для уточнения различия.
### Исправлено
* **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`.