Download Latest Version dcr-i686-pc-windows-msvc-0.8.5.exe (1.3 MB)
Email in envelope

Get an email when there's a new version of dcr

Home / v0.6.7
Name Modified Size InfoDownloads / Week
Parent folder
dcr-x86_64-apple-darwin-0.6.7 2026-05-26 5.5 MB
dcr-x86_64-pc-windows-gnu-0.6.7.exe 2026-05-26 9.1 MB
dcr-aarch64-unknown-linux-musl-0.6.7 2026-05-26 4.3 MB
dcr-x86_64-unknown-linux-musl-0.6.7 2026-05-26 4.8 MB
dcr-aarch64-unknown-linux-gnu-0.6.7 2026-05-26 4.3 MB
dcr-aarch64-pc-windows-msvc-0.6.7.exe 2026-05-26 4.2 MB
dcr-x86_64-pc-windows-msvc-0.6.7.exe 2026-05-26 6.2 MB
dcr-x86_64-unknown-linux-gnu-0.6.7 2026-05-26 6.3 MB
dcr-aarch64-apple-darwin-0.6.7 2026-05-26 5.2 MB
README.md 2026-05-26 3.6 kB
v0.6.7 source code.tar.gz 2026-05-26 110.8 kB
v0.6.7 source code.zip 2026-05-26 153.1 kB
Totals: 12 Items   50.2 MB 0

Added:

  • build.kind = "efi" — UEFI PE32+ executable support. Links with -shared -nostdlib -Wl,-dll -Wl,--subsystem,10, output via efi_path() with .efi extension, rejected by dcr run.
  • build.kind = "elf" — bare-metal ELF executable support. Uses elf_path() output path, rejected by dcr run, no extra linker flags.
  • build.filename and build.extension in dcr.toml — complete control over the final artifact name without relying on package.name. Example: toml [build] filename = "KERNEL" extension = "EFI" Produces KERNEL.EFI (works for bin, staticlib, and sharedlib).
  • Automatic injection of --target=<build.target> into compiler flags when build.target is set in dcr.toml. This greatly simplifies clang-based cross-compilation (especially for bare-metal targets like aarch64-none-elf).
  • Bare-metal targets (containing none, -elf, eabi, baremetal) no longer receive DCR's internal default flags (-g, -Wall, -Wextra, -fno-omit-frame-pointer, -DDCR_DEBUG, etc.). Prevents unwanted sections (.comment, debug info, etc.) that break custom linker scripts when inherit = true.
  • build.ldscript in dcr.toml — linker script path passed as -T <path> to the linker. Essential for bare-metal/embedded/freestanding targets.
  • dcr build --verbose — prints compiler/linker command lines (also works with DCR_DEBUG env var).
  • dcr add <name> without a source argument — if a registry is configured, DCR looks up the package by name and adds it as a version dependency.

Fixed:

  • build.target declared in dcr.toml is now correctly used as the default target even when --target is not passed on the command line (previously the host target was always forced for config resolution).
  • dcr run with --target or build.target now correctly finds the binary in the arch-specific target directory.
  • dcr run checks profile-specific build.{profile}.kind before rejecting library builds (previously only checked build.kind).
  • dcr clean now reads build.target from dcr.toml when no --target flag is given.
  • Linux: target directory is now consistent — target/<arch>-unknown-linux-gnu/<profile>/ (no stale target/<profile>/).
  • dcr.lock is now populated with all resolved dependencies (registry, path, git) instead of being always empty.
  • Git dependencies are now properly recognized and recorded in dcr.lock.
  • is_registry_dep correctly identifies version-based registry dependency tables ({ version = "..." }) and rejects tables with unknown keys.
  • dcr test accepts --debug/--release flags (defaults to debug profile instead of always release).
  • Build fingerprint cache (build_cache_path) now includes target_dir — different targets no longer share a single cache entry.
  • object_path no longer hardcodes the src/ prefix — works correctly with custom build.roots (e.g. roots = ["lib"]).
  • dcr update now generates .exe candidates for all Windows targets, not just x86_64-pc-windows-msvc.
  • Compiler existence is verified before starting the build (clear error if compiler is not found in PATH).
  • Consolidated duplicate OUTPUT_MUTEX definitions — MSVC backend now uses the shared mutex from common.rs.
  • Registry cache root directory is created if missing (prevents cryptic errors when ~/.dcr/ does not exist).

Changed:

  • openssl dependency is now conditional (cfg(not(windows))) — no longer pulled in on Windows, fixing Windows CI builds that lack Perl Locale::Maketext::Simple. On Linux (including musl cross-compilation) the vendored OpenSSL build is unchanged.
Source: README.md, updated 2026-05-26