ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Check also http://www.picolisp.com for more information
orivej has quit [Ping timeout: 265 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 250 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
stultulo has joined #picolisp
f8l has quit [Ping timeout: 268 seconds]
stultulo is now known as f8l
rob_w has joined #picolisp
<aw-> Regenaxer: hi
<aw-> do you plan to make a PicoLisp release (19.12) this month?
<Regenaxer> Hi aw-! Yes, as usual
<aw-> great! thanks
<aw-> i appreciate the consistency :)
<Regenaxer> :)
orivej has joined #picolisp
_whitelogger has joined #picolisp
mario-goulart has quit [*.net *.split]
jibanes has quit [*.net *.split]
michelp has quit [*.net *.split]
Nistur has quit [*.net *.split]
pointfree has quit [*.net *.split]
orivej has quit [*.net *.split]
f8l has joined #picolisp
mario-goulart has joined #picolisp
aw- has joined #picolisp
viaken has joined #picolisp
orivej has joined #picolisp
xkapastel has joined #picolisp
DKordic has joined #picolisp
freeemint has joined #picolisp
freeemint has quit [Quit: Leaving]
freeemint has joined #picolisp
freemint has joined #picolisp
<freemint> Regenaxer the webserver can call functions like !home. Is there a way to redefine/reload those functions without restarting the server?
<Regenaxer> You could do what 'server' does, (setq *Home (cons NewHome (chop NewHome))
<Regenaxer> In the parent process
<Regenaxer> *Home is just a default, if no arg is given
<Regenaxer> no URL arg I mean
<freemint> The parent process is stuck in a loop waiting for connections though?
<freemint> (Atleast that is how i think http.l works)
<Regenaxer> yes, but you can let it execute somehing with 'boss'
<Regenaxer> (load "lib/boss.l") upon start
<Regenaxer> Or (load "@lib/boss.l")
<freemint> Oh, mhh. And how can i trigger boss? Just make function refresh, allow it and trigger it via url?
<Regenaxer> I do often things like (boss 'load "app/gui.") on production server to reload libs on the fly
<Regenaxer> yes, any child can do
<Regenaxer> you can pass a file to the server that calls boss
<freemint> Btw is there a way to use httpGate to access to the shells of a
<freemint> *shell of a parent
<freemint> Mhh file might work too.
<Regenaxer> This is not httpGate's business
<Regenaxer> psh
<Regenaxer> but psh runs in a child
<freemint> Ahh. Ok
<Regenaxer> a shell to the parent is not possible
freeemint has quit [Ping timeout: 265 seconds]
<Regenaxer> You can also attach psh to a running child
<freemint> I mean httpGate holds all the shells in theory.
<Regenaxer> how dees it hold shells?
<Regenaxer> it just connects to ports
<freemint> It spawns the parent process for each service in the names file?
<Regenaxer> right
<freemint> It reads from the parents error stream?
<Regenaxer> no
<freemint> Ok
<freemint> I see
<Regenaxer> only the exec return code iirc
<Regenaxer> when starting the process
<freemint> Ok
<Regenaxer> Stderr usually goes to a log file
<Regenaxer> not usually, always
<Regenaxer> ie the one specified in the config
<freemint> Could i start a screen(or something similar) from httpGate which contains pil process?
<Regenaxer> yes, it is psh
<Regenaxer> unless that process does its own repl
<Regenaxer> e.g. (repl) from @lib/form.l
<Regenaxer> PilBox does that btw
<freemint> Ok ...
<freemint> boss seems like the way to go. Is there a way to capture unix signals. using HUP instead of boss?
<Regenaxer> you mean to send something to the parent?
<Regenaxer> *Sig1 and *Sig2 are good perhaps
<freemint> Yes, send signal to parent which triggers picoLisp function call that updates stuff.
<Regenaxer> yes, good
<freemint> Could that work?
<Regenaxer> yes
<Regenaxer> but a signal cannot carry further info
<Regenaxer> Take a look at 'sigio' and 'udp'
<Regenaxer> The parent can register before calling 'server'
<freemint> Will Sig1 even trigger in thight loops or do i need a wait in the loop?
<freemint> Waiting on a file descriptor using select front-end might work too.
<Regenaxer> The interpreter checks at every high level function call, and in "slow" I/O system calls
<Regenaxer> yes, select frontend is 'task'
<freemint> Forgot the name. Yes task
<Regenaxer> app/main.l has an example
<freemint> So signal will not work when executing (lenght *Cyclic_lisz)?
<Regenaxer> listening for RPC commands
<Regenaxer> right
<Regenaxer> not in (loop)
<Regenaxer> but in (loop (+ 3 4))
<Regenaxer> you can try with ^C
<Regenaxer> ^C generates SIGINT
<freemint> Same mechanism? That is good to know
<Regenaxer> yeah, all signals
<freemint> Ans all signals have the same interrupting power?
<Regenaxer> To stop (loop) you must hit ^\ SIGQUIT
<Regenaxer> yes, just SIGKILL (9) can't be caught
<Regenaxer> So it should not be used on a pil DB process
<freemint> It goes right to the OS which kicks the process on the next timer interrupt/kernel tick.
<freemint> ?
<Regenaxer> yes
<freemint> I understand
<freemint> Thanks
<Regenaxer> but all signals go through the kernel
<Regenaxer> just catching is not possible for -9
<freemint> Why can't i capture SigHub inly Sig1?
<Regenaxer> ?
<Regenaxer> SIGHUB is caught
<Regenaxer> then *Hup is executed
<Regenaxer> SIGHUP I mean
freemint has quit [Ping timeout: 246 seconds]
orivej has quit [Ping timeout: 252 seconds]
f8l has quit [Ping timeout: 265 seconds]
freemint has joined #picolisp
orivej has joined #picolisp
f8l has joined #picolisp
freemint has quit [Remote host closed the connection]
karswell has joined #picolisp