[TUHS] SVR4 vs. Solaris 2

Dan Cross via TUHS tuhs at tuhs.org
Thu Nov 13 07:05:06 AEST 2025


I work daily with a descendent of Solaris, and with some folks who
were involved from pretty early on, so I can speak to some of this.

On Tue, Nov 11, 2025 at 9:45 PM Clem Cole via TUHS <tuhs at tuhs.org> wrote:
> My memory is a bit hazy here so Tom or Larry are probably better sources
> but … IIRC they were close but not 100% identical. Remember Sparc was not a
> reference platform for SVR4 (386/486 were). The big thing Solaris lost was
> the work SunOS had done in the memory system.

I think two of Sun's bigger contributions to SVR4 were vnodes and
mmap, which necessarily involve the VM system.  There was a book on
Solaris performance tuning (I think) published by Sun that came out
around the time that Solaris was really gaining momentum that
suggested something like 80% of the VM code was shared with SunOS 4;
whether that made it into SVR4 or not I don't know.  If only the plans
to donate the SunOS VM system to BSD hadn't fallen through!

My own recollection was that Solaris became approximately usable with
2.4, decent with 2.5, and "pretty good" with 2.5.1.  2.6 was the first
release where I didn't immediately miss SunOS 4.  My sense was that
the earlier, pre-2.4, releases were buggy, slow, and generally
unusable.  Perhaps that's uncharitable, but that's what it seemed
like; I recall that extreme resistance to Solaris 2 led to the SunOS
4.1.3_U1 and 4.1.4 releases.  I'm sure it's apocryphal, but someone at
the time told me that "U1" was for "you won", as in "ok, you won; we
did another SunOS release."

> I never knew for sure, but I
> think that was a big reason the boot/init and the command system became
> AT&Ts version.  However some of the earlier SunOS value add was put back
> in.

I thought that was mainly for conformance with SVID or something?
SunOS 4 had what felt like a really nicely polished user experience,
but Solaris felt a lot more archaic.  My example was always, `awk`: on
SunOS 4, this was nawk.  On Solaris 2, it was the old 7th Ed awk (and
now we had to remember to run `nawk` to get "new" awk).  Things like
that struck me as backwards and weird.

> For instance my memory is that Solaris could use sockets while SVR4 still
> was pushing TLI/Streams plus Solaris supported Sun Threads as well as
> pthreads while SVR4 was only pthreads.

I seem to recall that pthreads came a bit later?  Solaris used (and
probably still uses; illumos definitely does) kernel-managed LWPs as
the underlying thread primitives for both its own libthread and
pthreads.  I believe that LWPs in turn came from SunOS, though I may
well be wrong there; the Goodheart and Cox book on SVR4 internals only
mentions LWPs in one place that I saw, and mentions ucontext as the
preferred mechanism for building user threads; a paper by Powell et al
from winter USENIX '91 ("SunOS Multi-thread Architecture") says the
name is derivative of a similarly named library for user-only threads
from SunOS 4.0 ("The LWPs in this document are fundamentally different
than the LWP library in SunOS 4.0. Lack of imagination and a desire to
conform to generally accepted terminology lead us to use the same
name"), and that the POSIX spec wasn't quite ready at the time they
did the work.  Note that they don't really say what "accepted
terminology" means here.

My understanding was that the Solaris sockets compatibility library
was initially layered on top of STREAMS, but that they eventually put
it back into the kernel.

> Also I don’t remember if SVR4 had dtrace which was a huge advantage.

I know for sure that Dtrace came much later in the Solaris timeline
(Solaris 9 or thereabouts), and was definitely not in SVR4. Bryan and
Adam did a podcast on its inception and development not too long ago:
https://oxide-and-friends.transistor.fm/episodes/dtrace-at-20

>  I also believe the compilers were different. As Sun had early had
> (finally) invested in their own compilers with CMU/DEC style code
> generators and optimizers; while AT&T was still using PCC2. Interestingly
> enough because Sun was charging for their new compilers suite many end
> users/customers installed the Gnu family.

I remember being deeply disappointed by this when Solaris took over
from SunOS4 and earlier: now you had to buy the compilers, and they
weren't cheap.

SunOS at least came with _a_ compiler, though granted it only accepted
pre-ANSI C (I assume it was pcc based and mostly intended for linking
the kernel). Foks installed GCC and many of the GNU tools to get
something a bit more up-to-date.

        - Dan C.

> Sent from a handheld expect more typos than usual
> On Tue, Nov 11, 2025 at 9:05 PM segaloco via TUHS <tuhs at tuhs.org> wrote:
> > Pardon if this question has already been asked and answered
> > before, but I find myself curious.  System V Release 4 was a
> > joint effort between USL and Sun, which involved contributions
> > from both parties as well as other improvements.
> >
> > I often see it suggested that the first version of Solaris was
> > SVR4 itself, but my question is: Was the initial stock Solaris 2
> > release identical to USL SVR4, or were there still additional
> > value-adds that Sun made to the inaugural release of Solaris
> > beyond just the joint SVR4 trunk resulting from the project
> > between the two organizations?  In other words, when one
> > purchased and installed the initial release of Solaris, were they
> > in essence also installing SVR4 from USL, or was there some
> > appreciable difference?


More information about the TUHS mailing list