2.1 KiB
2.1 KiB
Changelog
All notable changes to cargoxx will be documented in this file.
[Unreleased]
Added
- M0 repo skeleton: hand-written
CMakeLists.txt, bootstrapflake.nix, empty C++23 module units for every component listed inTECH_SPEC.md§1 (util,exec,manifest,lockfile,layout,linkdb,resolver,codegen,cli), root modulecargoxx, and a stubmain.cppthat builds an emptycargoxxbinary. .clang-format(LLVM, 100-column) and.gitignore.SPEC.md,TECH_SPEC.md.- M1 foundation in
cargoxx.util:ErrorCode(numbers perTECH_SPEC.md§4),Error,Result<T> = std::expected<T, Error>, andformat(Error)renderingerror[Ennnn]: ...with optional--> path:line:colandhint:lines.formatlives insrc/util/error.cppas a module implementation unit. Catch2 v3wired throughflake.nix(libc++-built override) and registered in CMake;tests/util_error.cppcovers six format cases viacatch_discover_tests.cargoxx.manifestpublic types (Package,Dependency,BuildSettings,Edition,Manifest) andparse(path)returningResult<Manifest>, backed by toml++ vendored asthird_party/toml.hpp. Unknown keys in[package]/[build]and unknown top-level keys are rejected; reserved fields (description,repository,[dev-dependencies],[features],[workspace]) are accepted.tests/manifest_parse.cppcovers 17 cases.manifest::write(m, path)serializes aManifestas TOML using toml++. Dependencies are emitted alphabetically (matches Cargo). Round-trip property is exercised bytests/manifest_write.cpp(9 cases). Defaultedoperator==on the manifest structs supports comparison.cargoxx.layoutpublic types (Target,TargetKind,DiscoveredLayout) anddiscover(project_root, package_name). Walkssrc/recursively for the library (excluding thesrc/bin/subtree), enumeratessrc/main.cpp,src/bin/*.cpp,tests/*.cpp,examples/*.cppflat, sorts results for deterministic output, and returnsLayoutNoTargetwhen neither a library nor any binary is present.tests/layout_discovery.cppcovers 12 cases.