Thanks for the insight, definitely a stronger case for 4.1BSD being involved in some way,
shape, or form. Here are a few SCCS strings from V8 vs 4BSD and 4.1(c)BSD.
init:
V8 - "(a)(#)init.c 4.3 (Berkeley) 10/13/80"
4BSD - "(a)(#)init.c 4.3 (Berkeley) 10/13/80"
4.1cBSD - "(a)(#)init.c 4.10 (Berkeley) 12/22/82"
getty:
V8 - "(a)(#)getty.c 4.1 (Berkeley) 10/1/80"
4BSD - "(a)(#)getty.c 4.1 (Berkeley) 10/1/80"
4.1cBSD - "(a)(#)getty.c 4.9 4.9 82/12/23"
Locore (not an SCCS string, but comment at top):
V8 - "Locore.c 4.11 81/05/15"
4BSD - "Locore.c 4.4 11/10/80"
4.1BSD - "Locore.c 4.11 81/05/15" (Note, used the BBN VAX version here, I
couldn't find the kernel sources in the 4.1cBSD on the archive...)
Main (kernel):
V8 - "main.c 4.14 81/04/23"
4BSD - "main.c 4.2 11/9/80"
4.1BSD - "main.c 4.14 81/04/23"
crt0: This one doesn't have SCCS info, is identical between V8 and 4BSD in ASM. The
crt0 in 4.1cBSD is in C instead, so not really comparable.
doprnt (c library):
V8 - "(a)(#)doprnt.s 4.3 (Berkeley) 3/22/81"
4BSD - No string...
4.1cBSD - "(a)(#)doprnt.s 4.4 (Berkeley) 11/25/81"
Granted, this isn't exhaustive by any means, but everything I've checked has
shown a much stronger 4 through 4.1cBSD character than V7/32V. It's too bad the
march from V7 to V8 isn't more documented, what I'm starting to see here is a
incremental approach where perhaps 4BSD was picked up, started to be modified into a
research version, and as useful developments were made at Berkeley, they continued to
merge in as well as make local changes until V8 was born.
This is all speculation on my part though, I don't want to establish history I
wasn't there for, but there is a strong case for V8 starting possibly as 4BSD with a
pretty open door to continuing to pull from BSD for a little while. Specifically,
I've seen more 4BSD alignment in userland, more 4.1BSD alignment in the kernel, but
it's all, as Dennis put it, "pretty eclectic".
- Matt G.
------- Original Message -------
On Friday, July 15th, 2022 at 10:50 AM, Warner Losh <imp(a)bsdimp.com> wrote:
On Fri, Jul 15, 2022 at 11:15 AM segaloco via TUHS <tuhs(a)tuhs.org> wrote:
Re-subject'd as this part of the
conversation diverges.
Found the quote that I was thinking of when I said that:
https://yarchive.net/comp/bsd.html
"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
The "I think" adds some murkiness for sure. 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.
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.
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.
The biggest differences between BSD4.1 and BSD4.1c were the addition of FFS in 4.1b (we
have 4.1a from Kirk's DVD, as well as 4.1 and two versions of 4.1c). There's no
ufs that I can detect in V8 though.
If we look at the vm, the 4.1c.2 files are from 83, the 4.1 files are from 80 and the v8
files are from 81.
Kirk's DVD has a 4.1.snap on it that lines up more closely with at least the vm
files. I don't recall what these files are from. It's not present in the TUHS
archives that I see. This snapshot is about a year after 4.1BSD release, but maybe 18
months before the 4.1a snapshot.
Warner