mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 17:09:35 +00:00
- Path dependencies now work correctly: `dcr add` stores them as `{ path =
"./..." }` tables, `is_registry_dep` properly distinguishes registry strings
from path/git strings, and `deps/mod.rs` resolves both table-form and
legacy string-form path dependencies
- Registry dependency paths no longer hardcoded to `project_root/dcr-index`;
now use `package_root_from_registry_info()` which resolves relative to the
registry cache root (`~/.dcr/`)
- Registry dependencies are now actually built: `build_project_at()` is
called when `include_dir` or `lib_dir` is missing
Added:
- `SIGINT`/`Ctrl+C` handler via `ctrlc` crate — `dcr build` now checks
`BUILD_INTERRUPTED` flag at key points and aborts cleanly
- `utils/build.rs` — extracted shared utilities: `parse_version_info`,
`normalize_target_os`, `resolve_compiler`, `primary_language`,
`resolve_pkg_config_flags` and config helpers. Eliminates code duplication
between `cli/build.rs`, `cli/run.rs`, `cli/clean.rs`, `cli/gen.rs`
- `utils/fs.rs::with_dir` — extracted common directory-scoped execution
- `run_command_sync_output` in `builder/common.rs` with global `OUTPUT_MUTEX`
— synchronized compiler output across all backends (unix_cc, gas, nasm, msvc)
- New helper functions in `deps/register.rs`: `get_registry_cache_root`,
`package_root_from_registry_info`, `registry_include_dir`, `registry_lib_dir`,
`path_from_string_dep`
- Unit tests for `register.rs` (`is_registry_dep`, `package_root_from_registry_info`),
`deps/mod.rs` (`path_dep_path`, `push_default_lib_dirs`),
`utils/build.rs` (`normalize_target_os`, `parse_version_info`)
Removed:
- Removed unused dependencies `indicatif` and `console` from `Cargo.toml`
9.4 KiB
9.4 KiB
Changelog
[0.6.6] - 2026-05-18
Fixed:
- Path dependencies now work correctly:
dcr addstores them as{ path = "./..." }tables,is_registry_depproperly distinguishes registry strings from path/git strings, anddeps/mod.rsresolves both table-form and legacy string-form path dependencies - Registry dependency paths no longer hardcoded to
project_root/dcr-index; now usepackage_root_from_registry_info()which resolves relative to the registry cache root (~/.dcr/) - Registry dependencies are now actually built:
build_project_at()is called wheninclude_dirorlib_diris missing
Added:
SIGINT/Ctrl+Chandler viactrlccrate —dcr buildnow checksBUILD_INTERRUPTEDflag at key points and aborts cleanlyutils/build.rs— extracted shared utilities:parse_version_info,normalize_target_os,resolve_compiler,primary_language,resolve_pkg_config_flagsand config helpers. Eliminates code duplication betweencli/build.rs,cli/run.rs,cli/clean.rs,cli/gen.rsutils/fs.rs::with_dir— extracted common directory-scoped executionrun_command_sync_outputinbuilder/common.rswith globalOUTPUT_MUTEX— synchronized compiler output across all backends (unix_cc, gas, nasm, msvc)- New helper functions in
deps/register.rs:get_registry_cache_root,package_root_from_registry_info,registry_include_dir,registry_lib_dir,path_from_string_dep - Unit tests for
register.rs(is_registry_dep,package_root_from_registry_info),deps/mod.rs(path_dep_path,push_default_lib_dirs),utils/build.rs(normalize_target_os,parse_version_info)
Removed:
- Removed unused dependencies
indicatifandconsolefromCargo.toml
[0.6.5] - 2026-05-13
Added:
- New dependency registry system
- Package type support (
lib,app,none) indcr.toml - Library packaging functionality: automatically generates
includeandlibdirectories intarget/forlibtype projects - Expanded CI build targets:
- Linux:
aarch64-unknown-linux-gnu,x86_64-unknown-linux-musl,aarch64-unknown-linux-musl - Windows:
aarch64-pc-windows-msvc,x86_64-pc-windows-gnu,aarch64-pc-windows-gnullvm
- Linux:
Changed:
src/core/deps/modular architecture overhaul- Native platform pathing defaults for Linux (now dynamic architecture detection)
- Improved
runcommand output handling
[0.6.0] - 2026-05-12
Added:
- Full Git dependency support in
dcr.toml- Support for
git,branch,tag, andrevfields - Automatic cloning and checkout via
git2 - Dependencies are stored in
target/<profile>/deps/git/
- Support for
- New
dcr addcommand for easy dependency management- Short syntax:
github:user/repo,gitlab:user/repo,path:/to/lib - Automatic GitHub resolution for
git:user/repo
- Short syntax:
- Visual feedback for dependency fetching with in-place status updates ("Fetching" → "Fetched")
- Modular dependency management architecture in
src/core/deps/
[0.5.1] - 2026-04-12
Fixed:
- Windows compatibility for target-specific config without --target flag
Added:
- Default host target detection for automatic target overrides
- Unit tests for target normalization
Improved:
- Config value lookup optimization
- Documentation for Windows cross-compilation
[0.5.0] - 2026-04-10
Added:
- Full inheritance system for all config sections:
build,toolchain,run,workspace,dependencies- Order:
section.target.profile→section.profile.target→section.target→section.profile→section inherit = falseto disable inheritance completely- Target-specific overrides:
[build.linux],[toolchain.windows],[run.macos], etc.
- Order:
- Cross-compilation support with
--target <triple>- Full target triples and short names (
linux,macos,windows) - Target-specific config sections:
[build.<target>],[toolchain.<target>],[run.<target>]
- Full target triples and short names (
- Workspace and dependencies support target/profile inheritance
- Multiple targets build:
[build.targets]to build for multiple targets simultaneously - Target directory structure:
target/<target>/<profile>/(native or triple) - Updated documentation with cross-compilation guide and Arch Linux examples
[0.4.0] - 2026-04-10
Added:
- Test command:
dcr testanddcr tests- Automatic compilation and linking for tests without manual configuration
dcr test --initcreates test template and header- Test framework with EXPECT/SKIP macros in
dcr_test.h
- Improved test integration: added test CLI module and basic test suite
- Documentation updates for testing functionality
[0.3.0] - 2026-03-18
Added:
dcr gencommand for IDE integration and build tool supportdcr gen project-info: Output project metadata as JSONdcr gen compile-commands: Generatecompile_commands.jsonfor clangd and clang-tidydcr gen vscode: Generate VS Code.vscode/integration (launch.json, tasks.json, settings.json)dcr gen clion: Generate JetBrains CLion.idea/integration (run configurations, build targets)
- Full workspace support for all
gensubcommands
[0.2.10] - 2026-03-16
Added:
build.stepsfor pre-build generators (e.g.,moc/uic/rcc)build.pkg_configforpkg-config-driven cflags/ldflags resolution[toolchain]support foruic,moc,rcc- Step command variables (
{uic},{moc},{rcc},{cflags},{stem},{in},{out}) {profile}placeholder support for dependency paths
[0.2.9] - 2026-03-14
Added:
- Header dependency tracking for fine-grained incremental builds (rebuilds when
#includefiles change) - Complete internal rewrite of the builder module: merged duplicate compilation backends
Changed:
cflagsanddefault_flagsno longer incorrectly leak to the linker stage in GCC/Clang- Reduced builder codebase size by over 20% while increasing reliability
- Greatly expanded test suite with 34 new tests covering configuration, CLI errors, and path operations
[0.2.8] - 2026-03-06
Added:
- Workspace support (
[workspace]with deps ordering) clean --allfor workspace members Changed:- Project root discovery for
build/run/clean(searches parent dirs) - Workspace paths are excluded from root source scan
- Build output now uses a Cargo-style
Compiling <name> v<version>line - Build time now reports total time for the whole build stage (workspace included)
- Cache hits are silent (no compile line when nothing is rebuilt)
- Safer build cache: fingerprints include headers and resolved library files
[0.2.7] - 2026-03-03
Added:
- Toolchain overrides via
[toolchain]and env (DCR_*) - ASM
.Spreprocessing via GCC/Clang (-x assembler-with-cpp)
[0.2.6] - 2026-03-01
Added:
sharedlibbuild kind (shared library output)- ASM projects (
build.language = "asm") - NASM and GAS backends
build.platformarchitecture hint for-march//arch- Basic CLI integration tests
[0.2.5] - 2026-02-26
Added:
- Incremental builds (object caching by mtime)
build.kindwithstaticlibsupport- Custom output directory via
build.target
[0.2.4] - 2026-02-22
Added:
- Custom build flags:
build.cflagsandbuild.ldflags - Recursive source discovery inside
src/ - Path dependencies with auto include/lib resolution and
dcr.lockgeneration (experimental) - Add docs/index.md and docs/dcr-toml.md
[0.2.3] - 2026-02-21
Added:
- Modular builders for
gcc,clang,msvc - Platform-specific binary path generation (Linux/macOS/Windows)
Changed:
- Build configuration moved to
[build](language,standard,compiler) dcr.tomlformatting now includes the[build]section- Build uses built-in
debug/releaseflags per compiler - Build compiles all
*.c/*.cppfiles insrc/into a single binary (no incremental build) - Updated
dcr.tomlexamples in documentation
[0.2.2] - 2026-02-20
Changed:
- Reworked
dcr.tomlhandling: added read, validation, and edit throughcore::config newandinituse the new config creation logicbuildandrunnow requiredcr.tomland readcompilerandnamefrom it
[0.2.1] - 2026-02-18
Changed:
- Translated user-facing CLI messages to English
- Unified error and warning output via
utils::log::{error, warn} - Updated
--helpoutput: translated headers and examples to English, usedprintc, and appliedBOLD_*styles - Translated installer script messages in
install.shandinstall.ps1to English
[0.2.0] - 2026-02-17
Changed:
- Project migrated from Python to Rust
- CLI and commands (
new,init,build,run,clean,--help,--version,--update) ported to Rust - Updated
--updateflag: added support for GNU/Linux, Windows, macOS - Updated
README.md,CONTRIBUTING.md, andinstall.shfor the Rust implementation - Added
install.ps1for Windows - Updated
install.shfor GNU/Linux and macOS
Added:
- Added
install.ps1for Windows - Support for GNU/Linux, Windows, macOS (x86_64/arm)
Important:
- Code was ported with neural networks; future versions will include bug fixes and logic changes
[0.1.2] - 2026-02-12
Added:
- Update command
install.shinstall script and README instructions--versionflag
Changed:
- Improved CLI output, added colors, and updated
--help - Updated project run/build handling in
run.py/build.py
[0.1.1] - 2026-02-11
Changed:
- Updated
--help main.pynow runs correctly when executed directly
[0.1.0] - 2026-02-11
First public release.
Added:
- Base commands
new,init,build,run,clean - Build profiles
debugandrelease dcr.tomlandsrc/main.ctemplates