top | item 45327318

Zig got a new ELF linker and it's fast

123 points| Retro_Dev | 5 months ago |github.com

50 comments

order
[+] olivia-banks|5 months ago|reply
The more I hear about Zig, the more I appreciate it. Its vertically integrated stack (with the custom linker and code-generation backends) stands out to me as a really compelling feature that enables interesting optimizations. The compiler is also much easier to interact with in a consistent way compared to C. I've been using it as an experimental backend for my language project with great results.
[+] scuff3d|5 months ago|reply
I've been writing Zig since the beginning of the year. Just playing around with some small stuff really. I want to love the language. It does so much right, but there's something about it just feels off to me. And then the recent Io change really bugged me.
[+] int_19h|5 months ago|reply
> I've been using it as an experimental backend for my language project with great results.

One annoyance that I've ran into when using Zig as a transpiler backend is the lack of unstructured goto. Many languages don't need that, but if you're dealing with the one that does, converting such code is non-trivial.

[+] rstat1|5 months ago|reply
I don't really have much interest in Zig the language, but Zig as a standalone C/C++ compiler is pretty great.

I'm using it as a cross-compiler for linux-arm64 because its much simpler to download a single archive and extract it somewhere than to waste a bunch of time on guessing how each different Linux distro does ARM64 cross compilers (or doesn't in the case of Fedora).

[+] wolvesechoes|5 months ago|reply
Same for me.

The more Zig-the-language is hyped, the more I see it doesn't bring anything of interest. Zig-the-toolchain, on the other hand, is neat.

[+] davemp|5 months ago|reply
I’ve been using it for an embedded project to target arm thumb and the typical x86-64 hosts that communicate with a protobuf based protocol. It’s absurdly convenient to be able to just give windows users the repo, zig binary, and tell them to run ‘zig build’.
[+] wild_egg|5 months ago|reply
This is exactly how I've been using it the last couple years and it's incredibly nice.
[+] squirrellous|5 months ago|reply
Between mold and this, the linker space appears to be going through a renaissance.

Does anyone know if it’s reasonably easy to use elf2 as a standalone linker in a c/c++ toolchain? Or is it specially built just for Zig?

[+] esbranson|5 months ago|reply
Just going to mention the book Linkers and Loaders by John R. Levine, I'm not sure if there's anything comparable to it.
[+] edoceo|5 months ago|reply
And it fixes a bug about debug output. Seems like a bigger deal than fast.
[+] chris_armstrong|5 months ago|reply
If I recall correctly, this is one of the final pieces that allows zig to be used as a fully self-contained cross-compiling C toolchain (once its linker is enabled for more platforms / formats)
[+] olivia-banks|5 months ago|reply
I might be misunderstanding, but I don’t think that's quite accurate. As I understand it, Zig ships a Clang frontend and wraps it with precompiled sysroots. Unless they're developing an LLVM backend, I'm not sure how it could serve as a completely self-contained toolchain.
[+] L0Wigh|5 months ago|reply
Seems like we spoke too soon. Latest results shows that it's not as great as it seems
[+] dustbunny|5 months ago|reply
Zig honestly blows my mind. I think it's clearly the best next gen language because of the build system alone.