START SMALL. SERIOUSLY.
You need a text editor and PowerShell. You do not need to understand ELF before lunch. Run one tiny file first; the scary machine stuff can wait until it answers a real question.
00 prove the tool
- Download the 13.0 Windows x64 ZIP.
- Verify its SHA-256 against the install page.
- Extract to a directory you control.
- Run
dbyte.exe --versionby explicit path once before changing PATH.
10 make the smallest program
fn main() -> i32:
return 42 as i32Save as hello.dby. The explicit i32 is boring on purpose. Boring is good when you are trying to find out whether the compiler even works.
20 run before compiling native
PS> dbyte run .\hello.dby
If this fails, record the exact command and output. Do not jump to assembly inspection yet. First decide whether the problem is package, path, parse, type, or runtime.
30 build native output
PS> dbytec build .\hello.dby --target x86_64-dbyte-windows --emit exe --opt-level 1
Native output is a different execution path, not a different language. The semantic owner stays shared; target legalization, ABI, instruction selection and object/executable writing happen below it.
40 learn the language in useful order
- Language tour: declarations, functions and control flow.
- Types: fixed-width integers, bool and the older language foundation.
- Runtime ownership: allocator, owned values and Drop.
- Collections: owned containers after the ownership model makes sense.
- Native MIR: only after you care what code generation actually emits.
50 beginner debugging ladder
| Symptom | First evidence |
|---|---|
| Command not found | Explicit executable path and --version. |
| Parse/type error | Smallest source that still fails plus full diagnostic. |
| Hosted works, native fails | Same source, exact target, exact opt level. |
| O0 works, O1 fails | Optimization boundary; inspect Native MIR before/after. |
| One target differs | Check whether behavior is target-neutral or target ABI/hardware owned. |
60 after the first hour
Read the developer map when you want to understand why DBYTE keeps semantic analysis, Native MIR, target lowering and file writers separate. Read strict portability only if you are following unreleased 13.1 source work.
GOOD HABIT. One file. One command. One observed result. Add complexity only when the previous layer is understood.
70 a useful first practice session
Create three tiny files instead of one large experiment. First return a constant. Second add a function call and one branch. Third use one owned runtime value after reading the runtime foundation. Run each hosted before compiling native. Keep the commands in a text file so a later failure can be reproduced exactly.
When a diagnostic appears, read the first error before changing code. Preserve the smallest failing file. If native output differs from hosted execution, do not rewrite the program until you know whether the difference is language semantics, target ABI, optimization, or machine execution. This habit scales from a five-line example to compiler development.