beneroth changed the topic of #picolisp to: PicoLisp language | The scalpel of software development | Channel Log: https://libera.irclog.whitequark.org/picolisp | Check www.picolisp.com for more information
seninha has quit [Quit: Leaving]
rob_w has joined #picolisp
abu[7] has quit [Ping timeout: 248 seconds]
abu[7] has joined #picolisp
beneroth has quit [Quit: Leaving]
seninha has joined #picolisp
seninha has quit [Remote host closed the connection]
seninha has joined #picolisp
seninha has quit [Ping timeout: 256 seconds]
msavoritias has joined #picolisp
seninha has joined #picolisp
Regenaxer has joined #picolisp
Regenaxer has left #picolisp [#picolisp]
abu[7] has left #picolisp [#picolisp]
abu[7] has joined #picolisp
beneroth has joined #picolisp
z4k4ri4 has quit [Ping timeout: 256 seconds]
z4k4ri4 has joined #picolisp
<tankf33der> Tests passed.
<abu[7]> Cool, thanks!!
rob_w has quit [Quit: Leaving]
<abu[7]> I think Pil now has a much more robust behavior in stack overflows
<abu[7]> (which happen easily for such small stack segment sizes)
<beneroth> you mean regarding coroutines or in general?
<abu[7]> yes
<abu[7]> It is a dilemma. A big stack size is a waste, and a small one may easily overflow
<beneroth> aye
<beneroth> so you changed how the stack size gets increased? or what did you change?
<abu[7]> No, the stack size is simply user-defined. What I did is decrease the safety space, and added a better sanity check to detect overflow
<abu[7]> Another problem was error handling
<abu[7]> It crashed sometimes after a stack overflow.
<abu[7]> Now it handles the error (error break REPL), but then exits the interpreter because it is simply not possible to make any assumptions about the state of the stack
<abu[7]> Another feature (which however was there all the time) is that (stack) display the free stack sizes of each coroutine
<abu[7]> So it is east to keep track during development, getting a feeling of the stack usage
<abu[7]> s/east/easy
<abu[7]> Before, the stack safety space was 4 KiB, so with a stack size of, say 5, you had only 1 KiB of usable stack space
<abu[7]> Now the safety margin is 1 KiB
<abu[7]> so a 5 K segment can use 4 K
<abu[7]> The interpreter does stack checks in more situations now, and checks the bottom of each stack when a coroutine yields or terminates, so it is sure it detects a possible overwrite, and gives an error.
<abu[7]> As a result, it is possible to have (stack 2) giving 1 K usable stack, which is sufficient for very simple coroutines doing no more than 1 or 2 levels of function calls
<abu[7]> Like the use case we had yesterday
seninha has quit [Remote host closed the connection]
seninha has joined #picolisp
msavoritias has quit [Remote host closed the connection]
<beneroth> thanks for the explanation :)
<abu[7]> :)
z4k4ri4 has quit [Ping timeout: 264 seconds]
z4k4ri4 has joined #picolisp
f8l has quit [*.net *.split]
f8l has joined #picolisp
seninha has quit [Remote host closed the connection]
seninha has joined #picolisp