<abu[7]>
Hmm, first 'a' has T as originator, so (yield A) returns to T. (yield (co 'a T)) continues it with 'b' as originator. Looks correct
<abu[7]>
Did this work before today's change?
<abu[7]>
If so, I made the check too strict
<tankf33der>
it worked for years
<tankf33der>
first tests in co.l
<abu[7]>
Yes, but there was no check
<tankf33der>
it worked before today's change
<abu[7]>
Did it work before today's change?
<abu[7]>
ok
<tankf33der>
yeap
<tankf33der>
ok
<abu[7]>
good
<abu[7]>
I see, the check is indeed too strict
<abu[7]>
The problem is that without that assumption I may print the wrong tag in the error message
<abu[7]>
I released again
<abu[7]>
I think it is ok. *When* the error occurs, it should be the right tag
<abu[7]>
Hmm, wait
<abu[7]>
Let me rethink something
<abu[7]>
Perhaps we need to change the concept of originator a little
<abu[7]>
We must discuss this
<tankf33der>
lets try
<abu[7]>
I investigate
<abu[7]>
No, the concept *is* already the way I thought.
<tankf33der>
пщщв
<tankf33der>
good
<abu[7]>
So I wonder why the check fails
<tankf33der>
let me comment these lines
<abu[7]>
The "originator" is the current coroutine when (co 'a ..) starts or resumes
<abu[7]>
It is the one where (yield) *returns* to
<abu[7]>
So it is critical
<abu[7]>
Your example changes it in (co 'b .. (co 'a
<abu[7]>
Which is ok
<tankf33der>
all suite passed
<abu[7]>
I want to change to the strict check
<abu[7]>
it is more right
<tankf33der>
so, summary
<tankf33der>
linux - fails
<tankf33der>
freebsd - ok
<tankf33der>
===
<abu[7]>
The check?
<tankf33der>
yea
<abu[7]>
It should be independent of OS
<tankf33der>
sure
<abu[7]>
(yield A) b -- Coroutine not found
<abu[7]>
What is the originator?
<abu[7]>
(yield (co 'a T)) is called in (co 'b ..
<abu[7]>
So 'b' should be the onig
<abu[7]>
In dbg I see it is T though
<abu[7]>
confused ...
<abu[7]>
I think I use the wrong orig field in the check
<abu[7]>
Trying ...
<abu[7]>
No
<abu[7]>
I want to print the correct tag which is not found, but the problem is that I don't know it (because in the other cases the coalready terminated)
<tankf33der>
i thought mission is impossible
<abu[7]>
In some cases it works, but that is suboptimal ;)
<abu[7]>
Printing the wrong one is worse than printing nothing
<tankf33der>
but works on freebsd
<abu[7]>
works == no crash ?
<tankf33der>
works == no error
<abu[7]>
This can't be
<tankf33der>
doing again
<abu[7]>
Really the same version?
<tankf33der>
i belive so
<tankf33der>
24 6 23
<abu[7]>
I released several times today :)
<abu[7]>
Let's postpone this error message issue until tomorrow
<tankf33der>
sure
<abu[7]>
Must meditate on it
<abu[7]>
☺
<tankf33der>
afk
<abu[7]>
Thanks!! ☺
pablo_escoberg has joined #picolisp
<abu[7]>
Hm, wait!
<abu[7]>
Perhaps I found the right way
<abu[7]>
tankf33der, suddenly I had an idea of what has been wrong
<abu[7]>
I just made another release :)
<tankf33der>
testing
<abu[7]>
Now your last test passes, and I get the correct error message in the previous case
<tankf33der>
linuxes - ok
<tankf33der>
freebsd - ok
<abu[7]>
😎
<abu[7]>
Big step forward :)
pablo_escoberg has quit [Quit: Client closed]
<abu[7]>
So if it is correct now, it means that 'yield' was not correct all the time regarding cases where the originator was changed in between!
<abu[7]>
I did noi have such a case
<abu[7]>
Originator was always T and not changed thereafter
<tankf33der>
all good now
<abu[7]>
I'm very happy!
<abu[7]>
Thanks for all input and testing!
<abu[7]>
!!! Mia's Railroad Simulation article is on pos 5 on hacker news ☺
<tankf33der>
my work
<abu[7]>
Cool!
<abu[7]>
Installed on Debian with llvm16 - Crash on *any* co call - Makefile -O1 - All works!
<abu[7]>
I give up for today - watch football with family