beta-v2.0.0
Pre-releaseCForge Release beta-v2.0.0
Summary
CForge v2.0.0-beta marks the next evolution of our build system—now implemented in modern C and C++ after an interim Rust rewrite. This change brings tighter integration with existing C/C++ codebases, lower memory overhead, and more direct control over platform-specific optimizations. You’ll still get the revamped cforge.toml syntax, first-class workspace support, smarter dependency resolution, and built-in testing/packaging hooks. We’ve stabilized core features and look forward to your feedback on the new native plugin API.
Highlights
-
Native C & C++ Core
After experimenting with Rust, we’ve re-implemented CForge’s engine in C and C++ for seamless integration with your tooling and faster startup times. -
Consistent Config with
cforge.toml
Same clean, TOML-based layout for dependencies, build options, tests, and packaging metadata (although updated settings). -
Plugin System (Native API)
Fully C/C++-based plugin interface—write plugins that link directly against CForge without any FFI layers. -
Workspace Management
Multi-crate/workspace support remains, with per-package overrides and unified commands:cforge build cforge test cforge package -
Integrated Testing & Packaging
Declare your tests and packaging rules right incforge.toml—no external scripts needed.
New Features
1. Smarter Dependency Resolution
- Unified handling of vcpkg, Git, and system libraries in a single pass
- On-disk caching for offline or containerized builds
2. Parallel & Incremental Builds
- Change detection to rebuild only what’s necessary
- Parallel job scheduling guided by CPU count (
--jobs)
3. Enhanced CLI
- Verbosity control with
-v, (verbose) and-q(quiet) cforge cleanfor environment and config diagnostics
4. Built-in Test Runner
- Execute unit and integration tests via
cforge test - Filter tests by name or tags for targeted runs
Migration Guide
-
Install v2.0.0-beta
.\scripts\bootstrap.ps1
-
Update
cforge.toml- Rename
[deps]→[dependencies] - Relocate build flags under
[build]
- Rename
-
Re-initialize Workspace (if needed)
cforge workspace init
-
Clean & Build
cforge clean cforge build
Performance Improvements
- Cold builds up to 50% faster thanks to minimal startup overhead in C/C++
- Warm rebuilds often complete in <1 s on mid-sized projects
Known Issues
- Plugin API still evolving—possible breaking changes before stable 1.0.0
- Windows MSI installer coming soon; use bootstrap scripts for now
- Occasional lockfile contention on network drives
Updated cforge.toml and cforge.workspace.toml syntax
cforge.toml
[project]
name = "cforge"
version = "2.0.0"
description = "A C/C++ build tool with dependency management"
cpp_standard = "17"
binary_type = "executable"
authors = ["Chase Sunstrom <casunstrom@gmail.com>"]
homepage = "https://github.com/ChaseSunstrom/cforge"
repository = "https://github.com/ChaseSunstrom/cforge.git"
license = "MIT"
[build]
build_type = "Debug"
directory = "build"
source_dirs = ["src"]
include_dirs = ["include"]
[build.config.debug]
defines = ["DEBUG=1", "FMT_HEADER_ONLY=ON"]
flags = ["DEBUG_INFO", "NO_OPT"]
[build.config.release]
defines = ["NDEBUG=1", "FMT_HEADER_ONLY=ON"]
flags = ["OPTIMIZE"]
[test]
enabled = true
[package]
enabled = true
generators = ["ZIP", "TGZ", "DEB"]
vendor = "Chase Sunstrom"
contact = "Chase Sunstrom <casunstrom@gmail.com>"
[dependencies]
directory = "vendor"
[dependencies.git]
tomlplusplus = { url = "https://github.com/marzer/tomlplusplus.git", tag = "v3.4.0" }
fmt = { url = "https://github.com/fmtlib/fmt.git", tag = "11.1.4" }cforge.workspace.toml
[workspace]
name = "workspace"
description = "A C++ workspace created with cforge"
# Projects in legacy format: name:path:is_startup_project
# projects = [
# "proj1:proj1:true",
# "proj2:proj2:false",
# "proj3:proj3:false"
# ]
[[workspace.project]]
name = "proj1"
# optional path
# path = "projects/proj1"
startup = true
[[workspace.project]]
name = "proj2"
startup = true
[[workspace.project]]
name = "proj3"
startup = false
# Main project is the first project
main_project = "proj1"Acknowledgments
Thanks to our early testers, GitHub contributors, and everyone filing issues and PRs. Your feedback has been invaluable in shaping CForge’s C/C++ core into a faster, more flexible tool.
Download v2.0.0-beta today and join us on GitHub Discussions—or file an issue if you hit any bugs or have feature ideas. Happy building!