|
20 | 20 |
|
21 | 21 | ## Highlights |
22 | 22 |
|
23 | | -The left column is what mcpp is; the right is what that is used for. |
24 | | - |
25 | | -| Capability | What it is used for | |
26 | | -|---|---| |
27 | | -| **Build system** — native C++23 modules, `import std` handled automatically, file-level incremental builds, automatic dependency analysis | `mcpp new && mcpp build`, with nothing to configure; an interface that did not change does not cascade into the units importing it | |
28 | | -| **Build plugins** — `build.mcpp` and rule packages | a step mcpp has no rule for is written once and packaged for other projects; CUDA, HIP, SYCL, Vulkan/SPIR-V and Ascend C are each a rule package | |
29 | | -| **Package manager** — SemVer constraints, a lockfile, a cross-project BMI cache, custom indices | two lines of manifest bring in a community module library to `import`; several packages share one lockfile in a workspace | |
30 | | -| **Toolchain manager** — `family@version`, installed on demand | no compiler has to be installed first; `--target` moves the same build to Windows, macOS, Cortex-M or RISC-V bare metal | |
31 | | -| **Environment and runtime** — the user-space environment xlings provides | toolchains and dependencies land in an isolated sandbox rather than in the system; a runner puts the artifact on a board or an emulator | |
32 | | - |
33 | | -mcpp is written entirely in C++23 module interface units and builds itself with |
34 | | -this pipeline, so every row above runs on mcpp itself every day. |
| 23 | +Each line names a capability first, then what it is used for. |
| 24 | + |
| 25 | +- **Build system** — native C++23 modules: `import std` handled automatically, file-level incremental builds, automatic module dependency analysis. `mcpp new && mcpp build` with nothing to configure; an interface that did not change does not cascade into the units importing it |
| 26 | +- **Build plugins** — `build.mcpp` and rule packages. A step mcpp has no rule for is written once and packaged for other projects; CUDA, HIP, SYCL, Vulkan/SPIR-V and Ascend C are each a rule package |
| 27 | +- **Package manager** — SemVer constraint resolution, a lockfile, a cross-project BMI cache, custom indices. Two lines of manifest bring in a community module library to `import`; several packages share one lockfile in a workspace |
| 28 | +- **Toolchain manager** — `family@version`, installed on demand. No compiler has to be installed first, and `--target` moves the same build to Windows, macOS, Cortex-M or RISC-V bare metal |
| 29 | +- **Environment and runtime** — the user-space environment xlings provides. Toolchains and dependencies land in an isolated sandbox rather than in the system; a runner puts the artifact on a board or an emulator |
| 30 | +- **Pure modular self-hosting** — mcpp is written entirely in C++23 module interface units and builds itself with this pipeline: every line above runs on mcpp itself every day |
35 | 31 |
|
36 | 32 | ## Why mcpp |
37 | 33 |
|
|
0 commit comments