freenode/#sicl - IRC Chatlog
Search
12:25:56
beach
OK, let's see what I have left to make SICL work. For ANSI compliance there is a lot left. Bignum arithmetic, floating-point arithmetic, structs, conditions and signaling, but most of that can wait until I have an executable up and running.
12:26:03
beach
So to get an executable up and running, there is probably some code left. I am not sure I handle EQL specializers correctly for instance. But that's just some normal code to write.
12:26:16
beach
So in terms of bootstrapping, I need to make sure the method functions are instances of the right class. I think I know how to do that. Classes are loaded last in each phase. If I just copy the COMPILE function from the next environment to the present one, that should take care of that problem automatically.
12:26:23
beach
I also need to make sure that SET-FUNCALLABLE-INSTANCE-FUNCTION not only sets the host funcallable instance function but also the SICL one. Finally, I must "tie the knot", which I now think I know how to do since I started a paper on it.
12:29:38
heisig
The environment E6 would be the one that is isomorphic to the final executable, right?
12:35:25
beach
In the worst case, I'll use some simplistic version of the missing ones to start with.
12:40:04
beach
Yeah, that was the main important decision. Also the one that created all the bootstrapping complications.
12:43:15
heisig
Speaking of papers, I am currently browsing the ACM digital library to learn more about memory models.
12:45:41
Bike
so uh, i don't really understand here - is there an alternate position that actually data races are good?
12:48:20
Bike
i guess it depends on what is meant by data race. i can see situations in which non sequentially consistent programs are okay
12:52:36
heisig
Boehm says you should always write sequentially consistent programs. Otherwise you deserve going mad.
13:14:02
Colleen
drmeister: kpoeck said 3 hours, 47 minutes ago: perhaps https://gist.github.com/kpoeck/fb033e3688599820924cd69ad5e64bfd
13:14:02
Colleen
drmeister: kpoeck said 3 hours, 46 minutes ago: This is for standard-objects not for structures in the context of #= right? Do you have an example?
13:14:02
Colleen
drmeister: paulapatience[m] said 3 hours, 19 minutes ago: I managed to compile the dev branch of clasp with llvm-9 without any problems, but 'make test' in demo-clasp-cxx-interoperation still runs into the same segmentation violation I had before: http://ix.io/2gsS
13:44:44
beach
OK, so starting to think about "tying the knot", especially the aspect where the effective method functions and the discriminating function of a generic function must be of the same "tribe" (as splittist suggested) as the generic function itself.
13:44:53
beach
A "pure" accessor generic function (like the ones in E6) is meant to take a "very pure" object as an argument, like the class metaobjects in E6 or the generic functions in E7.
13:45:03
beach
But since the structures of a pure and a very pure object are identical, a pure accessor generic function can also take a pure object as an argument, provided that the class of that pure object is in the call history.
13:45:16
beach
So, for instance, if I apply GENERIC-FUNCTION-NAME to itself when the call history is empty, I get an error. But if I start by applying it to GENERIC-FUNCTION-NAME in E7 and then to itself, it works.
13:45:31
beach
But if I do it that way, the effective method function(s) and the discriminating function of GENERIC-FUNCTION-NAME in E6 will all be impure, because they were computed by COMPILE in E5. Another way of filling the call history is of course to use satiation, but SATIATE-GENERIC-FUNCTION must be the one in E5 for it to be applicable to a pure generic function in E6, simply because it calls impure accessor generic functions (in E5) to
13:45:40
beach
So again, the effective method functions and the discriminating function will be impure.
13:45:52
beach
But if I start by satiating all pure accessor generic functions (in E6), including the accessor generic functions, then those accessor functions can take pure generic functions as arguments.
13:45:55
beach
Therefore, I can call SATIATE-GENERIC-FUNCTION in E6 on the pure generic functions in E6. This step will result in the pure generic functions having pure effective method functions and a pure discriminating function, simply because COMPILE in E6 was used this time.
13:47:48
beach
But first, I must figure out a good way to check whether a pure generic function has a impure effective method functions or an impure discriminating function.