Darling Progress Report Q2 2023(blog.darlinghq.org)
blog.darlinghq.org
Darling Progress Report Q2 2023
https://blog.darlinghq.org/2023/08/21/progress-report-q2-2023/
15 comments
If you're like me and had 0 idea what Darling is a few paragraphs in:
What always annoys me about these blogs is that they have no obvious link to the main site, it all just goes to blog homepage which doesn't bother explaining itself.
This is fine for personal blogs where I don't really care who you are, but it does for projects and companies. (And personal sites often prominently feature About page so it isn't even a problem)
This is fine for personal blogs where I don't really care who you are, but it does for projects and companies. (And personal sites often prominently feature About page so it isn't even a problem)
I don’t think it’s obvious enough, but there is a GitHub link at top right of the page.
Good find. On mobile it is at the very bottom though.
On desktop, there is actually a link named 'Main Site' to the right of the GitHub link.
I agree, but it's also just a few keystrokes to remove the "blog." from the address bar.
We are choosing between Darling and using Mac instances in AWS for validation of ClickHouse builds: https://github.com/ClickHouse/ClickHouse/issues/15609
The fact that Darling requires a kernel module makes it quite challenging to use. But the task is open, and I check it once a year.
Overall I'm highly impressed that this is even possible!
Also, I had another idea for builds validation - use a custom version of libc and compiler flags to make the API and ABI on Linux similar to what is on Mac. For example, to make uint64_t unsinged long long instead of unsigned long.
The fact that Darling requires a kernel module makes it quite challenging to use. But the task is open, and I check it once a year.
Overall I'm highly impressed that this is even possible!
Also, I had another idea for builds validation - use a custom version of libc and compiler flags to make the API and ABI on Linux similar to what is on Mac. For example, to make uint64_t unsinged long long instead of unsigned long.
Darling is a pretty impressive project. I checked it out a few years ago and was able to get an old 32bit osx program running on linux, which was pretty cool to say the last. The amount of work that goes into stubbing and reimplementing all the frameworks is pretty mind boggling though, I'd commend anyone who takes up such a mammoth challenge.
I'm not sure who the intended audience is for this post, but if it's the general programmer audience I have several suggestions:
1. Explain what the project is right at the start. I had to go to the main website to find out (run macOS software on Linux.)
2. Follow with a high-level summary. What does all this work mean for the user? Can I now run more software than I could previously?
3. Put the most important things first. Is updating your blog really the most important thing you've achieved in the last four years?
1. Explain what the project is right at the start. I had to go to the main website to find out (run macOS software on Linux.)
2. Follow with a high-level summary. What does all this work mean for the user? Can I now run more software than I could previously?
3. Put the most important things first. Is updating your blog really the most important thing you've achieved in the last four years?
An excellent software project, preservation is a personal favorite ;). I had a look over the blog and GitHub project - but I have one important question that I could not find an answer for: "Which version of macOS is targeted?"
I would assume only the latest or near-latest version, though it is mentioned in this post that they were only recently able to sync source code up to macOS 11.5 (from August 2021).
My theories: either they aim to support a wide array of macOS versions (like Wine), or adopt a "moving target" approach, removing old code and stubs that handle old/removed Mac functions.
I am leaning towards my second theory, as it was mentioned in issue #1337 (heh) that Darwin does not have a stable ABI. That sounds to me like an app built for 10.7 Lion would not run at all on 10.14 Mojave... something that is probably true for real Macs as well.
I would assume only the latest or near-latest version, though it is mentioned in this post that they were only recently able to sync source code up to macOS 11.5 (from August 2021).
My theories: either they aim to support a wide array of macOS versions (like Wine), or adopt a "moving target" approach, removing old code and stubs that handle old/removed Mac functions.
I am leaning towards my second theory, as it was mentioned in issue #1337 (heh) that Darwin does not have a stable ABI. That sounds to me like an app built for 10.7 Lion would not run at all on 10.14 Mojave... something that is probably true for real Macs as well.
> That sounds to me like an app built for 10.7 Lion would not run at all on 10.14 Mojave... something that is probably true for real Macs as well.
In practice, on real Macs, most apps built targeting 10.7 Lion will work on 10.14 Mojave. Some apps will be a bit buggy but still basically work.
If you asked about 10.7 and Ventura, then I'd give it more like a 50/50 chance the app would work (possibly via Rosetta 2 depending on your hardware).
Backwards compatibility on macOS is quite bad, and it has gotten much worse in the last few years in particular, but it's not quite as bad as some seem to imagine.
In practice, on real Macs, most apps built targeting 10.7 Lion will work on 10.14 Mojave. Some apps will be a bit buggy but still basically work.
If you asked about 10.7 and Ventura, then I'd give it more like a 50/50 chance the app would work (possibly via Rosetta 2 depending on your hardware).
Backwards compatibility on macOS is quite bad, and it has gotten much worse in the last few years in particular, but it's not quite as bad as some seem to imagine.
Wine allows me to use "native libs" that means one can use windows dll's to improve compatibility. I successfully used this feature in the 90's to legally achieve great compatibility.
Does darling allows the same? A have a Mac license which could be out to good use.
Does darling allows the same? A have a Mac license which could be out to good use.
Captain Darling?