IRC channel logs

2017-08-13.log

back to list of logs

<reepca>how would one go about figuring out which kind of port a port is? For example, socket, file, pipe, etc.
<cmaloney>reepca: I think the only data you get (iirc) is whether it's a block or character device
<cmaloney>reepca: Is this a remote port or a local port?
<manumanumanu>davexunit: so, back to continuation-safe for/list loops. I have a question. Wouldn't jumping in and out of a continuation with a lot of conses take a lot of time? There was just a pretty big performance bug in racket using generators and their for/list that wasn't tail recursive, and I wouldn't want to spend lots of time implementing continuation-safe loops and have them be dirt-slow for continuations :) It
<manumanumanu>might just be racket specific, but that stuff goes way over my head: https://github.com/racket/racket/issues/1721
<manumanumanu>Found the problem, btw: racket expands for/list loops with #:break/#:final statements to a simple (reverse (loop))), but uses the neat (now slow) behaviour for the other lists.
<efraim>is there a guile-soap library? or is the emacs-soap library the closest one
<manumanumanu>ok, tried it. re-instating the continuation is a lot faster using an accumulator than a non-tail-rec loop using cons.
<cmaloney>tzag
<amz3>héllo #guile
<paroneayea>hello #guile
<paroneayea>in case you want to see Pubstrate running live
<paroneayea> https://chaos.dustycloud.org/u/chaosmonkey/p/MfGFbDsAEcpgSfdw2H9NaODcQUDdBzMB5h8gZ-Ib
<paroneayea> https://chaos.dustycloud.org/u/chaosmonkey/p/SkueW_47ImJAjas2m0IIt6HpHvcqCtW_Uyu2NDOs
<paroneayea> https://chaos.dustycloud.org/u/chaosmonkey/p/TPyZsdTihLT6hZctFcn6ts2vIyvJjDNOgJ12LZGK
<paroneayea>not permanent links, just a test instance
<mwette>paroneayea: looking nice
<paroneayea>thanks mwette
<paroneayea>hoo I have really painted myself into a corner tho
<paroneayea>I'm so far down the yak mines
<paroneayea>I thought layering 8sync on top of fibers would paper over the problem I was having because it would automatically suspend a fiber that was blocking (we still don't have suspendable-ports support for custom binary i/o ports) with its pre-emptive feature
<paroneayea>only realizing now that it can't be suspended, since the port itself is stuck behind a continuation barrier
<paroneayea>so now I've got to implement remote actor support and actually do all the http requests, temporarily, behind another process
<paroneayea>what a goofy situation
<paroneayea>I'm checking off all sorts of tasks I've wanted to do while trying to get this out the door, but in a rushed fashion
<spk121>paroneayea: just reading that wore me out.
<paroneayea>spk121: heh :)
<paroneayea>thinking, maybe there's another way
<paroneayea>actually if I can explicitly create a fiber in another thread, it's probably fine.
<paroneayea>wingo: is that possible? it looks to me like if I want to explicitly create a fiber in another thread, I have to create a scheduler in another thread, right?
<paroneayea>wingo: otherwise you have no control over what's in antoher thread or not
<paroneayea>?
<paroneayea>hm
<paroneayea>it looks like there's no "safe" way to do that without violating fibers' underlying structure if I'm reading right
<paroneayea>ughhhhhhh my brain is going to explode
<paroneayea>this thing is so past due and I need to have it up by tuesday morning :(