Added:
- OpenBSD and NetBSD target support — full platform routing with dynamically generated target triples using
std::env::consts::ARCHandstd::env::consts::OS. Affectsbuild,run,clean, and the platform module. src/platform/bsd.rs— new dedicated BSD platform module shared by FreeBSD, OpenBSD, NetBSD, providingbin_path,lib_path,elf_path,efi_path, andshared_lib_path.build.out_dirconfiguration option — custom output directory that overrides the defaulttarget/<triple>/<profile>path for final artifacts. Supported inbuild,run, and config validation.dcr fmtcommand — new CLI command that formats all C/C++ source files (*.c,*.cpp,*.h,*.hpp) insrc/andtests/usingclang-format.- Incremental linking —
needs_link()function incommon.rsthat checks whether any object file is newer than the linked output, skipping unnecessary re-linking. Implemented for all backends (unix_cc,msvc,gas,nasm). build.kind = "none"and"custom"— two new project kind types for special build scenarios where no standard artifact is produced.install_bsd.sh— dedicated POSIX-compliant install script for BSD systems (FreeBSD, OpenBSD, NetBSD) with binary download and source build modes.- Linux ARM64 support in
install.sh— addedLinux:aarch64|Linux:arm64target triple detection for pre-built binary downloads. - BSD OS detection in
install.sh— FreeBSD, OpenBSD, NetBSD detection and target triple resolution. rust-toolchain.toml— explicitstablechannel toolchain pinning.- Nix support —
flake.nixfor Nix package manager. Run vianix run github:dexoron/dcror install withnix profile install github:dexoron/dcr. Contributed by community contributor. - Snapcraft publish —
dcruppublished on Snapcraft. Install withsudo snap install dcrup. - Integration tests —
build_with_target_config(verifiesbuild.target = "linux") andbuild_with_out_dir(verifies custom output directory). get_build_string_with_profilemadepub— sorun.rscan resolve custom output directory configuration.
Changed:
build.targetsemantics changed — now strictly holds the target triple (e.g.x86_64-unknown-linux-gnu) or a short name (linux,macos,windows). No longer doubles as a custom output directory — that functionality moved tobuild.out_dir.build.standardmade optional — changed fromStringtoOption<String>. Validation only enforces non-empty for non-ASM languages. Skipped indcr.tomloutput when empty.dcr runwithout_dir— now resolves target directory respectingbuild.out_dirwhen configured, viaget_build_string_with_profile()frombuild.rs.collect_sources()returns empty vec instead of error when no source files are found, allowingkind = "none"orkind = "custom"projects to have no source files.- CI/CD release workflow refactored —
git2made target-specific (no vendored-openssl on Windows), Zig-based cross-compilation for non-x86_64 Linux targets, Arch Linux package version sanitization (dashes → dots), NetBSDgmakesymlink. - README compatibility table — FreeBSD, OpenBSD, NetBSD build/runtime status upgraded from community/best-effort to officially supported.
- Documentation rewritten — available at dcr.dexoron.su/docs or in the
docs/directory. Installation guides, commands, and reference updated to reflect current CLI and config format. - Site rewritten —
dcr-sitemigrated to Docusaurus with internationalization (i18n) support, improved navigation, and updated content across all sections. - Dev channel dependency check in
install.sh— checks forpython3orjqbefore attempting dev channel installations.
Fixed:
dcr runstdout/stderr not inherited — child process output was captured and manually printed, breaking interactive programs. Fixed by switching toCommand::status().- Release CI race condition — build matrix jobs could upload assets to a release that did not yet exist. Fixed by adding a dedicated
create-releasejob. - GHA release — stable toolchain override — resolved Rust toolchain override issues in CI.
- Arch Linux package version sanitization — version strings with dashes (e.g.
0.7.0-dev) are invalid for Arch Linuxpkgver. Fixed by replacing dashes with dots. - GPG permissions after Docker — Docker operations changed GPG directory ownership. Fixed by running
chownafter Docker commands. - RPM package artifact paths — RPM artifacts placed under
rpm/x86_64/instead offedora/x86_64/. Corrected in Dexoron Packages Index workflow. install.shJSON parsing robustness — addedjqas primary parser withpython3fallback for dev channel release lookups.
Removed:
format_roots()helper — removed fromcommon.rs. Was only used by the old error path incollect_sources().- Individual per-distro artifact download steps — three separate
actions/download-artifactsteps replaced with unifiedgh release download --clobber.