libera/#sicl - IRC Chatlog
Search
6:11:02
makomo
i like the discussions as well. every few days i try to catch up on what's been said (even if i don't fully understand what's going on every time) :)
6:36:24
beach
Today, my favorite coauthor is coming over for lunch, so I won't get much SICL work done. At least not until late afternoon.
7:40:28
beach
I think I now have the full picture regarding how a code object is tied to an environment. I think I have worked out the details on how it must work in the native case, and I now have to figure out the analogous details on how the HIR evaluator will tie such a code object. The tricky part here is that the HIR evaluator must produce a viable native code vector.
7:41:24
beach
Rather than trying to type my ideas here, I'll find a good place in the specification, and then submit the text for feedback.
7:42:38
beach
Once I have something reasonably details written down, it is going to be totally important to get feedback on it. Partly because it is going to change what the HIR evaluator currently does for things like LOAD-CONSTANT instructions.
7:43:56
beach
This is incredibly hard stuff (for me), so I would prefer not to embark on the implementation until I know that it is doable.
7:44:31
heisig
My first task for today is to fix some code that outrageously specializes on SIMPLE-BIT-VECTOR.
7:46:14
beach
heisig: So did you find a good restaurant in Le Mans where they served the famous rillettes?
7:48:09
beach
hayley: https://en.wikipedia.org/wiki/Rillettes in case you don't know about this sublime delicacy from Le Mans. :)
7:49:09
heisig
Although it was quite hard to find a nice place in Le Mans. This is the ugliest French city I've ever seen.
7:50:33
heisig
They completely ruined their city center. This was the first time I saw a cathedral without a single restaurant nearby.
7:56:09
beach
I looked at the street view in Google maps, and Le Man shows a lot of parked cars and not a single person. Compare that to the same thing of the center of Bordeaux.
7:59:47
heisig
Yes, cars are a big part of the problem in Le Mans. Being home to a large car company (Renault) seems to do that to a city.
8:00:44
heisig
The crazy part is that we could watch the traffic from a platform near the cathedral, and the few people on bikes that were brave enough to ride there were much faster than the cars around them.
8:04:34
heisig
Hmm, someone has replaced my perfectly portable references to CLOSER-MOP with references to SICL-CLOS. Now I can't load the code into SBCL.
8:05:14
heisig
I will introduce two ASDF systems - one for loading the portable versions of sicl-sequence and one for loading the SICL-specific version.
8:05:20
beach
I told you I had to do some surgery to make progress. Feel free to back out those changes.
8:06:09
beach
I am now convinced that I can work out the details of loading the sequence functions, but I won't do that for some time, so just go ahead.
8:11:10
heisig
Do we already have a naming convention for such SICL-specific ASDF systems and files?
8:13:02
beach
And I don't think a #+sicl reader conditional should be used, because other implementation might want to use it as an intrinsic version.
8:15:24
heisig
I see. So the portable system should be named 'sicl-sequence-extrinsic', and the other one just 'sicl-sequence', right?
8:19:29
heisig
Yes, the other way round sounds much better. Otherwise, people would have to type 'sicl-sequence-extrinsic' instead of 'sicl-sequence' to get our code from Quicklisp.
8:20:20
heisig
Should I also remove the reference to fast-generic-functions for the intrinsic version?
8:21:27
beach
Good question. What I did instead was to create a system called FAST-GENERIC-FUNCTIONS that does nothing but provide the right names.
8:23:50
beach
I think you would have to create special versions for a lot of code if you removed references to FAST-GENERIC-FUNCTIONS.
8:24:28
beach
But you could perhaps keep in mind the difficulty of creating such a "fake" system when you update your code.
8:28:03
heisig
The fake system looks good. That's exactly what I would have done. Call-site optimization should do the rest.
8:29:45
heisig
That is, under the assumption that things like specialized versions of ELT are inlined into the snippet.
9:20:32
heisig
There is another bug I just discovered. Someone has replaced my call to CL:ELT by AREF.
9:22:37
heisig
But fixing that isn't too hard, assuming the compiler can optimize-away ARRAY-HAS-FILL-POINTER-P when possible.
10:11:08
heisig
I wouldn't want you to attempt bootstrapping with broken sequence functions. That could be a nightmare.
10:20:01
heisig
Now all that remains is bug in DELETE-DUPLICATES when applied to non-simple strings.
11:13:14
heisig
I just pushed some changes that should speed up the loading of sicl-sequence by roughly a factor of 2-4.
15:42:18
mfiano
https://github.com/robert-strandh/Stealth-mixin/blob/master/stealth-mixin.lisp#L10-L11
15:56:42
mfiano
This tiny library is such a great idea. It's certainly very different, and maybe better, than the way I've been using the MOP to create mixins.
15:57:54
beach
I see. Well, there is a place for "ordinary" mixins, if both the mixins and the main classes that use them as superclasses are in the same module.
15:58:57
beach
And, if there is no performance problem, client code can use hash tables to store the same information that a stealth mixin does. Albeit with a more awkward way of using it.
15:59:51
mfiano
I particularly like how you can solve the model notification problem with an :after method, preventing the model from having even a loose dependency on the view, which could be important if eg; the source code is not even available.
16:02:00
mfiano
Yes and I think that is wonderful. For a long time, I was wondering if something like this was possible, because I dislike mutually dependent packages.
16:03:26
beach
Right, the description of the traditional way of implementing the observer pattern looks good in theory, but it requires the model to be written with observers in mind. And sometimes, you just use an existing model that was not written that way.
16:06:42
mfiano
I will have to think about what that means if the model uses simple method combination
16:09:08
mfiano
Yeah this is seeming good on paper the more I think about it. I look forward to integrating it into my codes
16:23:00
mfiano
I'm also excited because my constant complaining finally paid off and an SBCL dev issued a patch to the style-warning with duplicate symbol-name slots.
16:23:24
mfiano
mixins are no longer an annoyance for me to use, though I'm not sure when that patch will make it into a release.