aboutsummaryrefslogtreecommitdiff
path: root/src/dev.zig
AgeCommit message (Collapse)Author
2025-08-02spirv: refactorAli Cheraghi
2025-07-22aarch64: add new from scratch self-hosted backendJacob Young
2025-07-07cbe: fix code header being omitted from the outputJacob Young
2025-07-07update compiler source to new APIsAndrew Kelley
2025-06-23remove `spirv` cpu archAli Cheraghi
2025-06-16build: add `spirv` to dev envAli Cheraghi
2025-06-12compiler: rework backend pipeline to separate codegen and linkmlugg
The idea here is that instead of the linker calling into codegen, instead codegen should run before we touch the linker, and after MIR is produced, it is sent to the linker. Aside from simplifying the call graph (by preventing N linkers from each calling into M codegen backends!), this has the huge benefit that it is possible to parallellize codegen separately from linking. The threading model can look like this: * 1 semantic analysis thread, which generates AIR * N codegen threads, which process AIR into MIR * 1 linker thread, which emits MIR to the binary The codegen threads are also responsible for `Air.Legalize` and `Air.Liveness`; it's more efficient to do this work here instead of blocking the main thread for this trivially parallel task. I have repurposed the `Zcu.Feature.separate_thread` backend feature to indicate support for this 1:N:1 threading pattern. This commit makes the C backend support this feature, since it was relatively easy to divorce from `link.C`: it just required eliminating some shared buffers. Other backends don't currently support this feature. In fact, they don't even compile -- the next few commits will fix them back up.
2025-06-01cbe: legalize safety instructions in non-zig1 buildsJacob Young
This is valid if the bootstrap dev env doesn't need to support runtime safety. Another solution can always be implemented if needs change.
2025-05-31cbe: implement `stdbool.h` reserved identifiersJacob Young
Also remove the legalize pass from zig1.
2025-05-20compiler: Scaffold stage2_powerpc backend.Alex Rønne Petersen
Nothing interesting here; literally just the bare minimum so I can work on this on and off in a branch without worrying about merge conflicts in the non-backend code.
2025-05-10std.Target: Remove ObjectFormat.nvptx (and associated linker code).Alex Rønne Petersen
Textual PTX is just assembly language like any other. And if we do ever add support for emitting PTX object files after reverse engineering the bytecode format, we'd be emitting ELF files like the CUDA toolchain. So there's really no need for a special ObjectFormat tag here, nor linker code that treats it as a distinct format.
2025-04-27link: Stub out GOFF/XCOFF linker code based on LLVM.Alex Rønne Petersen
This allows emitting object files for s390x-zos (GOFF) and powerpc(64)-aix (XCOFF). Note that GOFF emission in LLVM is still being worked on upstream for LLVM 21; the resulting object files are useless right now. Also, -fstrip is required, or LLVM will SIGSEGV during DWARF emission.
2025-01-16x86_64: implement clz and notJacob Young
2025-01-15add dev env for wasmAndrew Kelley
with this I get 5s compilations
2024-11-24dwarf: fix stepping through an inline loop containing one statementJacob Young
Previously, stepping from the single statement within the loop would always exit the loop because all of the code unrolled from the loop is associated with the same line and treated by the debugger as one line.
2024-11-16dev: support incremental for x86_64-linux envJacob Young
2024-07-22dev: add riscv64-linux supportDavid Rubin
2024-07-20dev: add missing x86_64 backend checksJacob Young
2024-07-19dev: introduce dev environments that enable compiler feature setsJacob Young