freenode/#sicl - IRC Chatlog
Search
10:23:07
lonjil
Apropos the bignum discussion here a few days ago, I just read about an interesting technique for speeding up addition and subtraction, especially when you have multiple operations lined up. It relies on the limbs being smaller than standard integers (2^32 or 2^64) to parallelize addition/subtraction and save the carry propogation until later. Probably not a short-term concern at all, but interesting none the less.
11:05:29
beach
After lunch-time contemplation, I have a much better idea of what needs to be done. I have to rework the discriminating automaton anyway, so this is the right time to do that. But it is not something that I can do in just a few hours.
11:06:57
beach
Other than taking into account EQL specializers, I also need to test for argument types with their own tags, so anything other than standard objects, and I need to do that before accessing the stamp of an argument.
11:07:38
beach
So, I think I need to do the discriminating function argument by argument. It can still be done left to right.
11:08:32
beach
For each argument, I should test for non-standard-objects first, including any EQL object that is not a standard object.
11:09:14
beach
Only if it is a standard object do I then access the stamp and submit it to the discrimination by stamp intervals that I documented in my paper.
11:10:01
beach
Finally, after the class has been determined, there will be explicit tests using EQL to determine whether it is an EQL specializer object or not.
11:10:57
beach
The next question has to do with caching and how to represent the call history in the presence of EQL specializers.
11:13:33
beach
Clearly, if COMPUTE-APPLICABLE-METHODS-USING-CLASSES returns false in its second value, we need information about all the EQL specializer objects as well, and that information must be cached.
11:15:10
beach
When COMPUTE-APPLICABLE-METHODS-USING-CLASSES returns false in its second value, it is not specified what the first value contains. So I am thinking it should be possible to return methods with EQL specializers that might be applicable together with other methods that definitely are applicable.
11:21:41
beach
That list can then be used to compute the discriminating function. But I must try to avoid duplication of equivalent states in the discriminating function, just as I do now. I guess I will construct the automaton first, and using classes and EQL objects as transitions. Only later do I extract non-standard-objects and use stamps.
11:26:16
beach
And this is the right place to take into account the fact that an accessor method may have to use a different slot location depending on the exact class of an argument.
11:31:39
beach
Maybe initially, I should not merge equivalent states. Then I solve the problem with accessor methods, because I would have a tree and each leaf would correspond to a unique list of classes.
11:39:28
no-defun-allowed
(Irrelevant update on the Raspberry Pi scene: the Foundation released a model with 8GB of memory, so they have to release official 64-bit software...only four years after their first 64-machine. That means it takes much less effort to run proper Lisp programs on them now.)
11:41:48
no-defun-allowed
I think replacing a desktop would be a while away, as it is probably about a magnitude slower.
11:42:28
beach
I see. But I don't depend on speed that much. At least not until I enable code generation.
11:49:17
no-defun-allowed
Yeah, $75, which has the most value per gigabyte of memory out of the boards I have looked at.
11:54:04
no-defun-allowed
I still don't know how to update the Ubuntu release without using command-line tools.
11:55:33
beach
I never upgrade. It is known to break stuff. I have two small disks for the OS, so the idea is I install the new one on the currently unused disk for testing.
11:59:53
beach
Anyway, interesting discussion, but I need to go off line to think more about discriminating functions and caching.
12:35:56
beach
ralt: OK. The thing is I need a workspace manager with at leat 36 possible workspaces, preferably with names and thumbnails attached, and that used to be easy with Ubuntu, but now it no longer is. I had to install another desktop manager (I forget the name), but even so, the workspaces have neither thumbnails nor names, so I have to cycle them sequentially to see whether there is anything on them.
12:36:27
beach
Of course, right now it doesn't matter much, because I don't reach more than 4 or so of them before I have a crash.
12:38:57
aeth
It looks a bit awkard to use. First, you have to rebind C-t because it's not a very good binding. s-z is easy to type, or anything else that has a super key. Then it appears to be chorded on 'g' which is why I've never noticed them before.
12:39:26
beach
How does that work with my three monitors? Especially if I want an Emacs full screen on one monitor, with three windows.
12:40:30
aeth
It's pretty easy, [key] C-e brings up emacs and then you M-x 5 2 and then you [key] M-right... and repeat that again. Where [key] is your more convenient key binding than the default stumpwm uses
12:42:16
aeth
It doesn't look like there's a visualization of groups, just a [key] G to list the full contents
12:43:21
aeth
beach: If I do s-z G, it'll list one group, as 1 (so it's 1-based?) and then 3 windows 0 1 2
12:46:59
ralt
Those sort of interfaces are very easy to add on top of what you want to have your "perfect workflow"
12:47:24
aeth
Well, the easiest way to see the commands is C-t g ? but again I highly recommend using a super-based binding instead of C-t so you don't clash with existing bindings (super should be reserved to the DE on Linux)
12:47:49
ralt
Nowadays I just have 3 fullscreens windows so I don't care much and just go with gnome.
12:48:25
aeth
Exact opposite for me. On my desktop where I have two monitors and I mostly have things fullscreen, I prefer stumpwm because it treats my monitors as tiles, whereas Gnome 3 treats one of my monitors as a permanent second class citizen
12:49:39
ralt
Heh. I just need Emacs, browser, and slack for work (because it doesn't work well in Firefox)
12:51:46
beach
Email work, email private, SICL code (3 or 4), SICL documentation, Cleavir code (1 or 2), Cleavir documentation, Eclector, Trucler, CST, cleaning person, gardener, taxes, YouTube to watch with exercise, X86 documentation, Common Lisp HyperSpec, MOP documentation, Raspberry pi, RISC-V, phoe's code, phoe's book, my own book projects, (3 or so), articles to read, article being written.
12:53:32
ralt
Anyway, my point is mostly that if you want this sort of specialized workflow, it's not the typical one that DEs are trying to cater to, so you're probably better off going with something easy to customize with a bunch of things out of the box.
12:54:36
ralt
Be careful though, you might like it and end up spending too much time writing code for it :P
13:06:21
beach
"Please install a real-time version of the kernel, so that I can use the synthesizer software with short delays, and without breaking my other tools, and if the synthesizer only works with JACK, then make sure that Firefox, Mplayer, ogg123, etc, also work with JACK."
13:08:52
aeth
Fedora's package manager used to be "yum" (and was written in Python 2), but they rebranded it "dnf" in the Python 3 rewrite
13:09:09
aeth
The rewrite also integrated all of the extra utils, so e.g. "repoquery foo" became "dnf repoquery foo"
13:09:45
aeth
The only use of "rpm" itself on Fedora these days is "rpm -qa". You should never "rpm -i".
13:11:43
beach
I would gladly pay someone, but I suspect that someone needs physical access to my office.
13:21:51
Bike
in clasp what we do is maintain a list of eql specializers at each position in the specializer profile, and then not cache entries if they have a class specialization in a position with eql specializers.
13:22:06
Bike
might also be possible to just cache entries for all the eql specializers at once whenever you miss on any of em
16:13:09
beach
I think I have a solution to the problem with discriminating functions. Tomorrow, I'll write down what I came up with. There are some messy details so I prefer a separate text rather than trying to stick everything in here. Plus, it gives me a bit more time to think it through.