|
All checks were successful
CI / build-test-release (pull_request) Successful in 11m50s
Two crafter-build invocations sharing XDG_CACHE_HOME used to clobber each other's writes to <cache>/<target>-<march>/std.pcm and the Crafter.Build-*.pcm modules: each LoadProject path wrote directly to the final path, so a reader could see a half-written file and die with "malformed or corrupted precompiled file: 'can't skip to bit X from Y'" (issue #14). Every BuildStdPcm / EnsureCrafterBuildPcms write now goes via <final>.tmp.<pid>.<seq> and atomic-renames into place; concurrent writers always see either the old or the new file, never torn bytes. The mingw-on- Linux std.cppm copy is per-PID for the same reason. Adds a regression test (ConcurrentCacheRace) that races four LoadProject() calls against a cold scratch cache — reproduces the race 5/5 without the fix and passes 5/5 with it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Crafter.Build-Asset.cpp | ||
| Crafter.Build-Clang.cpp | ||
| Crafter.Build-External.cpp | ||
| Crafter.Build-Implementation.cpp | ||
| Crafter.Build-Interface.cpp | ||
| Crafter.Build-Platform.cpp | ||
| Crafter.Build-Progress.cpp | ||
| Crafter.Build-Shader.cpp | ||
| Crafter.Build-Test.cpp | ||
| main.cpp | ||