freenode/#sicl - IRC Chatlog
Search
16:17:38
beach
After a pretty mediocre day (lots of interruptions, and my computer crashed 5 times), I decided to make a small experiment. I took the first few function (for class finalization) invoked in phase 3 and copied them (with small but appropriate adaptations) to a new phase 4. Then I started the bootstrapping.
16:17:48
beach
It failed, of course, but in a surprisingly good way. It got as far as invoking the SICL generic function (SETF INSTANCE-SIZE) which is correctly invoked during class finalization.
16:18:00
beach
However, when I take the CLASS-OF some object, I currently only recognize some of the MOP classes plus CONS and SYMBOL. For other types, I just return the host type. So the host type of the size argument is the host class FIXNUM, which I obviously can't handle, so it failed.
16:18:05
beach
But this is a good sign, because it means that things are generally working. I just have to make sure I assign a SICL class to fixnums, and I have to make sure that class definition is loaded with the mop classes. Not only is that not a problem, it is a good thing, because the more SICL classes I have, the closer to a SICL system I obtain.
16:19:55
beach
In the past few days, I have mostly been doing cleanup work, and that's fine, but the progress is hard to see.
16:20:50
beach
I now have two pairs of files that have the identical structure between phase 2 and phase 3. It won't be possible to make them all identical because there are some additional features that are needed in phase 3 that aren't in phase 2.
16:21:42
beach
For example, class and generic-function initialization is done with :AROUND methods on SHARED-INITIALIZE. In phase 2, it's the host SHARED-INITIALIZE, so I just imported.
16:22:18
beach
And INITIALIZE-INSTANCE is that of the host as well and it is called automatically by the host MAKE-INSTANCE.
16:23:11
beach
I must load SICL definitions of ALLOCATE-INSTANCE, INITIALIZE-INSTANCE and SHARED-INITIALIZE in the form of generic functions.
16:24:12
beach
However, between phase 3 and phase 4, I don't see any differences at all, at least not at the moment. The entire SICL machinery is needed in both phases.
16:33:17
beach
I already mentioned "A key concept in all operating system is the process. [...] Associated with each process is its address space, a list of memory locations from 0 to some maximu, which the process can read and write. The address space contains the executable program, the program's data, and its stack."
16:34:51
beach
"Some things that C does not have include ...., and garbage collection. The last one is a show stopper for operating systems."
16:38:22
scymtym
had they stopped at "A key concept in all operating system is the process.", one could argue that a process is the technical realization of a computation and that multiple simultaneous ones should be supported by an operating system. but mentioning the address space and its particularities make that implausible
16:39:02
beach
Oh, I see how they can weasel out of the Genera thing. They could just declare that Genera is not an operating system. I mean, after all, it has garbage collection, so it can't be an operating system.
16:39:03
scymtym
the second one could be read as C not having gc is a show stopper for writing an os in C :)
16:41:58
beach
"When an interrupt occurs, the operating system may have only a few microseconds to perform some action, or lose critical information. Having the garbage collector kick in at an arbitrary moment is intolerable."
16:43:53
scymtym
and the gc would disable or defer interrupt handlers? why? and how would it "kick in" by itself?
16:46:14
beach
How many reputable OS books are out there? This one and that by Silberschatz et al I know. Any others? I am not counting books for specific systems here.
16:47:33
scymtym
my systems programming course was C, BSD sockets and a bit of Linux kernel dissection
16:59:25
beach
"Each process image consists of a process control block, a user stack, the private address space of the process, and any other address space that the process shares with other processes."
21:37:03
heisig
The idea is to have one package for normal users (petalisp-api) and another package for those hacking on Petalisp internals (petalisp-core). I am quite happy with the change.
0:36:49
no-defun-allowed
there's house in haskell if you're really bored, but it's coop multitasking and you can break it if you're too good at orthello iirc
0:43:40
jcowan
IBM once had something called the FORTRAN OS, but it was apparently an OS (of the MS-DOS program loader type) for Fortran programs, probably written in assembler.