Getting Started
This page focuses on the current Windows x86-64 object-build workflow used while the selfhosting compiler is being completed.
Requirements
- Windows x64
- the packaged
msplc-project-debug.exe - the
units\directory containing the Semantic.secompiler units - enough free disk space for build artifacts and logs
The runner package is intentionally self-contained for debugging. You do not need to open the EXE by double-clicking; the batch files pass the required arguments.
Recommended workflow
1. Start the normal build
START-HERE.bat
The stable runner:
- scans the Semantic units;
- builds a best-effort project index;
- starts several isolated worker processes;
- gives each unit its own hard timeout;
- keeps successful
.objfiles even when other units fail; - records a status file and worker log for each unit.
2. Retry slow units
RETRY-120S.bat
A timeout is a maximum worker runtime. A unit that encounters a real compiler error can fail immediately; it does not wait for the timeout budget to expire.
3. Inspect current status
STATUS.bat
Typical summary:
STATUS total=95 ready=... compiling=0 queued=0 timeout=... failed=... objects=...
4. Produce a diagnostic report
MAKE-REPORT.bat
The report groups unit status, errors and object paths so backend failures can be fixed by error family instead of one file at a time.
Where objects are written
build\
objects\
units\
<unit>\
status.json
worker.log
objects\
00000_*.obj
00001_*.obj
...
Why isolated workers?
A goroutine timeout cannot safely stop a compiler path that is stuck in native lowering. A child process can be terminated by the parent without losing artifacts already produced by other workers.
Important distinction: FAILED vs TIMEOUT
FAILED means the compiler returned an actual diagnostic such as an unresolved binding or unsupported native node.
TIMEOUT means the worker was still running when its hard time budget expired and was killed.
Increasing the timeout only helps the second category.
Next: Architecture →