Harvey is not gone at all. it's all there on the repo. [email protected]:Harvey-OS/harvey git branch * GPL-C11
The build tool is called build, written in go. It is deliberately very dumb, Andy Tannenbaum advised me to go with "standard C, not GCC like Linus did, even though I told him not to!" [in his growly voice -- I miss that guy] and another friend told me "C compilers are fast, just brute force it" So instead of calling compilers for each C file, I call the compiler for every file in a directory: Building Libc /usr/bin/clang -std=c11 -c -I /home/rminnich/harvey/harvey/amd64/include -I /home/rminnich/harvey/harvey/sys/include -I . -fasm -ffreestanding -fno-builtin -fno-omit-frame-pointer -fno-stack-protector -g -gdwarf-2 -ggdb -mcmodel=small -O0 -static -Wall -Werror -fcommon -mstack-alignment=4 9sys/abort.c 9sys/access.c 9sys/announce.c 9sys/convD2M.c 9sys/convM2D.c 9sys/convM2S.c 9sys/convS2M.c 9sys/cputime.c 9sys/ctime.c 9sys/dial.c 9sys/dirfstat.c 9sys/dirfwstat.c 9sys/dirmodefmt.c 9sys/dirread.c 9sys/dirstat.c 9sys/dirwstat.c 9sys/fcallfmt.c 9sys/fork.c 9sys/getnetconninfo.c 9sys/getenv.c 9sys/getpid.c 9sys/getppid.c 9sys/getwd.c 9sys/iounit.c 9sys/nulldir.c 9sys/postnote.c 9sys/privalloc.c 9sys/pushssl.c 9sys/pushtls.c 9sys/putenv.c 9sys/qlock.c 9sys/read9pmsg.c 9sys/read.c 9sys/readv.c 9sys/rerrstr.c 9sys/sbrk.c 9sys/setnetmtpt.c 9sys/sysfatal.c 9sys/syslog.c 9sys/sysname.c 9sys/time.c 9sys/times.c 9sys/tm2sec.c 9sys/truerand.c 9sys/wait.c 9sys/waitpid.c 9sys/werrstr.c 9sys/write.c 9sys/writev.c 9syscall/alarm.s 9syscall/await.s 9syscall/bind.s 9syscall/brk_.s 9syscall/chdir.s 9syscall/close.s 9syscall/create.s 9syscall/dup.s 9syscall/errstr.s 9syscall/exec.s 9syscall/_exits.s 9syscall/fauth.s 9syscall/fd2path.s 9syscall/fstat.s 9syscall/fversion.s 9syscall/fwstat.s 9syscall/mount.s 9syscall/noted.s 9syscall/notify.s 9syscall/nsec.s 9syscall/open.s 9syscall/pipe.s 9syscall/pread.s 9syscall/pwrite.s 9syscall/r0.s 9syscall/remove.s 9syscall/rendezvous.s 9syscall/rfork.s 9syscall/seek.s 9syscall/segattach.s 9syscall/segbrk.s 9syscall/segdetach.s 9syscall/segflush.s 9syscall/segfree.s 9syscall/semacquire.s 9syscall/semrelease.s 9syscall/sleep.s 9syscall/stat.s 9syscall/tsemacquire.s 9syscall/unmount.s 9syscall/wstat.s fmt/dofmt.c fmt/dorfmt.c fmt/errfmt.c fmt/fltfmt.c fmt/fmt.c fmt/fmtfd.c fmt/fmtlock.c fmt/fmtprint.c fmt/fmtquote.c fmt/fmtrune.c fmt/fmtstr.c fmt/fmtvprint.c fmt/fprint.c fmt/print.c fmt/runefmtstr.c fmt/runeseprint.c fmt/runesmprint.c fmt/runesnprint.c fmt/runesprint.c fmt/runevseprint.c fmt/runevsmprint.c fmt/runevsnprint.c fmt/seprint.c fmt/smprint.c fmt/snprint.c fmt/sprint.c fmt/vfprint.c fmt/vseprint.c fmt/vsmprint.c fmt/vsnprint.c port/_assert.c port/abs.c port/asin.c port/atan.c port/atan2.c port/atexit.c port/atnotify.c port/atof.c port/atol.c port/atoll.c port/cistrcmp.c port/cistrncmp.c port/cistrstr.c port/charstod.c port/cleanname.c port/configstring.c port/ctype.c port/encodefmt.c port/errno2str.c port/execl.c port/exp.c port/fabs.c port/floor.c port/fmod.c port/frand.c port/frexp.c port/getfields.c port/getuser.c port/hangup.c port/hashmap.c port/hypot.c port/lnrand.c port/lock.c port/log.c port/lrand.c port/malloc.c port/memccpy.c port/memchr.c port/memcmp.c port/memmove.c port/memset.c port/mktemp.c port/muldiv.c port/nan.c port/needsrcquote.c port/netcrypt.c port/netmkaddr.c port/nrand.c port/ntruerand.c port/perror.c port/pool.c port/pow.c port/pow10.c port/qsort.c port/quote.c port/rand.c port/readn.c port/reallocarray.c port/rijndael.c port/rune.c port/runebase.c port/runebsearch.c port/runestrcat.c port/runestrchr.c port/runestrcmp.c port/runestrcpy.c port/runestrecpy.c port/runestrdup.c port/runestrncat.c port/runestrncmp.c port/runestrncpy.c port/runestrrchr.c port/runestrlen.c port/runestrstr.c port/runetype.c port/sha2.c port/sin.c port/sinh.c port/slice.c port/strcat.c port/strchr.c port/strcmp.c port/strcpy.c port/strecpy.c port/strcspn.c port/strdup.c port/strlcat.c port/strlcpy.c port/strlen.c port/strncat.c port/strncmp.c port/strncpy.c port/strpbrk.c port/strrchr.c port/strspn.c port/strstr.c port/strtod.c port/strtok.c port/strtol.c port/strtoll.c port/strtoul.c port/strtoull.c port/tan.c port/tanh.c port/tokenize.c port/toupper.c port/utfecpy.c port/utflen.c port/utfnlen.c port/utfrune.c port/utfrrune.c port/utfutf.c port/u16.c port/u32.c port/u64.c amd64/notejmp.c amd64/cycles.c amd64/argv0.c port/getcallstack.c amd64/rdpmc.c amd64/setjmp.s amd64/sqrt.s amd64/tas.s amd64/atom.S amd64/main9.S because clang is smart enough to only parse a .h file once. There are a few other go tools. We got rid of all the random awk, rc, etc. scripts, because we always forgot how they worked. I just tried this: go install harvey-os.org/cmd/decompress@latest go install harvey-os.org/cmd/mksys@latest go install harvey-os.org/cmd/build@latest git clone [email protected]:Harvey-OS/harvey cd harvey ARCH=amd64 CC=gcc build And, ironically, the one thing that fails is one of the go build steps, since in the 10 years since we set this up, the Go build commands have changed in incompatible ways. The changes are a HUGE improvement, but it just means old projects like this have an issue with go. The C stuff all builds fine. note also: rminnich@pop-os:~/harvey/harvey$ build You need to set the CC environment variable (e.g. gcc, clang, clang-3.6, ...) rminnich@pop-os:~/harvey/harvey$ CC=clang build You need to set the ARCH environment variable from: [amd64 riscv aarch64] rminnich@pop-os:~/harvey/harvey$ You have lots of choices as to toolchain. On Thu, Jan 8, 2026 at 4:45 AM <[email protected]> wrote: > On Wednesday, 7 January 2026, at 10:31 PM, ron minnich wrote: > > what we had planned for harvey was a good deal simpler: designate a part > of the address space as a "bounce fault to user" space area. > > When a page fault in that area occurred, info about the fault was sent to > an fd (if it was opened) or a note handler. > > user could could handle the fault or punt, as it saw fit. The fixup was > that user mode had to get the data to satisfy the fault, then tell the > kernel what to do. > > This is much like the 35-years-ago work we did on AIX, called > external pagers at the time; or the more recent umap work, > https://computing.llnl.gov/projects/umap, used fairly widely in HPC. > > If you go this route, it's a bit less complex than what you are proposing. > > > Thank you, this seems the nearest possible answer to my original question. > The bad about umap is, of course, that it depends on a linuxism. > > BTW. Harvey is gone. Is the work done to crosscompile for plan9 on gcc > accessible? > *9fans <https://9fans.topicbox.com/latest>* / 9fans / see discussions > <https://9fans.topicbox.com/groups/9fans> + participants > <https://9fans.topicbox.com/groups/9fans/members> + delivery options > <https://9fans.topicbox.com/groups/9fans/subscription> Permalink > <https://9fans.topicbox.com/groups/9fans/Te8d7c6e48b5c075b-M11a11204a789ee5dac250c3a> > ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/Te8d7c6e48b5c075b-M2966fd4ffcd98eb245b77956 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription
