freenode/#sicl - IRC Chatlog
Search
3:48:25
beach
no-defun-allowed: Will you be around to answer questions during the streaming of your talk?
3:49:55
no-defun-allowed
I won't be presenting today, sorry. I had too much planned, I got stuck with a homework question for most of a weekend, then I had no time to finish the demos that I wanted to present.
3:51:49
no-defun-allowed
Usually I've been able to stay to watch the talks and discuss them for some time after, though.
3:55:52
no-defun-allowed
My plan was to briefly go over the history of my distributed networking stuff, talk about the connection protocol, then collaborative filtering with a demo showing different filtering algorithms in a CLIM-based viewer program, then to look at concurrent hash tables and the in-progress bailout thread supervision system.
3:59:57
no-defun-allowed
Exactly, then I was not happy with the audio quality, because studio microphones are very directional, and I was not focused on keeping close to the microphone while recording, I can't seem to speak without losing track for over a minute, and I got a sore throat from having to re-record so frequently.
4:02:16
beach
Maybe it was best that there weren't two long presentations today. I believe scymtym's is 50 minutes or so.
4:04:42
no-defun-allowed
I had about 45 minutes of unedited slides, and after cutting out some false starts, I got it down to 35 or so (excluding demonstration, which I wanted at least 10 minutes for.) I would probably fall asleep at my own talk, honestly.
4:12:59
no-defun-allowed
Possibly, but honestly some of it just sounded blatantly obvious; like the part on connection protocols: "You could use a proxy to intercept connections and re-send messages on another protocol, like one group of Matrix hackers did. This could be better solved with a generic connection protocol that the participants in the network use." "Well, duh, indirection solves anything, and they are good engineers and would have
7:03:16
heisig
I just uploaded what I have so far on the HIR evaluator. Unfortunately, I still haven't resolved the issue of my missing tag in phase 4.
7:06:40
heisig
OK, first question: Each instruction has a dynamic environment location attached to it. But only a limited set of instructions uses it (one?). How can I figure out this set?
7:07:41
beach
Why do you need to figure it out? Sorry for answering a question with another question.
7:08:39
heisig
The interpreter has :before and :after methods on each instruction for maintaining the dynamic environment. I'd like to get rid of those when possible.
7:11:30
beach
When control is passed from an instruction I1 to an instruction I2 where I2 has a different dynamic environment, then the dynamic environment must be traversed in case there is an UNWIND-PROTECT entry.
7:12:39
heisig
Yes, I figured that much. But checking the dynamic environment after each instruction seems wasteful.
7:15:17
beach
For the :AFTER method, I have doubts that the lexical variable DYNAMIC-ENVIRONMENT is actually used. Let me see if I can get a clue about that.
7:16:59
heisig
The :after method is very confusing, especially since several instructions escape using THROW and therefore don't invoke it at all.
7:19:55
beach
Here is my theory. I think that the lexical variable DYNAMIC-ENVIRONMENT should always have the same value as the dynamic-environment-location of the previous instruction that was executed, and I think the :AFTER method maintains that.
7:20:54
beach
So the code for each instruction could update the dynamic environment only for those instructions.
7:22:06
beach
There was a discussion about using a LOCAL-UNWIND instruction to handle that specific case.
7:22:48
beach
If we had such an instruction, then that would be the only way the dynamic environment could be popped, so then the :BEFORE method could be eliminated.
7:23:57
heisig
Having such an instruction sounds very useful. But I should first try to get the evaluator working for the current set of instructions.
7:24:32
heisig
Second question: The specification and the implementation of the unwind instruction have diverged.
7:31:20
heisig
Sure. I am asking about the handling of unwind instructions because some code in boot phase 4 manages to THROW to a frame pointer that doesn't exist.
7:35:25
beach
Well, let's see. During AST-to-HIR, the UNWIND instruction is created with a single input.
7:36:14
beach
But I can't replace it with a function call instruction, because that would lose some information.
7:41:50
heisig
Yes, that is the root of the problem. One tag is for abandoning and one for transferring control. But I haven't fully grasped their purpose yet.
7:44:11
heisig
I still have another, minor question. How do you plan to add target specific constants like most-positive-fixnum to SICL?
7:44:56
heisig
I am asking because currently, fixnum related primops will accept arbitrary integers. I'd like to narrow that down.
7:46:54
heisig
Technically, that shouldn't be possible. But I've been in this business long enough to know that such checks uncover interesting things :)
7:47:49
beach
OK, fair enough. In host code, you could probably use some ridiculously small bound like 2^30.
7:49:16
beach
But since I am targeting 64-bit platforms, you can choose something way bigger than that.
7:50:12
heisig
As I said, this is just a minor issue. But ultimately we should make sure that the target images don't accidentally inherit behavior of the host.