The Future of zld [RFC]
michaeleisel opened this issue · 5 comments
zld has had a good run since its first release about two years ago, but in that time, lld has made a lot of progress and is now in use for very large-scale projects. lld is substantially faster in the workloads I've seen. I will support zld as long as people are getting value out of it, but I want to understand where that value is for people.
Pros of zld:
- Forked off ld64, which has been in production use for longer than lld and can be more stable (lld only recently fixed an important issue with the -ObjC flag)
- Gets updated each year with new features that lld may have to catch up to
- Doesn't require as much long-term support by the maintainer (me). Most of the work is being done by the engineers who work on ld64, and the changes get merged when they're released
Pros of lld:
- Significantly faster
- More reproducible
- Has the backing, as far as I know, of Facebook and some engineers there
If I were working on a project where I needed a new linker today, I would probably use lld and not zld.
Users of zld, have you used lld? If so, how did it go? Should lld be mentioned prominently in the readme? Where would people like to see zld go?
From what I've gathered(And I attempted to use lld myself), lld does not work on m1 Macs? So I'm at least going to be using zld for a while. xD
lld definitely works on m1 machines which is our primary dev machine at Lyft now. If you are still hitting issues please file an issue and I can look into it!
You can download a universal binary release here for testing too https://github.com/keith/ld64.lld/releases
I'll try and test again. Not that it would matter. Rust and LLD apparently is not 100% there, so that might be source to my issues.
I'm going to add something to the readme recommending people to try lld instead of zld. As long as lld is a good replacement, I will consider zld to be in a sort of maintenance mode. I will probably continue to sync it up with Apple's new releases (if they ever happen 😅 ), but for any non-trivial issues reported, my answer will be "try lld first"