RU
Добавлено:
- Нативная поддержка Qt — добавлена автоматическая обработка мета-объектов (MOC, UIC, RCC) при включении
build.qt = trueвdcr.toml. - Команда
dcr lint— статический анализ C/C++ черезclang-tidy. Поддерживает--fixдля автоматического исправления. Уважаетbuild.rootsиbuild.src_disableиз конфига. - Три новых ассемблерных бэкенда:
- MASM (
compiler = "ml"/"ml64") — Microsoft Macro Assembler. - FASM (
compiler = "fasm") — Flat Assembler. - LLVM IR (
compiler = "llc") — компиляция.ll→ объектный файл. - Общий ASM-пайплайн — линковка и архивирование вынесены в
core/builder/asm.rs. Новый ассемблерный бэкенд теперь пишется за ~30 строк. - Утилиты для файловой системы —
to_hex()иhome_dir()вынесены вutils/fs.rs. - Утилиты для сборки —
normalize_target(),normalize_kind(),normalize_platform(),default_profile_flags()вынесены вutils/build.rs. -
Утилиты для бэкендов —
asm_lang_flag(),source_extensions(),elapsed_secs()добавлены вcore/builder/common.rs. -
Полноценная автоматизация Bare-Metal / Freestanding — добавлен конфигурационный флаг
build.freestanding = true. При его включении (или при обнаружении bare-metal таргета) DCR автоматически инжектирует флаг-ffreestandingна этапе компиляции, а также-nostdlibи-staticна этапе линковки. - Оптимизация артефактов (LTO и Strip) — в
dcr.tomlдобавлены параметрыbuild.lto(авто-инжекция флага-fltoдля компилятора и линкера) иbuild.strip(автоматическое отсекание отладочной информации через флаг-sлинкера). - Контроль многопоточности сборки — добавлен параметр
build.codegen-units, позволяющий жестко ограничить максимальное количество параллельных потоков сборки для кастомного движкаparallel_build. - Управление паникой (Panic Abort) — добавлен параметр
build.panic = "abort". Для C++ проектов он автоматически отключает генерацию таблиц раскрутки стека и исключений через флаги-fno-exceptions,-fno-unwind-tablesи-fno-asynchronous-unwind-tables.
Изменено:
- Интеллектуальные дефолтные флаги (DCR Defaults) — генерация дефолтных флагов оптимизации (
-O3/-O0), отладки (-g) и предупреждений (-Wall -Wextra) теперь автоматически отключается для bare-metal и freestanding целей, если пользователь переопределилbuild.cflags. - Глобальный вынос bare-metal детектора — функция
is_bare_metal_targetвынесена в общие утилитыsrc/utils/build.rsдля сквозного использования в конвейере сборки. - Рефакторинг архитектуры:
src/config.rsпереименован вsrc/templates.rs.- Начата консолидация конфигурационной логики и оркестрации сборки.
EN
Added:
- Native Qt support — automatic meta-object handling (MOC, UIC, RCC) added when
build.qt = trueis set indcr.toml. dcr lintcommand — C/C++ static analysis viaclang-tidy. Supports--fixfor automatic fixes. Respectsbuild.rootsandbuild.src_disablefrom config.- Three new assembler backends:
- MASM (
compiler = "ml"/"ml64") — Microsoft Macro Assembler. - FASM (
compiler = "fasm") — Flat Assembler. - LLVM IR (
compiler = "llc") — compiles.llfiles viallc -filetype=obj. - Shared ASM pipeline — linking and archiving logic consolidated into
core/builder/asm.rs. Adding a new assembler backend now takes ~30 lines. - Filesystem utilities —
to_hex()andhome_dir()extracted toutils/fs.rs. - Build utilities —
normalize_target(),normalize_kind(),normalize_platform(),default_profile_flags()extracted toutils/build.rs. -
Backend helpers —
asm_lang_flag(),source_extensions(),elapsed_secs()added tocore/builder/common.rs. -
Full Bare-Metal / Freestanding Automation — introduced the
build.freestanding = trueconfiguration option. When enabled (or when a bare-metal target is detected), DCR automatically injects-ffreestandingduring compilation and both-nostdliband-staticduring linking. - Artifact Optimization (LTO & Strip) — added
build.lto(auto-injects-fltofor compiler and linker) andbuild.strip(automatically strips debug symbols via linker-sflag) options todcr.toml. - Compilation Thread Control — added the
build.codegen-unitsoption to strictly limit the maximum number of parallel jobs utilized by the customparallel_buildworker pool. - Panic Behavior Management — added
build.panic = "abort"support. For C++ targets, it automatically strips exception handling and unwind tables via-fno-exceptions,-fno-unwind-tables, and-fno-asynchronous-unwind-tables.
Changed:
- Intelligent Default Flags Generation — automated injection of fallback optimization (
-O3/-O0), debug (-g), and warning (-Wall -Wextra) flags is now suppressed for bare-metal and freestanding builds ifbuild.cflagsare overridden. - Centralized Bare-Metal Detection — relocated the
is_bare_metal_targethelper to common build utilities (src/utils/build.rs) for unified access across the building core. - Architectural Refactoring:
- Renamed
src/config.rstosrc/templates.rs. - Started consolidation of configuration and build orchestration logic.