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
<tankf33der> morning
<tankf33der> i want this on co, thinking
<abu[7]> Good morning tankf33der
<abu[7]> Mia did this with the dining philosophers
<abu[7]> The DES functions
<tankf33der> is it Mia's code ?
<abu[7]> I wrote it originally
<tankf33der> i need "fast" finish variation for test suite
<abu[7]> Good idea
<abu[7]> So the rosetta task is better
<abu[7]> Using DES is easier perhaps
<abu[7]> Call (des) three times or so
<tankf33der> des are hairy
<abu[7]> I think simpler than plain co's
<tankf33der> i believe you
<tankf33der> i want something new to fast test co
<abu[7]> ok
<tankf33der> now i play with bahn
<abu[7]> That's a bit more complicated
<tankf33der> do you have a bigger-other map ?
<abu[7]> yes
<tankf33der> insane cool
<abu[7]> Small test layout: http://pb1n.de/?7483d2
<tankf33der> anyway co is working
<abu[7]> Yay
<tankf33der> i finished co testing since i am moving in cycle without new ideas
<tankf33der> i hate this cycle feelings
<abu[7]> Enough tested then :)
<tankf33der> abu[7]: final report
<tankf33der> I do not fully understand this logical error.
<abu[7]> "Coroutine not found" is correct. 'c' wants to return to 'b' but that is gone
<tankf33der> ok then
<abu[7]> This used to crash before
<abu[7]> The error message should mention 'b' perhaps
<abu[7]> I try to find the right tag
<abu[7]> OK, I show the tag of the terminated originator coroutine in the error message as "b -- Coroutine not found"
<abu[7]> I hope I got it right for all possible yield situations
<abu[7]> It is a hairy logic
<abu[7]> When you have time, please run all your tests and tortures once more
<tankf33der> Did you release?
<abu[7]> Hai
<tankf33der> playing
<abu[7]> 👍
<tankf33der> failed
<tankf33der> pasting
<abu[7]> oh
<tankf33der> old fancy code, must pass
<tankf33der> crash for prev. first link
<abu[7]> Checking
<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
<abu[7]> beneroth: It is CH : DE !
<abu[7]> afs