Remix.run Logo
mrweasel a day ago

Maybe someone more familiar with operating systems kernels can answer this: Is Darwin really all the exiting? It is different from both the BSD kernels and Linux, but less so than Windows. Other than the ability to run macOS applications (assuming you can clone the libraries and APIs from macOS) is there some benefit of Darwin that I'm not seeing?

__d a day ago | parent | next [-]

XNU has some interesting features.

It’s Mach based, so it has Mach ports, which are an IPC system that is fairly heavily used by macOS.

It has DriverKit, which is a C++ framework for drivers that’s got morecsuppirt than the usual Unix driver model.

Mach-O does more than ELF, and enables the two-layer namespacing that makes macOS able to manage dynamic linking dependencies better than ELF.

Nothing really earth-shattering but interesting enough. And far easier to build a macOS environment on than FreeBSD.

yjftsjthsd-h a day ago | parent | next [-]

> Mach-O does more than ELF, and enables the two-layer namespacing that makes macOS able to manage dynamic linking dependencies better than ELF.

I've always admired that mach-o supports fat binaries.

mike_hearn 19 hours ago | parent [-]

It's more that Darwin does. A fat binary is just two independent Mach-O binaries concatenated with a small header.

yjftsjthsd-h 10 hours ago | parent [-]

Maybe, but ELF doesn't support doing so

kevans91 10 hours ago | parent [-]

One might be interested in the not-very-alive FatELF implementation, though: https://icculus.org/fatelf/

yjftsjthsd-h 8 hours ago | parent [-]

Yep, that sounds like the same idea:

> The format is very simple: it adds some accounting info at the start of the file, and then appends all the ELF binaries after it, adding padding for alignment. The end of the file isn't touched, so you can still do things like self-extracting .zip files for multiple architectures with FatELF.

But I would indeed call it very-not-alive; their demo image is Ubuntu 9.04

fithisux 11 hours ago | parent | prev [-]

Is it possible to write device drivers for Ravynos with Driver kit?

ripdog a day ago | parent | prev | next [-]

I honestly think the kernel interface is by far the easiest part of building a MacOS compat layer. The userland is gigantic, super complex, and totally closed source. That's the hard part.

AFAIK all macos software only talks to the kernel via userland APIs - so there's no particular benefit to basing ravynOS on XNU anyway. (Just the opinion of a layman.)

mrpippy a day ago | parent [-]

The Mach APIs are available to userland applications, if you used a different kernel you’d have to implement them somehow

ripdog a day ago | parent [-]

But do real apps actually use them directly? Or only through the userland libraries?

Just FYI, the https://www.darlinghq.org project is doing MacOS app compat on Linux - i.e. building the userland libraries.

mrpippy a day ago | parent [-]

Yes, real apps use Mach messaging directly. i.e.: https://source.chromium.org/chromium/chromium/src/+/main:ipc...

ChocolateGod a day ago | parent [-]

Chrome is an outlier to how most apps will do things.

nrr a day ago | parent | next [-]

The illustration that Chrome uses Mach ports is a counterexample to an (implied) insinuation that nothing in running in macOS user space uses Mach ports. Outlier or not, the fact there is at least one (albeit also very useful and very popular) application that uses them ties back to the conversation about how they're a kernel feature worth having for Mac compatibility.

wpm 16 hours ago | parent | prev [-]

Any launchd task that declares any MachServices does.

panic 21 hours ago | parent | prev | next [-]

IMO the Mach virtual memory API is much nicer than the Linux one.

wltr 11 hours ago | parent | prev | next [-]

Just to clarify, did you mean ‘exciting’ by

> Is Darwin really all the exiting?

I’ve tried to reread your question, and couldn’t get the sense, before I thought maybe that’s an autocorrection / misprint.

jabedude a day ago | parent | prev | next [-]

I don't think it's all that exciting. The hybrid BSD/mach personalities is somewhat interesting, as are some of the available mach machineries.

It's been a stable foundation for several of the most successful operating systems in history though

phendrenad2 a day ago | parent | prev [-]

Most kernels are kind of the same really. Some have slightly fancier inter-process communication. Leading to my all-time favorite YouTube video, an explainer on Android IPC cut like a spy thriller. I'm not even joking: https://www.youtube.com/watch?v=Fb4UoqXPEtI

qubex 16 hours ago | parent | next [-]

Er, uhm… I have to disagree really. You have monolithic kernels versus micro kernels, I’ve used weird stuff such as DragonFlyBSD, Plan9, and BeOS. Even the Windows NT kernel (now mainline Windows) is a very unusual piece of software engineering.

phendrenad2 12 hours ago | parent [-]

I guess that depends on where you draw the line at "kernel" and what you consider "unusual".

I study kernels for fun, so I've had a lot of opinions like that over the years, but none survived gaining more experience. For example, I used to think that the Windows NT kernel was a microkernel, then I thought that it was a hybrid, but now I know that it's actually monolithic. Likewise, I now understand that the major differences between the FreeBSD and DragonFlyBSD kernel are really just a few hundred lines of code, nothing major. But if you Google it, it'll make it sound like they're worlds apart.

Part of this is understanding that what people call "the kernel" usually includes a lot of things that, arguably shouldn't be considered part of the kernel proper. And a lot of the differences people cite between kernels come down to different message-passing architectures that are extremely interesting academically, but don't show up in real-world testing.

The sad part is, you can't reach this level of understanding though normal means, every source of information is full of half-truths. You have to dig into the source code and run these things on a bench yourself.

Cockbrand 21 hours ago | parent | prev | next [-]

This is great stuff, thank you for sharing!

Bluestein a day ago | parent | prev [-]

I have got to say this is one of the single most interesting things I've seen in a while. And she ... she's a goddess - so quirky! :)