digitalmars.D - [GSoC 2026] Ninja Build Backend for DUB, wrap-up
- Hariprakash (43/43) Aug 25 Hi everyone,
- Basile B. (5/12) Aug 25 That's an intersting project. I remember there has been tensions
- Hariprakash (9/24) Aug 26 Good question. This is additive, not a replacement, dub generate
Hi everyone, I'm Hariprakash, this summer's GSoC contributor working on a native Ninja build backend for dub, mentored by Atila Neves. I should have been posting weekly updates here like others in the cohort and didn't, apologies for the silence. Sharing the full wrap-up now that coding is done. What it does dub currently invokes the compiler directly on every build, no persistent build graph, no incremental tracking, no parallelism across independent modules. This adds dub generate ninja, producing a correct build.ninja without changing how anyone already uses dub. What got built Generator skeleton, valid build.ninja for single and multi file Self-regeneration, build.ninja re-invokes dub generate ninja when DMD/LDC/GDC support through dub's existing compiler flag translation Challenges The most useful feedback all summer was on what a test actually proves. My first -makedeps patch got rejected for testing incidentals, grepping generated text instead of behavior. I rewrote it so the test proves dependency tracking actually works end to end. Also hit a real Windows bug. Unescaped colons in Windows paths were breaking Ninja's own colon syntax, since C:\ collides with Ninja's target:deps separator. Building on Windows from day one, as planned, caught this early instead of it turning into a field bug later. Where it stands Everything in the proposal is merged into dlang/dub. CI is green apart from a pre-existing Alpine LDC linker failure unrelated to this work. What's left is user-facing documentation for dub generate ninja, covering options, self-regeneration behavior, and incremental rebuild semantics. Full write-up: https://gist.github.com/hariprakazz/2acafdf8b58fa6d8adafa85667c097be Thanks to Atila for direct, honest review all summer, it made the project better even when it meant redoing things.
Aug 25
On Tuesday, 25 August 2026 at 08:06:32 UTC, Hariprakash wrote:Hi everyone, I'm Hariprakash, this summer's GSoC contributor working on a native Ninja build backend for dub, mentored by Atila Neves. I should have been posting weekly updates here like others in the cohort and didn't, apologies for the silence. Sharing the full wrap-up now that coding is done. [...]That's an intersting project. I remember there has been tensions in the dlang-community group (d-scanner, dcd, etc.) toward the ninja build system. Does that mean that now there's no need for things like making PRs for updating the Meson things ?
Aug 25
On Tuesday, 25 August 2026 at 17:08:24 UTC, Basile B. wrote:On Tuesday, 25 August 2026 at 08:06:32 UTC, Hariprakash wrote:Good question. This is additive, not a replacement, dub generate ninja sits alongside the existing generators (visuald, sublimetext, cmake) as another opt-in output format. It doesn't touch how Meson-based projects build, and I don't have visibility into the broader Meson-vs-Ninja discussions in dlang-community, so I can't speak to whether it changes anyone's plans there. From dub's side, nothing about existing workflows changes unless a user explicitly runs the new command.Hi everyone, I'm Hariprakash, this summer's GSoC contributor working on a native Ninja build backend for dub, mentored by Atila Neves. I should have been posting weekly updates here like others in the cohort and didn't, apologies for the silence. Sharing the full wrap-up now that coding is done. [...]That's an intersting project. I remember there has been tensions in the dlang-community group (d-scanner, dcd, etc.) toward the ninja build system. Does that mean that now there's no need for things like making PRs for updating the Meson things ?
Aug 26








Hariprakash <hariprakash4389285 gmail.com>