"1.12 Threads
1.12.1 Cancellation Points
Question 31: Which C stdio functions have cancellation points that occur when a thread is executing?"
https://www.opengroup.org/csq/repository/noreferences=1&RID=...
- The Linux kernel also has timer coalescing
- Linux also has lazy atime ('relatime') by default
- No Linux distro installs uucp by default, and certainly not suid
- Desktop distros will also run a file indexer of some sort
etc.
First, Linux was never GNU - the GNU ecosystem has always been a significant part, but if you were obstinate enough, you could get away without using any GNU tools (which is even easier today).
Second, you give just two examples. A few years ago we had a trend to rewrite everything in Rust with these newer tools usually not being part of the GNU project. Sure, you can replace everything now. However, most GNU tools are here to stay for a long time especially in enterprise distros where backward compatibility is important.
So no, Linux has never been GNU, and whatever fluctuations we had over decades with innumerable fights like egcs vs gcc etc., the GNU ecosystem is and will long be part of Linux distros.
25 years ago it was reasonable to say the typical Linux machine was “gnu/linux”. Today it’s not.
So legally at one point a Linux was Unix.
They were:
Inspur K-UX (expired on 3 February 2019)
Huawei EulerOS (expired in September 2022)
https://en.wikipedia.org/wiki/Inspur_K-UX
https://en.wikipedia.org/wiki/EulerOS
These were both based on Red Hat.
There were (are?) companies and especially parts of the government where it was pretty difficult/impossible to purchase anything that wasn’t on an official pre-approved list. Trying to get anything new added was a massive problem.
One of the things that was on the list was something like “a computer running Unix“. Tada. Macs now run Unix so you can easily buy them.
Like other people here, I really don’t think true compliance mattered to basically anyone for their actual use. The idea that it was just box checking so they were easier to buy in some institutional environments makes much more sense to me.
I'll bet all kinds of government contracts needed some way to compare vendors bidding on a contract
for example:
- These ran UTX-32, Gould's version of Unix based on a BSD 4.2 kernel developed by Gould's UNIX development centre in Urbana-Champaign (IL) to support multiprocessor systems
- AIX is based on UNIX System V with 4.3BSD-compatible extensions.
- DG/UX 1.00, released by Data General in March 1985, was based on UNIX System V Release 2 with additions from 4.1BSD.
- HP-UX (from "Hewlett Packard Unix") is a discontinued proprietary implementation of the Unix operating system developed by Hewlett Packard Enterprise
- Xenix is based on the operating system UNIX System V, which Microsoft licensed from AT&T Corporation in the late 1970s.
So OS X continuing that strategy early on would make perfect sense.
So, if you want your installation of macOS 15.0 to pass the UNIX® 03 certification test suites, you need to disable System Integrity Protection, enable the root account, enable core file generation, disable timeout coalescing, mount any APFS partitions with the strictatime option, format your APFS partitions case-sensitive (by default, APFS is case-insensitive, so you’ll need to reinstall), disable Spotlight, copy the binaries uucp, uuname, uustat, and uux from /usr/bin to /usr/local/bin and the binaries uucico and uuxqt from /usr/sbin to /usr/local/bin, set the setuid bit on all of these binaries, add /usr/local/bin to your PATH before /usr/bin and /usr/sbin, enable the uucp service, and handle the mystery issues listed in the four Temporary Waivers.
Then, and only then, is your macOS 15.0 actually UNIX® 03-certified.
This is batshit insane. I can guarantee you with 100% certainly not a single macOS installation in the entire history of macOS – let alone when just counting macOS 15.0 – has implemented even half of these changes. I’m sure there is a small number of people who have System Integrity Protection disabled permanently, and an even smaller number of people who have enabled the root account, and an even smaller number of people who have done both of those things – but that’s it. All the other changes are far too obscure and specific to be of any use to anyone.
the netbsd gallery (https://netbsd.org/gallery/) had a picture of somebody using that on windows xp (iirc) in order to compile pkgsrc packages in a "posix compliant" environment. the picture seem to be gone now :(
Traditional UNIX is does not mean having an open source core you're intended to tinker with. Traditional UNIX was entirely proprietary, connected with well-defined text-based interfaces. This is entirely orthogonal to user control and manipulation of the OS.
AT&T was forbidden by its consent decree from productizing Unix. Licensees received the source code, on an as-is basis, with no official support from AT&T.
As a non corporation end user with a sublicense from one of the above licensees (which is the apt analogy for an individual user in my opinion) you most certainly did not receive the source or have the rights to it.
You then likely hacked the source code to make it work on your machine.
I can understand that others might include the commercialization of the 1980s and the Unix wars as part of "traditional Unix", but even then, my IRIX system ca. 1990 supported end-user kernel extensions, to handle new types of devices. Our imaging hardware was not "connected with well-defined text-based interfaces".
It doesn't mean end users had access to the source code.
In fact, vendors would have been prohibited from distributing AT&T source code to customers who weren't themselves AT&T licensees, just as CSRG was prohibited from distributing BSD to customers who weren't licensees before 4.4BSD-Lite.
The same goes for most other proprietary source-available products. For example, game developers can't open source Unreal Engine projects even though Unreal Engine source licenses are available to end users for free.
At a bare minimum, you would almost have to have source to the vast majority of the kernel because there was no kernel modules. Sysgenning for a particular system involved compiling the kernel for that set of hardware.
I'm literally working on an early sun system emulator right now, heavily assisted by the standard sec tape that came with the standard software distribution of sunos, which has plenty of AT&T code.
As jeremyjh wrote at https://news.ycombinator.com/item?id=50032733 , "A system that the hardware owner cannot modify is not really on the same wavelength as traditional UNIX.". Since traditional Unix was source-available, with the expectation that people would hack on the source, I fully agree with jeremyjh's characterization.
I think you are talking about a later era in Unix history? The early Unix licensees were educational institutions and commercial sites, not vendors or resellers.
Every one of those academic and commercial end users got the source code.
From https://en.wikipedia.org/wiki/History_of_Unix :
> "In 1973, AT&T released Version 5 Unix and licensed it to educational institutions, and licensed 1975's Version 6 to companies for the first time, ... Anyone could purchase a license, but the terms were very restrictive; licensees only received the source code, on an as-is basis. ... Unix was entirely unsupported by AT&T"
From the same link, "Perkin-Elmer began distributing Wollongong Unix for Interdata as Perkin-Elmer Edition 7, the first version supported by a computer company". That was in 1980.
So while yes, "Traditional UNIX was entirely proprietary" and could not be redistributed to non-licensees, it was also provided with "full user control and manipulation of the OS", and not merely "connected with well-defined text-based interfaces", quoting jdiff at https://news.ycombinator.com/item?id=50033080.
SIP is as much defense from the likes of Adobe and Google as it is from more traditional malware.
I think that piece by piece Apple wants to go into direction of making macOS just a desktop version of iOS, that is closed and impossible to modify. They will use of course security as an excuse, the practical thing is that with iOS they succeeded because they went to the market with an OS that was already closed, but making users accept that in new version downloading a software from the internet and installing it it's no longer possible takes time. But they are getting there soon to me.
The reason why that won't happen (but more and more warning prompts all the time because of this modern world...) is because macOS is a self-hosted platform.
Apple _needs_ macOS as an unlocked OS at the very least as a development platform to develop their operating systems on. Not having the self-hosting requirements allows to tighten the security model a lot.
Notably, with a Unix terminal, a huge problem for sandboxing is how to determine permissions granularly, whereas a UI flow has significantly better answers to that.
Btw, MacOS 27 (the current version) still has UUCP.
> This is batshit insane. I can guarantee you with 100% certainly not a single macOS installation in the entire history of macOS – let alone when just counting macOS 15.0 – has implemented even half of these changes.
Well, maybe that means it doesn’t really matter and especially not to the extent that the author seems (?) to be making it out to be. If no one disables System Integrity Protection in order to be UNIX® 03-compliant, maybe that means that to the extent that people care about macOS being “a UNIX”, they don’t care specifically about the parts of the specification that are incompatible with System Integrity Protection.