freenode/#clasp - IRC Chatlog
Search
16:32:30
Colleen
Serenitty[m]: drmeister said at 2017.09.26 01:43:24: I fixed the target triple issue - no more complaints
16:32:54
Colleen
Unknown command. Possible matches: 8, say, mop, time, tell, roll, help, deny, clhs, have a,
16:33:35
Serenitty[m]
Hey. I just got a phone notification about date standards, and I had to share my opinion. :P
16:34:25
drmeister
jackdaniel: It turns out I didn't fully implement the ECL C::BUILDER function - it requires c::compute-init-name, which I also haven't implemented.
16:36:41
Shinmera
And I find the . less distracting because it's at the bottom rather than the middle like the dash is.
16:40:20
Serenitty[m]
Part of the reason that I find them easy to read is that they're very similar to date notation in East Asia, which I'm fairly used to. In China and Japan, today's date would be written as ”2017年11月22日” which is very close to ISO, with the difference that it puts “year”, “month”, and “day” after each number.
16:41:55
drmeister
General question: I want to make a clasp specific change to ASDF and I've submitted a bug report to the ASDF bug tracker regarding this.
16:42:21
drmeister
In the meantime - how should I propagate this test to different Clasp installations?
16:42:49
drmeister
Should I fork the ASDF repo and change the submodule in Clasp to point to the fork?
21:41:24
drmeister
Hi - I was going to disable the concurrent queue code in clasp for the time being until I, you or someone else has the time to make it compatible with the MPS.
21:42:17
drmeister
It's a C++ data structure that needs some tweaking to make it compatible with the MPS - this may be easy or hard - but I don't have the time to figure out which of those situations it is at the moment.
21:42:48
drmeister
No - I was interested in it as well - so I hacked it into Clasp and used it in a couple of situations to see how useful it was.
21:43:07
drmeister
It's easy to implement it using Boehm and an unknown amount of work to make it work using MPS.
21:44:48
drmeister
It uses malloc and free for all memory management and to make it compatible with MPS the data structures that need to contain fixable pointers need to be set up to be allocated by MPS and scanned by Clasp code.
21:45:21
drmeister
I haven't seen any concurrent queue's from the Ravenbrook folks. If you have a URL - I would love to take a look at it.
21:46:26
frgo
I don't have any idea - but I would like to ask them if they have sth that works already. I'd imagine they do projects where they needed such a thing.
22:34:42
drmeister
That's an interesting thought - they may have implemented data structures for the MPS.
22:53:52
drmeister
frgo: Do you have a few minutes to discuss signals and interrupts again? I'm looking at the interrupt.cc code - it looks like this https://github.com/drmeister/clasp/blob/dev/src/gctools/interrupt.cc#L219 is where a thread checks if an interrupt needs to be handled.
22:54:49
drmeister
And then the thread is responsible for checking if it has any pending interrupts to handle.
22:55:20
drmeister
I say "looks like" because I remember writing this code and then you going in and working on it as well to improve the signal handling.
22:59:22
drmeister
Now, currently, the only place that pending interrupts are checked for is in clasp_musleep
23:06:19
drmeister
Ok, that sort of works - I can start a process that calls musleep every 0.1 seconds 1000 times and from another process I can kill it. But if I have the child process call musleep for 100 seconds I can't kill it because it doesn't check if there is an interrupt.
23:06:40
drmeister
I guess I need to write SLEEP so that it wakes up ever 0.1 seconds or so and checks if there was an interrupt?
23:22:52
drmeister
stassats`: Does it make sense to have musleep break up the time that it sleeps and every 0.1 second check if an interrupt has been registered?
23:25:43
drmeister
I'm working with Cando and doing things that I need to interrupt. Currently the only safe point that Clasp/Cando check is when clasp_musleep is returning.
23:26:19
drmeister
So that looked like a place to start. (SLEEP 100) only checks the interrupt once - at the end of 100 seconds.
23:27:28
drmeister
I can't always receive interrupts. The interrupt queue can only be polled. I always receive signals - and they queue interrupts.
23:28:09
drmeister
This is the whole problem with unix and C++. I can only check if interrupts are pending in C++ at safe points.
23:28:55
drmeister
I'm not sure about that. The MPS documentation says that it does - but I haven't found the API that I can access.
23:30:43
drmeister
If it's signals then maybe it can send a signal to a thread and cause the thread to block and then release when the GC is done.
23:33:20
drmeister
I need to interrupt a thread Y and tell it to exit. The only way I can see to do it is to have thread X register an interrupt in Y's interrupt queue and for Y to periodically check its interrupt queue and if it sees an something there - to act on it.
23:34:42
drmeister
I set up all of this code months ago - now I want to use make it work for me an let me interrupt worker threads.
23:35:53
drmeister
That's a good point - but it's not interrupting currently - maybe that's where I should look for a problem.
23:58:21
drmeister
Ah - when I use (mp:process-kill *p*) I'm not sending a signal to the thread *p* - I'm just queuing an interrupt.
0:01:01
stassats`
your own read-char could be using poll, but what if something in waits on a socket