21 ms·
macOS Tahoe is certified Unix 03 [pdf]
- ksec 1y agoHas there been any work for something post Unix 03?
- quink 1y agoI may have mentioned on occasion, here or there, about how ludicrous it is that there appears to be no well-defined standard that user space shall have sqlite3 and git and gzip. So, for all intents and purposes, nothing that would be relevant in any reasonable end-user way in 2025. It’s all just: here’s defaults and here’s scripts to set up your environment and here’s a dozen things to run brew with. But no standard.
- Pesthuf 1y agoI wish jq would be in the posix standard. JSON is EVERYWHERE nowadays. A system that can’t parse it is incomplete. Not having a standard way to write a script that does it and works across *nixes is a mistake.
- pjmlp 1y agoC17 support is required in latest standard.
- quink 1y agoI'm not even talking about compilers though... all I want is a baseline standard that I can point to and say: "Here. This right here is where it says that 'curl' and 'wget' shall be available and in $PATH." And some simple command for any Linux distro or macOS to install everything necessary to adhere to that standard, or a distro that conforms with that standard in the first place.
- pjmlp 1y agoThat is "Shell & Utilities", however curl and wget haven't yet gotten POSIX status. https://pubs.opengroup.org/onlinepubs/9799919799/idx/utilities.html https://pubs.opengroup.org/onlinepubs/9799919799/idx/utiliti...
- Pet_Ant 1y agoYes, there is "UNIX V7" in 2013... which apparently only IBM's AIX supports. This is ironic because the whole idea of UNIX is to create a common platform for interoperability, but only one platform actually supports. I really wonder why Apple just doesn't put a couple of FTEs on it and upgrade to V7. I'm sure it wouldn't take much. But it sort of reminds me of Java and HTML where there were standards to allow for independent implementations, but have collapsed to single implementations. https://en.wikipedia.org/wiki/Single_UNIX_Specification#Compliance https://en.wikipedia.org/wiki/Single_UNIX_Specification#Comp...
- badgersnake 1y agoSolaris did support it, I guess it was more relevant when there were multiple vendors
- oldpersonintx2 1y ago[dead]
- signa11 1y agosame for sequoia as well, discussed here: https://news.ycombinator.com/item?id=41698775 https://news.ycombinator.com/item?id=41698775
- mrweasel 1y agoSo for those who, like me, wonders why Apple keeps getting macOS Unix certified, it's to avoid a lawsuit. Apple misused the Unix trademark when they first launched MacOS, so to avoid legal trouble with The Open Group, Terry Lambert was put in charge of getting MacOS Unix compliant and certified: https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix-compliant-certified/answer/Terry-Lambert https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix... It's basically the only relevance the Unix trademark has these days. I can't imagine many companies choosing macOS because it's a real Unix, nor would anyone really opt out of z/OS, AIX og HPUX, if they where not certified.
- mdasen 1y agoThat explains why they got it UNIX certified back then, but couldn't they stop advertising macOS as UNIX and stop getting it certified? They even changed the name from Mac OS X to macOS since then.
- randall 1y agothere’s no downside as far as i’m aware.
- hopelite 1y agoFamous last words
- mdasen 1y agoThere isn't much downside, but it probably involves a small amount of money (paid for the certification) and it means spending time making sure that everything remains 100% within spec. There's lots of little edge cases where BSDs differ from the spec and it means that Apple needs to take care not to drift from the spec.
- al_borland 1y agoApple remaining in spec sounds like a good thing from a compatibility point of view. Am I missing something? I’m not sure why it’s coming off like people are complaining about this?
- joao 1y agoReminded of the origin story of making Mac OS X Unix certified: https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix-compliant-certified https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix...
- EE84M3i 1y agoThanks for the link, that's a good read.
- deleted 1y ago[deleted]
- amiga386 1y agoOK, great. Can I call poll(2) on a terminal device's file descriptor? Requirement for certification: https://pubs.opengroup.org/onlinepubs/9799919799.2024edition/functions/poll.html https://pubs.opengroup.org/onlinepubs/9799919799.2024edition... > The poll() and ppoll() functions shall support regular files, terminal and pseudo-terminal devices, FIFOs, pipes, and sockets. Apple (last time I checked): https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/poll.2.html https://developer.apple.com/library/archive/documentation/Sy... > BUGS: The poll() system call currently does not support devices. I asked the same question of Sequoia: https://news.ycombinator.com/item?id=41822308 https://news.ycombinator.com/item?id=41822308
- veggieroll 1y agoI don't think it's that surprising that the Open Group would cut corners certifying Unix compatibility.
- johnisgood 1y agoAnd someone said: > It's not simply that certification costs money. It's that a lot of modern UNIX-like operating systems don't adhere to the UNIX spec. For example, the OpenBSD man pages specify the ways in which they diverge from POSIX and UNIX in the Standards section: https://man.openbsd.org/sh.1#STANDARDS https://man.openbsd.org/sh.1#STANDARDS, https://man.openbsd.org/awk.1#STANDARDS https://man.openbsd.org/awk.1#STANDARDS. Often times these are small deviations that might not matter to most people, but it means that they aren't UNIX. Except it seems like macOS diverges, too, yet it is certified. I wonder in what other ways it diverges.
- brewmarche 1y agoNote: while the link above points to a newer standard, the quote has already been present in the one for UNIX 03 it seems: < https://pubs.opengroup.org/onlinepubs/009696699/functions/poll.html https://pubs.opengroup.org/onlinepubs/009696699/functions/po...>
- mamcx 1y agoAlso, the weird `fsync` behaviors is not part of it?
- homebrewer 1y agoTwo general-purpose Linux distributions used to pay for Unix certification, although they don't do it anymore since hardly anyone is interested in it these days. https://www.opengroup.org/openbrand/register/brand3617.htm https://www.opengroup.org/openbrand/register/brand3617.htm https://www.opengroup.org/openbrand/register/brand3622.htm https://www.opengroup.org/openbrand/register/brand3622.htm Save these links for the next time someone moans that Linux "is not a real Unix".
- mdasen 1y agoIt's not just about paying for certification. You also have to replace a lot of things like ed, awk, grep, etc. with versions that are compatible with the UNIX specification. GNU utilities didn't target 100% UNIX compatibility and they have differences that mean that a command that works on UNIX might not work (or might not work the same) on a Linux distro using GNU utilities. glibc has slight differences from the spec too. In order to get a Linux distro certified, you'd have to make changes which would make it less compatible with all the other Linux distros out there. The reason why RedHat doesn't pay for UNIX certification is that their distros wouldn't be compliant. The reason why they don't make their distros compliant is that their customers would vastly prefer that RedHat use "standard Linux" tools than replace them with UNIX-compliant ones. Customers don't want a Linux distro that's subtly different/incompatible compared to what everyone expects in a Linux system. They'd rather it be not-UNIX. Yes, you can modify a Linux distro to be UNIX. However, most Linux systems are not real UNIX - and you wouldn't want it to be real UNIX.
- arccy 1y agothis talk of GNU being "standard" is toxic, as if anything that doesn't use it is weird or off spec. the GNU userland might be common for user facing systems, but it's nowhere close to standard.
- oguz-ismail 1y agoIt's the de facto standard. No one knows how to use other flavors of tools like date, find, grep, sed etc.
- alberth 1y agoThere’s an interesting story from the lead engineer to make OS X originally compliant: > I was asked if I could lead a team to do #1. I said “Yes, under the condition that I could use the compliance project as a hammer to force other parts of the organization to make changes in their own code base, and that I could play it rather loose with commit rules regarding what it said in the bugs database for a given code change, and what the given code change actually did, in addition to what it said in the bugs database”. … > We were promised 1/10th of the $200 million, or $20 million in stock, on completion. $10 million to me, $5 million to Ed, and $5 million to Karen Crippes, who was looking for a home in Mac OS X development, I knew was an amazing engineer, and who could be roped into being technical liaison and periodically kicking off the tests and complaining to Ed and I about things not passing. —- Source: https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix-compliant-certified https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix... HN discussion: https://news.ycombinator.com/item?id=29984016 https://news.ycombinator.com/item?id=29984016
- sgerenser 1y agoAnd if you read further in the comments, he never got the stock. The executive who promised it to him “took it for himself.”
- Jcampuzano2 1y agoAnd left his wife for an HR person, can't forget that. Lol sounds like a shitshow all around when it comes to execs but wouldn't be surprised. Guess it shows that when it comes to compensation promises always get it in writing.
- yard2010 1y agoThat's always true but especially when working with so many psychopaths
- alberth 1y agoWhere do you see that? Sorry, I’m probably missing the obvious.
- Keyframe 1y agoGood thing to know when I go back to 1980s with a macbook!
- enricozb 1y agoI recently learned that macOS has a (by default) case insensitive filesystem. How does this line up with the certification?
- Analemma_ 1y agoThere’s a specific “Unix mode” you have to turn on to be in the compliant state, it’s not the default. Presumably among other changes this puts APFS into case-sensitive mode.
- lapsed_lisper 1y agoI don't know about the Unix certification process itself, but the Single Unix Specification explicitly mentions case-insensitivity among non-conforming file system behaviors that are allowed as extensions (in 2.1.1 item 4, third-to-last bullet): https://pubs.opengroup.org/onlinepubs/9799919799/ https://pubs.opengroup.org/onlinepubs/9799919799/ So a conforming OS has to make case-sensitive file systems available (which MacOS does: you can create case-sensitive HFS or APFS volumes). But I'm not sure if a conforming OS instance (i.e., running system) has to have any case-sensitive mount points, and either way, AFAIK there's no practical and race-free way for a conforming application to detect whether any particular mount point behaves case-sensitively. So I believe that as far as the standard goes, a conforming application might run on a conformingly-extended OS where no portion of the the file namespace behaves case-sensitively. IOW, a conforming application cannot rely on case-sensitivity for file names.
- irusensei 1y agoThink of it: it's a Unix system. Literally. A unix system with the usability that your grandma can use. It supports both commercial and open source applications. The year of the linux desktop folks have been trying this for decades. EDIT: already downvoted to negatives. The Linux folks really don't like to be reminded of that.
- p_ing 1y agoGrandma doesn't use certified UNIX. She uses a UNIX-like system. Only the engineers who ran the conformance test use certified UNIX since it required what I would consider heavy modification to the shipped OS configuration.
- yjftsjthsd-h 1y ago> The year of the linux desktop folks have been trying this for decades. Have they? I'm not aware that any of the desktop linux projects particularly care about POSIX or being a certified Unix™.
- em-bee 1y agothe claim is that the linux community has been trying for decades to create a desktop with the usability that your grandma can use it. the implied claim is that they failed, which is of course nonsense. linux has caught up with the usability of mac os a decade ago, if not before that.
- jeroenhd 1y agoSounds good, but grandma will need to disable SIP, run a few commands using sudo, and add a root account from the recovery system. It's Unix in the same way Windows 2000 was POSIX compliant, you just need to reconfigure the default system. The Linux desktop is widely used all across the world in the form of ChromeOS and, if you count touch screen devices, Android.
- pjmlp 1y agoWindows 2000/NT POSIX support was the bare minimum, it isn't comparable. It only got usable when SUA came to be.
- p_ing 1y agoRelated: https://www.osnews.com/story/141633/apples-macos-unix-certification-is-a-lie/ https://www.osnews.com/story/141633/apples-macos-unix-certif... Identical changes were made for Tahoe's certification. This includes disabling SIP. https://www.opengroup.org/csq/repository/noreferences=1&RID=apple%25252FSD1%25252F22.html https://www.opengroup.org/csq/repository/noreferences=1&RID=... So Tahoe is certified, but what ships with every Mac isn't certified UNIX. Not that being certified makes any difference what-so-ever.
- jcalvinowens 1y agoAnd here I just want pthread_condattr_setclock() on Darwin. Is there some other interface to set monotonic expiries? I tried to port netconsd to Darwin and that's the sole hang up (well and recvmmsg() but that's trivial...)
- comex 1y agoThere's pthread_cond_timedwait_relative_np. Looking at the implementation, pthread_cond_timedwait starts by converting the deadline to a relative timeout [1], but this is skipped if pthread_cond_timedwait_relative_np is used. Then, in the kernel, the timeout is converted back to an absolute deadline by either [2] or [3], but both of those are using Mach absolute time rather than the wall clock. Mach absolute time is monotonic. It pauses while the system is asleep, which may or may not be what you want. If need the timer to keep incrementing while the system is asleep, there's no way to do it directly with a timed wait, but you can use kevent with EVFILT_TIMER + NOTE_MACHTIME + NOTE_MACH_CONTINUOUS_TIME. [1] https://github.com/apple-oss-distributions/libpthread/blob/1ebf56b3a702df53213c2996e5e128a535d2577e/src/pthread_cond.c#L801 https://github.com/apple-oss-distributions/libpthread/blob/1... [2] https://github.com/apple-oss-distributions/libpthread/blob/1ebf56b3a702df53213c2996e5e128a535d2577e/kern/kern_synch.c#L1270 https://github.com/apple-oss-distributions/libpthread/blob/1... [3] https://github.com/apple-oss-distributions/xnu/blob/e3723e1f17661b24996789d8afc084c0c3303b26/bsd/kern/sys_ulock.c#L741 https://github.com/apple-oss-distributions/xnu/blob/e3723e1f...
- deleted 1y ago[deleted]
- jcalvinowens 1y agoInteresting, so it behaves more or less like pthread_cond_reltimedwait_np() in Solaris? I wonder which came first. The context is a UDP network receiver which infers packet loss after a timeout: https://github.com/facebook/netconsd/blob/main/threads.c#L150 https://github.com/facebook/netconsd/blob/main/threads.c#L15... https://github.com/facebook/netconsd/blob/main/worker.c#L526 https://github.com/facebook/netconsd/blob/main/worker.c#L526 Time while sleeping doesn't matter here.
- jonathaneunice 1y agoThere was a time when “open standards” were treated as the definition of Unix. At least that's what we aspired to. POSIX, X/Open, and others competed to be the standard that mattered. Formal standards were hoped to be a sounder, fairer basis for compatibility and interoperability than the earlier era of “Unix is whatever this release says it is" for some subset of 7th Edition, System III, System V, BSD, or one's favorite commercial derivative (SunOS/Solaris, HP/UX, AIX, Xenix, UnixWare, ...). That window window of optimism—roughly mid-1980s to mid-1990s—closed fast. Open source projects and _de facto_ standards proved far more powerful in deciding where applications would run, where investments would be made, and which variants survived. Today, the real baseline isn’t POSIX in a binder or some Open Group brand certificate, but Linux + GNU + the APIs everyone codes to. In some ways we've regressed—or more charitably, we shifted back to a more pragmatic form of standardization.
- drob518 1y agoThe best “standards” just ratify what people are already doing.
- em-bee 1y agothe big difference is that the Linux + GNU standard is not controlled by a corporation whose only motive is profit, and that the reference implementation is Free Software that everyone can potentially contribute to. i would not call that a regression. compare that to the browser standard which is largely controlled by google.
- userbinator 1y agois not controlled by a corporation whose only motive is profit Instead it's a bunch of corporations with very similar motives, including profit, so the end result isn't all that different. Just look at who the majority of committers work for.
- matt3210 1y agomacOS 26? I'm still on 15.6 -_-
- daft_pink 1y agoapparently sequential version numbers is not in the spec.
- breatheoften 1y agoCan there ever be a "living" standard to replace posix ...? Something that captures the good things about posix but allows all the related ecosystems to move everyone forward toward a better base specification (together rather than just increasing the number of bsd vs gnu special cases that with current plans will just have to be lived with forever) Browser standards managed to do this in a lot of ways despite far more complex standards, more complex variations in behavior, and much more rapid continue evolution ...
- dpassens 1y agoNo, and that's a good thing. Just look at how quickly features are added to the living browser standards. Instead, we get a new POSIX version every couple of years that includes the special cases that actually work the same on BSDs and Linux after they're already implemented.
- ExoticPearTree 1y agoI really don't care about the certification. I care that I have a terminal with bash (still) and I have ssh. This gets me through probably more than 50% of the work that I do. And that I can install packages and have an as close experience as if I were to be on a Linux machine (development frameworks, containers). I also like the fact that I have a very polished desktop manager running on great hardware with a lot of battery life. I wouldn't trade this for anything.