That sounds mostly right, from memory. V8 was definitely adapted from
some 4BSD, not 32V - there was major internal friction on that
decision. I will admit to being a defender of Reiser and London's VAX
port, which was screamingly fast. However.
Regarding select, I recall that Dennis implemented it and passed it to
Berkeley*, but maybe not. He certainly had a hand in its design; I
distinctly remember talking to him about it after one of his trips out
west.
-rob
A note for the historians: Bell Labs's Unix Support Group (USG), which
did development work for Unix, and was not even in the same building
as Research, was run by Berkley (sic) Tague. Thus we had Berkeley Unix
and Berkley's Unix and no end of fun and confusion on that score.
On Sat, Jul 16, 2022 at 7:32 PM Paul Ruizendaal <pnr(a)planet.nl> wrote:
On 15 Jul 2022, at 19:15, segaloco
<segaloco(a)protonmail.com> wrote:
Not trying to be combative by any means, but
I've been doing a bit of research lately into when V8 was snapped from BSD and where
Bell and Berkeley then diverged from that last major confluence, especially with a focus
on init and other early stages of userland.
Not taken as combative - always working on the basis of my 'current understanding’
and that is evolving continuously as new views and facts present themselves.
My comments were intended around the kernel code, not the userland. That said, I’ve
looked into this a bit more and I think you were more right than I was.
"Research Unix 8th Edition started from (I
think) BSD 4.1c, but with enormous amounts scooped out and replaced by our own
stuff." - Dennis Ritchie
That is a good quote, but I think there is a better way to look at this, which is
Warren’s tool to establish similarity between files (it is integrated with the Unix Tree
webpage on TUHS).
There's definitely a good chunk of code from
4BSD. Compare init, getty, locore.c (as opposed to .s in V7 back). Heck, even the main.c
between the two kernels are more similar to each other than V7. I would almost opt
towards calling that being rebased on 4BSD rather than V7 with bits and pieces of BSD
added. I could see it being more beneficial to start with 4BSD and tack on necessary Bell
bits rather than take V7/32V and try and shoehorn in the VM implementation for VAX.
Looking at various kernel files in the V8 tree, it would seem that the most comparable
file in the TUHS database (and excluding V9-V10) would typically be “BBN-TCP”, closely
followed by “4BSD”. This BBN-TCP kernel code is based on a snapshot of BSD from August
1980 (see its history file). Joy sent it to Gurwitz for integration of the BBN TCP stack
with the BSD kernel. I think it is (or is close to) 4.1BSD.
From the output of Warren’s tool, it also seems that 4.1c deviated/evolved considerably
from that base. It would require a more in-depth comparison to say more, but based on this
quick check I think it is reasonable to say that V8 started from 4.1BSD (and not 32V as I
thought, or 4.1c as dmr remembered). It would be interesting to see what the
"enormous amounts scooped out” exactly were -- but maybe this refers more to the
userland than the kernel.
Some bits - like select() - were not in 4.1BSD and would have come from 4.1c. The V8
kernel still has a lowcore.s (next to lowcore.c). Interestingly, this has the best match
with later BSD versions. In all likelihood, there was cross-fertilisation after the
initial code fork.
The 4.1cBSD copy on the archive does appear to be
pretty different, so in terms of raw comparison, I suspect the basis is 4BSD rather than
4.1cBSD. I don't know that we have a clean copy of 4.1BSD gold, I'd be
interested to see if the structure of the source code changed between 4.1 and 4.1c, as
4.1c does exhibit the new organization by the BSD folks, 4BSD still shows folders like
cmd, lib, and so on.
Yes, we have (now) reached the same conclusion, but don’t forget that V8 adds a lot of
innovation on top of that (streams, file system switch, virtual proc file system,
networking, remote file system, support for the Blit terminal, etc.). Networking in the V8
kernel (including Chaos) is organised very differently from 4.1cBSD.
Paul