orivej has quit [Ping timeout: 272 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 272 seconds]
<
tankf33der>
co.l passed gc+.
_whitelogger has joined #picolisp
<
Regenaxer>
Hi tankf33der
<
Regenaxer>
Coroutine performance itself is not so very slow in pil21
<
Regenaxer>
(bench (do 999999 (co 'a (loop (yield)))))
<
Regenaxer>
gives nearly the same timings on both
<
Regenaxer>
I missed by an order of magnitude
<
Regenaxer>
pil21 is indeed a lot slower
<
Regenaxer>
'yield' takes so long, cause llvm does not allow the same low-level access to the stack pointer as assembly does
<
Regenaxer>
Can't be improved I'm afraid
<
Regenaxer>
powers can be reduced to:
<
Regenaxer>
(de powers ()
<
Regenaxer>
(co 'powers (yield)) )
<
Regenaxer>
(co 'filtered
<
Regenaxer>
(powers)
<
Regenaxer>
(yield) )
<
Regenaxer>
Different invocation environments
<
Regenaxer>
was the problem all the time
<
Regenaxer>
Will debug later
<
Regenaxer>
On Arm64 yield is about 6 times slower. On x86-64 it is 23 times!!!
<
Regenaxer>
Can't believe
<
tankf33der>
maybe something is wrong in implementation
<
Regenaxer>
I don't think so
<
Regenaxer>
setjmp/longjmp is expensive, I know
<
Regenaxer>
Saves the whole environment
<
beneroth>
Good morning Regenaxer, tankf33der
<
beneroth>
23 times? sounds like emu-land
<
Regenaxer>
Hi beneroth
<
Regenaxer>
indeed!
rob_w has joined #picolisp
mtsd has joined #picolisp
<
tankf33der>
pil21 hangs on musl alpine linux. debugging
<
tankf33der>
ha, calling regcomp and regexec from musl. not related to pil. ignore.
<
tankf33der>
i will post announce on reddit for pilcon
<
mtsd>
Hello everyone
<
tankf33der>
posted:
<
Regenaxer>
Cool! Thanks!
<
Regenaxer>
Hi mtsd!
<
mtsd>
Hi Regenaxer!
<
mtsd>
I will no be able to attend the meeting today, I'm afraid. Going away this afternoon, over the weekend
<
Regenaxer>
Oh, a pity!
<
Regenaxer>
No worries
<
mtsd>
Sorry about that, I hope to attend both sessions in september
<
mtsd>
The last one was good, I think
<
mtsd>
Always nice to see everyone
alexshendi has joined #picolisp
<
alexshendi>
Good morning, picolispers!
root____ has quit [*.net *.split]
<
Regenaxer>
Hi alexshendi!
root____ has joined #picolisp
alexshendi has quit [Ping timeout: 272 seconds]
orivej has joined #picolisp
<
Regenaxer>
Debugging 'powers' coroutines
<
tankf33der>
solaris got modern llvm will try bootstrap today. sparc platform.
<
Regenaxer>
OK, I know what the problem with co/powers is
<
Regenaxer>
No sure yet how to fix
orivej has quit [Ping timeout: 258 seconds]
rob_w has quit [Quit: Leaving]
<
Regenaxer>
Sigh, have to re-design some of the co structures again
aw- has joined #picolisp
<
tankf33der>
lets see.
<
tankf33der>
released ?
anddam has quit [Quit: WeeChat 2.9]
anddam has joined #picolisp
anddam has quit [Client Quit]
anddam has joined #picolisp
<
Regenaxer>
Not yet
<
Regenaxer>
Restructuring
<
Regenaxer>
But the algorithm works
<
Regenaxer>
It is a partial revert to 18aug20
mtsd has quit [Remote host closed the connection]
orivej has joined #picolisp
<
Regenaxer>
Finished I think. Looks good now. Data a little inflated, code got even simpler
<
Regenaxer>
A little more testing
<
Regenaxer>
Released
<
tankf33der>
running.
<
tankf33der>
all passed.
<
tankf33der>
good news for pilcon.
<
tankf33der>
now testing under llvm9.
<
tankf33der>
passed.
<
Regenaxer>
Let's disallow catch-, err- and ctl-frames in coroutines
<
Regenaxer>
'in' and 'out' will be ok
aw- has quit [Quit: Leaving.]
<
tankf33der>
dont forget mention this in doc/diff and documentation.
<
Regenaxer>
It does not work correctly in pil64 either
<
Regenaxer>
I just added runtime checks
<
Regenaxer>
Added coroutine stack management for 'in' and 'out'
<
tankf33der>
[co.l:98] !? (catch "err" (yield) (throw "err"))
<
tankf33der>
Not allowed in coroutines
<
tankf33der>
will modify test code :)
<
Regenaxer>
Oh, yes. You had such a case?
<
Regenaxer>
I really did not expect anybody does 'catch' in a coroutine :)
<
Regenaxer>
Do you think we should support it?
<
Regenaxer>
The more frame types we support though, the more need to be checked on every 'yield'
<
tankf33der>
i think this is a case for future releases, enought for current feature set.
<
Regenaxer>
It is trivial to implement
<
Regenaxer>
just like the link-, bind-, in- and out-frames
<
Regenaxer>
But needs runtime checks in 'yield'
<
Regenaxer>
one more check, I mean
<
Regenaxer>
Are there really use-cases?
<
Regenaxer>
hmm, well, yes
<
Regenaxer>
OK, let's add catch, but not 'ctl' and 'err'
<
Regenaxer>
Or, we allow them all, and it is the responsibility of the user not to yield inside such a call
<
Regenaxer>
yes, I like that more
<
Regenaxer>
Disallowing anything is not good
<
Regenaxer>
I'll remove the checks
<
Regenaxer>
yeah, 'yield' is slow anyway ;)
orivej has quit [Ping timeout: 265 seconds]
_whitelogger has quit [Ping timeout: 240 seconds]
_whitelogger_ has joined #picolisp
orivej has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #picolisp
peterhil has quit [Read error: Connection reset by peer]