Hacker News new | past | comments | ask | show | jobs | submit login

For me: you don't want to. The underlying Darwin/XNU layer is probably the most quirky (or depending on your PoV outright broken) unix-ish system you will see in general use today.



z/OS is a much weirder Unix than macOS, although it depends on how you define "general use". But, there are a lot of enterprises out there which still run IBM mainframes, even if they often aren't keen on advertising that fact, and a huge lot of stuff in z/OS now depends on the Unix subsystem, in particular anything written in Java (which IBM has been heavily encouraging as a development language on mainframes, resulting in a lot of hybrid apps which are a mix of newish Java code and ancient COBOL/assembler/etc working together.)

(Some people will question whether z/OS really counts as a "Unix", but like macOS, it is actually a certified Unix, and as such has greater official claim to be Unix than FreeBSD or most Linux does.)

(Addendum: I say "most Linux", because while the vast majority of Linux distributions are not certified Unix, some have been. Right now, Huawei EulerOS is a certified Unix based on a Linux distribution. Inspur K-UX is another Linux distribution which used to have Unix certification, although the certification has expired–I guess they failed to pay the renewal fees.)


For others, z/OS has personalities, just like other mainframes and Windows.

What is certified as UNIX is the POSIX personality.


I've never heard the term "personality" used with respect to z/OS before, it certainly isn't standard terminology. (It is standard terminology with respect to the original design of Windows NT, and IBM's abortive Workplace OS, but z/OS has little in common with either.)

And strictly speaking, z/OS as a whole is a certified UNIX. Look at the registration certificate [1], it never mentions UNIX System Services. Obviously without that component z/OS would fail to pass the certification tests, but the certification is for the operating system as a whole not just that component of it.

[1] https://www.opengroup.org/openbrand/certificates/1199p.pdf


Maybe I misunderstood its architecture, but I thought that with the language services and the different kinds of workloads, it also had such clean separation.


Not really. A z/OS program is allowed to call a pretty arbitrary mix of classical MVS APIs and UNIX system calls. There is no strict separation as such between "classic MVS programs" and "UNIX programs". An MVS task isn't classified as a UNIX process until it makes its first UNIX system call (exception: programs launched via UNIX system calls get classified as UNIX processes even before they start executing) – some programs start issuing UNIX system calls as soon as they start, but a program can run for hours or days as an MVS task, and then suddenly out of the blue start making UNIX system calls, and then at that point the MVS task will be "dubbed" as a UNIX process. (To be a UNIX process, the MVS task needs to be assigned a UNIX security identity – UID and GID – which is the job of the security subsystem – RACF, TopSecret or ACF2 – if the security subsystem isn't configured to assign a UID/GID to that MVS task, all UNIX system calls will fail.)

Compare this to Windows NT, where each executable was marked as belonging to a primary subsystem (Win32, POSIX, OS/2, etc) which is fixed from the time of process startup. In contrast, z/OS offers the flexibility that any MVS task can potentially be "dubbed" as a UNIX process at any time. Or similarly, look at WSL1 in Windows 10 – a process is either a Win32 process which is allowed to call the Win32 API, or a picoprocess which can call Linux system calls, you can't mix Win32 calls and Linux calls in the same process. (You can do it via two processes, one Win32 and one WSL, communicating over IPC; by contrast, z/OS allows mixing UNIX and classic MVS APIs in the same process/task running in a single address space). So the separation between "UNIX" and "classic MVS" in z/OS is actually a lot weaker than in Windows NT, which is why the "personality" term which was used in the later isn't really applicable to z/OS.


Thanks for the overview.


I don’t know about the current version, but macOS has been certified as UNIX in the past.


Catalina is a certified UNIX 2003 – https://www.opengroup.org/openbrand/register/brand3653.htm

UNIX 2003 is not the latest version of the certification, the latest UNIX certification is (somewhat confusingly) named UNIX V7 (different thing from the classic Bell Labs V7 UNIX), but thus far only Oracle Solaris is certified to that.

z/OS is still only UNIX 95 – https://www.opengroup.org/openbrand/register/brand3601.htm – maybe one day IBM will upgrade that to the newer UNIX 98, UNIX 03, or UNIX V7 certifications, although I suspect not. IBM has decided to focus on running Linux Docker containers under z/OS instead (which it calls zCX).


Unix is a license and linux is not. In fact the lawsuit Ibm facing is precisely that.

But we usually not used this but use posix. In fact i think that is what linux originally built against.


Care to elaborate? Which aspects of XNU are you referring to?


that was the subtext I didn't, I know XNU is not super performant.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: