Just to clarify this, we're talking about the executable in the unique cache folder.

> We could try to delete it and move it out of the way if deleting fails before we attempt to build the program...

Yes in any case try to delete the previous exe, if that fails report an error to the user.
Imagine the surprise when you updated your sources and rdmd runs an old exe.

```d
    if (chain(root.only, myDeps.byKey).array.anyNewerThan(lastBuildTime))
    {
        //<-- HERE delete output file before rebuild or within rebuild
        immutable result = rebuild(root, exe, workDir, objDir,
                                   myDeps, compilerFlags, addStubMain);
        //<- Now if compilation fails you no longer have an exe, but for a good reason.
        if (result)
            return result;
```