Hacker News new | ask | show | jobs
by spijdar 2039 days ago
Probably worth pointing out a significant portion of the BSD "personality" in the XNU kernel is just straight FreeBSD. You could kind of say XNU is a superset of the FreeBSD kernel.

On top of that, the unix userland resembles FreeBSD, although it's pretty eclectic in choices, e.g. it ships with GNU grep and GNU make by default IIRC while I think FreeBSD uses BSD grep and make by default?

(Darwin is pretty eclectic overall -- some portions are more NetBSDish. Kernel is mostly Free I think)

2 comments

macOS grep is from FreeBSD, at least as of macOS Mojave (10.14). (Source code for 10.14 might be at https://opensource.apple.com/source/text_cmds/text_cmds-99/g....) Not sure if it was ever GNU grep. Maybe before the big purge in 2011?

IME, most of the basic shell commands are either directly from FreeBSD or a project in the BSD universe. For example tar is from libarchive, a distinct project (see https://github.com/libarchive/libarchive) that DragonflyBSD, FreeBSD, NetBSD, and macOS import and track. (But oddly not OpenBSD, which has evolved the 4.4BSD-Lite implementation.)

According to a 2012 accounting at http://meta.ath0.com/2012/02/05/apples-great-gpl-purge/ (via https://news.ycombinator.com/item?id=3559990), macOS was down to 16 GPL packages in macOS 10.12 from 47 in macOS 10.5.

macOS grep is from FreeBSD, at least as of macOS Mojave (10.14).

Yep, it still is. On Big Sur on M1:

    $ grep --version
    grep (BSD grep) 2.5.1-FreeBSD
Yeah, I'm just an idiot. I guess I was just thinking of GNU make.

On the other hand, it looks like (at least on Catalina?) it ships with GNU diffutils, so patch, cmp, diff are all GNU utilities. I'm going to sheepishly pretend like this proves my point somehow :-)

A little late to the party, but- MacOS has actually beaten FreeBSD to the punch by shipping with bsdgrep as grep for years at this point.

FreeBSD should be able to switch before 13.0, but the bsdgrep developer is a slacker. It's only missing a couple of GNU extensions that are somewhat surprisingly (to me) common.