Retro_Dev's comments
Retro_Dev | 4 months ago | on: LLMs Are Transpilers
Retro_Dev | 9 months ago | on: Self-hosted x86 back end is now default in debug mode
Retro_Dev | 9 months ago | on: Self-hosted x86 back end is now default in debug mode
Retro_Dev | 9 months ago | on: Self-hosted x86 back end is now default in debug mode
The biggest pain point I personally have with Zig right now is the speed of `comptime` - The compiler has a lot of work to do here, and running a brainF** DSL at compile-time is pretty slow (speaking from experience - it was a really funny experiment). Will we have improvements to this section of the compiler any time soon?
Overall I'm really hyped for these new backends that Zig is introducing. Can't wait to make my own URCL (https://github.com/ModPunchtree/URCL) backend for Zig. ;)
Retro_Dev | 9 months ago | on: Low-Level Optimization with Zig
Do note that your linked godbolt code actually demonstrates one of the two sub-par examples though.
Retro_Dev | 9 months ago | on: Low-Level Optimization with Zig
Retro_Dev | 9 months ago | on: Low-Level Optimization with Zig
It's an interesting question about how Zig will handle additional builtins and data representations. The current way I understand it is that there's an additional opt-in translation layer that converts unsupported/complicated IR to IR which the backend can handle. This is referred to as the compiler's "Legalize" stage. It should help to reduce this issue, and perhaps even make backends like https://github.com/xoreaxeaxeax/movfuscator possible :)
Retro_Dev | 9 months ago | on: Low-Level Optimization with Zig
I don't love the noise of Zig, but I love the ability to clearly express my intent and the detail of my code in Zig. As for arithmetic, I agree that it is a bit too verbose at the moment. Hopefully some variant of https://github.com/ziglang/zig/issues/3806 will fix this.
I fully agree with your TL;DR there, but would emphasize that gaining the same optimizations is easier in Zig due to how builtins and unreachable are built into the language, rather than needing gcc and llvm intrinsics like __builtin_unreachable() - https://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Other-Builtins....
It's my dream that LLVM will improve to the point that we don't need further annotation to enable positive optimization transformations. At that point though, is there really a purpose to using a low level language?
Retro_Dev | 9 months ago | on: Learning C3
You would need to consider if it is even worth it translating your C code. If the paradigm is identical and the entire purpose would be "haha it is now one language," surely you could just compile and link the C code with libzigc... In my opinion, it's not worth translating code if the benefit of "hey look one language" requires the cost of "let's pray the LLM didn't hallucinate or make a mistake while translating the code."