Page 9 of 10

Re: Co_Routines Support for Oberon

Posted: Mon Apr 24, 2017 4:58 pm
by Josef Templ
Dmitry Dagaev wrote:There was no limitation of Transfer to main only. Nested coroutines allways were supported by Co_. Naturally, directed coroutine must return to the caller. The caller can be main or other coroutine. The same FILO discipline, as subroutine call and return.
Dmitry, you have modified my nested iterator example.
As far as I see, it is not possible to implement it with Co_.
I have tried it without success.
Please try it without cheating ;).

It was never the goal of the Coroutines module to compete with Co_, in particular
not with respect to its data flow programming support.
This is what I mean with special purpose versus general purpose.
There could also be a discrete event simulation framework somewhere
as CPC package but I would not include it in the standard distribution.
This does not mean that one is better than the other. It's just different.

- Josef

Re: Co_Routines Support for Oberon

Posted: Mon Apr 24, 2017 5:31 pm
by Dmitry Dagaev
Josef,

You are cheating, not I do. The latest build you mentioned is http://blackboxframework.org/unstable/i ... a1.849.zip. There are no nested coroutines example in ObxCoroutines there.

Re: Co_Routines Support for Oberon

Posted: Mon Apr 24, 2017 6:23 pm
by Ivan Denisov
Dmitry Dagaev wrote:There was no limitation of Transfer to main only. Nested coroutines allways were supported by Co_. Naturally, directed coroutine must return to the caller. The caller can be main or other coroutine. The same FILO discipline, as subroutine call and return.
I afraid that it was my wrong interpretation for Josef. However I am happy that this leads to dialog of you and Josef about this question. FILO is good, I believe.

Re: Co_Routines Support for Oberon

Posted: Mon Apr 24, 2017 6:52 pm
by Dmitry Dagaev
Ivan,

The dialog is much better in this case. Otherwise (for example) center's Coroutines Sleep(0) implementation can never exceed 6% CPU. You have mentioned the problem, I've provided time comparisons.

By the way, I have 2 latest builts: 849 mentioned above and 852 http://blackboxframework.org/unstable/i ... a1.852.zip yours. Are you planning to upgrade your version to Josef's last changes (Kernel.BeginCoroutines, Kernel.EndCoroutines)? Shall I implement new Co_ for your HostCoroutines also?

Re: Co_Routines Support for Oberon

Posted: Tue Apr 25, 2017 6:32 am
by Josef Templ
Dmitry Dagaev wrote:Josef,

You are cheating, not I do. The latest build you mentioned is http://blackboxframework.org/unstable/i ... a1.849.zip. There are no nested coroutines example in ObxCoroutines there.
The example I am referring to is the nested iterator example viewtopic.php?f=54&t=164&start=70#p1023. It has been posted a few messages earlier in this thread.
It is not in the ObxCoroutines module and I never claimed that.

There is currently a problem with the build engine (or Edis host) that Ivan is working on.
The latest build 856 for branch issue-#156 failed. Sorry for any inconveniences.
If you want to do any tests in the meantime you could download the source code
of Coroutines directly from https://github.com/BlackBoxCenter/black ... utines.odc.

- Josef

Re: Co_Routines Support for Oberon

Posted: Tue Apr 25, 2017 7:33 pm
by Dmitry Dagaev
Your example, please:
Main creates A
A creates B
A transfers to B
B yields to A
A transfers to B
B yields to A
A transfers to B
B yields to A
A transfers to B
B yields to A
A transfers to B
B yields to A
A transfers to B
B yields to A
A yields to Main

I just removed (*ASSERT(current = NIL, MUST_BE_PRIMARY);*) protection in Co_Routines. It is mandatory for BlackBox without Kernel Coroutines support for prohibition to allocate inside coroutine. It is not needed if Kernel's GC is available of coroutine's local stacks. I hope I can trust Center's new Kernel Coroutines support would be also included in further BlackBox releases.


StdCoder.Decode ..,1 ..i.....5uPzu9PuP7v9ZuPf9RHfP9vQRtP7vMCory3sH39SduRTfH
9vQdPN7f9T9N513.,...
1Ak...3i,...58FTuPE,5TWyqlKrqKKrGrtumdGLmGorCquU2hgnRAXDFTvMUn7FTvMf1G2sET
fPdPMHfP9fQbf9hOO9vR7ONbvMoedhgrRiioedFWUkTeoxhmhgnpZHZijJC7ONbvM0.,.S.8kB
E.0k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7ONbXmb.2.
2eOk2EYe,,E.cUGpmWLuOpoKqvCbHZiYpedhA704TeKKw.bHfEWUmL.6..D.ZT46.,sUGpmWbB
xhYhAbndMHT9NY6Mw.sQq2Y6cwB.0.tz3w,YyLE.0E.kZ8.86.QC18RdfQHfMf9R9vQ7ONb17.
,.D,0.p.,6.M.EJ2XkD.6.VQ.k8k.8Mtr.0E.s8E.c5E.k.0.4ItaqkmaM2y,M.6YE.K08E,9z
4E.0.h,0.p.0.4.I3.2G6.P.1M66.36.IU2U1Ikmj,6.Q56.I12U.U,2.I3.Yr0.VU.IUsU.2Z
,E,S0QU.E08Mtr.2..c4E.k.6.e06.2Uw0e.w1c1k04.7c0Es6.3s7klE0e.ot,E,82Q1s,6.N
,7c1EwF04E.kBE0O.2f,E0.XW.YU7U.YCY.ktF,y10EuE0KE.kuF,020EsE0U.Y,IUQU.Q9IUc
2.0E4E0O.Yt0E0K.oSYU7.1W.YU4U.QHs76.N.7.oRYU6U.Qn,kzrobGoemoW0mVyqj8prKLua
KrKqtin4qEIeGJ0m4aklyKrGLtaKlsPZvQHMD,d67OPH9RZPS,dJR7F1vN1PNh99,dGTvQ9fN,
7J9PPV9P3N1H6PHvM9fPbPN,ND,d6VOR39PHvM,7FTPP1PORf6Pc8JN8PM0PM0Fd8,dENPM5vO
3uPl96jOOR9NTvRb96Xd9jd9X76HOPV9P9PP9XVZidxhi3YrBho3hUQdZJiihgg3Y1xhmxhpZC
66bORV9QTfQd96JN8PM0HOHVuHZ8J,tEd96pND,tETHe4qtiqtmGECpgCJeKoamGEiomUvgVBA
V1xdCReI3YBAV7Qc6hc1RdTJe,pd5hcThcGJeDJee2Yx2Yp2av2YCBdAxfExd7pdIhcGJZUg54
nR0GbyIeypUOpUaIa4IVmoWeGEqHEIavgV7AVBheHZeTJc3xfEJe7hd,JeNJZUg5CnR0mV4IbG
pj8oW..Yav2Y7pdKBcABd2xf4BdCBdH3de2Yx22ftC,N1HM01uIbOFZ8JzOGRuLZuHf8JHeH9e
8,NDoav2Y7pdIh6ROENuL9eIZ0kPiHEqk2QcD7JZuHNuL7OFROG98FJ76vVsQbUIe3hcCZeGBc
CZeThcG,kQiHEqUBAVB6Jn8I9O1HM0Fd8qmKqmKq0665uPZ166,N9PN9q066JN8Pk2Cor8rr.J
762eDBdCFd0GeyIECor85EWK4rN1HM050.c8,ND,NE3uIdeI1uEd86ZOF5uHZ8F,7858RR7J1v
QL9F9vQam4ak2akmyKtqGR0GVyobmoW4Ibin4aU7QioBgXRhTRidJjZJZu2Y7pdItF9eIrN1HU
ZJimxhmJbUIcD,.7POb9Qp7658RR7FHvQVPMdvMFPNZvCP.BfQTPPp765uPZ1sCPM0HkoqKsmK
R0mZKKtELCor8rr.UnBhuhgg2YVZgYJig2YoBjkhgdZgu2Y7p7.gcCZcvgV7AVBBgdtETfQ.,N
D,7IUG,ZOF50sPZ1M8,NFR8Frl4AVHhghBgk3hjJiZJZUEdKoVk4ak2aEv4KqqGR0mYu2D0M0Z
vPf1eHEC2.r,90aUBAVKBcGhV7AVXhimJiZphoJbUQcj,.0Ltaqq4KtaLR0mV.UBA,F,M9UUQ6
.0GEUh.0GJEc8pbCoWGoe8pW0GdKLrCorwBUcYhk3eVJiVhhZZiZJig2YYhihhhtBag2YYhCIa
u2Y7,AZvgV7cJ1GECKR0mVy4UvM03OFDOGRO1HM00GRqHECpgC3uGf4IaWmVy4Ug2Yg3iE,kIi
n4AV9hgmpBQeZZi1xhm,IcVRiZ3ZXpZdhhkN8rN1HkluGW2ZdQbB.9fQZvP0GRqHEWml0mF0Gs
8roq4amRqk2A6EIurlumm85mGEaIbO3H0UdgV7gcC76ZORR1T1Q5qk203.Ooo8qm8rdGrk8Lu8
prKLuEE..eHE..HcJ22.UvEV.66sI.68.69..H,HsG.deQn98ZORR1T1..690HK0GMamRq..8p
mqqrOrmCor85EICKL.klumoq4,dCvFbaIain4a.f12Yug5.i2EeAgiRiahgmRcjJC.VfQH1umo
qKsAZBA,cFHfM..Q5PM1HM0.q06650UUAdiZiZJiaBgXhgUoYUAdhlm.UUgZhkK.,d8..WmleH
E.kIwdiReoxhkhZU2ZdYZUod3xeg22P8IdOKrN1PM0V0...sI99R7OOb9Q.P76F7Np7658RsQ.
a082.R7NHvQ0GRqXYhV7gcCldKKuUV,iXBA,.MGRPOd9IZPOP1rN1HM0hWUghu2YBBgdpBwBkR
AV0,cH9uJFNPHtC,dH9uJFFLaqqM8rV7Q7U0hgbBhiRcj,sQFNPR,U7A6UhpZdVUQYUod779,N
GR8J8Jb42UdQ52CUUIbx2YhRbBAV3p7aIra4.rl4..F,.M8YiVJCJ76FN8N,in4aUKFEGqruqm
eHE82.82U7pcU2imBB66v76ROG0GeWoWuo4aU7Qgp,UClRk2aIraKu.Q5HM09WvUcMEbuI905P
RZfQkS0Gb69qoeCJe.a2AZvIZdgV7AV,,c9b9R1vM.,dDv76V79,tEFOF50..MGBmlumoq4.,,
U9,I8..Wml.HN1akW.u2CKLa4Q5QgiggjJiUI5OoUmodKoRqk2Q7U,ZgYRcjJC..N76BOOEuEd
.mWHB9.AdCZ8DWg2YXBZg2YkY3V79GqruadQbBkU.Gqru4PM09WUQ88bvgVB....A3BOGROENO
GpOFPtCPM0300m4ak2a2.,,...ZWj,.W0kIq.M1H.,dFHeHUvgV7g,V0...aWIJiVpBc8,78H7
6NdH9uJcEk4ME.x1THK0GbyIeA6.amRM0.CaWBgnhgUg569CobuIe.u2amRq..cNZvPP96v76U
Ghc3,..CaaJCIbxsMffQkRqk2A6.a400UCBdAx9UGBZvUXhCEEe1in4ak2i2Ee.Q6y468.HtC6
80GF4otCrm8LuaqruadphUQcj,69CrmKKEGLoKKECrmCqruKm0Gu8rk0LEOqr8LEGqmGrkaKqC
LF0GJam4ME.x1Z1AcHRe3lj.f0amRq.HeFMNTHEGJYK2AVXpZDphHVBA,9WB.,7J44sCP....k
IQ899QJ76F7Np,G2EoM8cE.42685PR.v,mWB,30.g,HME.x1THKo7...UcYgUQYUUd2Ya2YcYg
UgbUQgiYgdRCH79,tET0UCNF..CKLUU.mWClj.83sMf1cC.i2.u4Q6.W0kIUc.gA..Ug..UUUk
,...EzEt.10w9..A7.,,k2o3.UB.,tIKavgVB....A3whkJZU2ZdQbBcE.W0fvQ9965uPRtIdX
UAhiRiohgVZgUIZd.UcQgUgbUo7m0TW,,.g6krQbBg,..gdV,.6FT96FN8NlWqYI,H68g3g3EE
0JtyqlKKmKLtKqt0GEqmKM9UUI328.AfdhggZge2Yc.O3,tMN7659RTfC,tE.QbUogmxhhJ5LO
NU1lr.Yiu2Y1FesOr767fC,,701XclRA,.42Up,QYU.CoUu230.UX32MRUv2YXZij3Yug5RWvU
7FICKLO40mSUd.5HlUX2YC,d8G90aUiIgVFLuomWLuaIrCplWqmGKIGLK0GmamRq.HMG6R,t6,
,o2Gb7ReUQcj,M8GJY.aklGrr00GLICor.sCk242EIs6.6Nq1dHLGqoM8NlV.Ebg6.9WBM0sCM
GQgoxhUQYUQgUYe6h6kYELO4QYUUU.k2Cqu.,dCQgioAQbBA,HM0B1,dC.oZdhBiHECKLO400u
2r,akZ.G3R1.EIOKtyadgV7AV7gcARe7pcUQgo,RWU.k2C4.QgotCPM0AVaVU.oZdhBgV7k2i2
....A3MFgcBAV7M051.u2r,akZ....05ELUdg,gcCN1.K2,NKHPNQbBg,.kdG5J76.hWUQiopc
dphdRichgYJbUUHZiVZiZRbBcE.42kl.Q269...AVnZi4BBUiQio3YukVGLLYeTpc7,98Fr,H0
ffQELGqoCbUQYUUU.M051.oZHhAb8R19RWmtGLX.AZvg,K2rl2QA.9vPZHR6JZOJ9uC,N1akga
qmmaBA,2YHVv..sEffQZ1J76IbUQ6.in4I6.ZOFdOJZeH,tMf1gV7g6QcpJCsCPM1.UHZhZhgk
JZUMOR9R9Hv4KqeHEmobuoXaIbGpIi1HcJsMplV..30kU..22EK...M0596sMf1Q5HUiQeX3BC
JqK4FNO.amRq.n0.CJqK4rN1AVc.g3EECpmqqk.,76kK.,d8..gAf8QJFIOpU8JECLR0mdKqq4
4M8,tCPM030kYuoVWmtuGv4Kq.HeFCLLO5,ND,7A,7JF0AV,,QiiIijhC66576UC,..a...oZY
Bhn76.A7z0gcG,QiiIij,.R7PTvMLPN796pNDO2Q5H..2Yug5RWvk2K2P.0WZhhJtC6I..7uPj
fPJ76FdJ.MM.rV0,6F9uEFtQR,H,HMG.00PNA,7JF0AV,,QAUU.mW1Fe..U7..ELG400UClj..
QC.UX,Q5..R,u0.Y8M1HUN,AV3l4g600G2in4qEE0GE0JdyoV.CIqyqtKqRqEE0GE8oWSoY66,
76,76aIX0Gs.0mF00006666Es8roUi.,dCo7iXU2200QdZ,KIrGqVy4Unh,,VUMFR8FP66,769
WUQcgxBM158HTuI9O1HsENvPbn4KIbG2TvLZuP.RN13QwdONQcjphotPN9P9fQbf9bGmCIu8Lq
GomCrl0ks7S..RtETfPd16F9vQ59.CorMMcQb1IC...Qii..70,cwE.E8E.k22.,6..M.3Qwd0
ZORNPNZvQRtIIepZBG20ksH3.bf9ZORNPNG20EtDE.6.,UfW5UXW.2.5Ie.sQRtIQeoBjghg2h
gn7.X5.u0n9PU.Iy56.,E..W.e3,6.,U00.umUG5kmY62.7.,..Y22U,2.2.2YXK96.Xxs1kDz
41.1.,6.Ikmj,6..EBU.U,.J,1.0E65.2..N6y0E4EKithQVs9E3Qw70K4bnVy4..V6.2..E2E
.U76.YiRRC,t75J.nT32kwL,dDMFHEfGA3.12....
1Ak...tV....58FTuPE,5TWyqlKrqKKrGrtumdGLmGorCquU2hgnRAXDFTvMUn7FTvMf1G2sET
fPdPMHfP9fQbf9hOO9vR7ONbvMoedhgrRiioedFWUkTeoxhmhgnpZHZijJC7ONbvM0.,.S.Oz1
E.0k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7ONbXmb.2.
Yc5k2ESS.,E.cUGpmWLuOpoKqvCbHZiYpedhA704TeKKw.bHfEWUmL.6..D.Bj,E.CcIhgsNHT
9N9ntQ8qorG4704D.CbB,708T1U.EsH.TE.2x2E.0.oi,U00.bnUGLu8ro8quGrmCLWKqtE0E.
kHE.0.p.0.4.0EJ2XkD.6.VQ.kAk.8Mtr.0E.6A6.c5E.k.0.4ItaqkmaM2y,M.6YE.O2I.IU0
KyB.,Uf.,USU.2.A.ME.6.2UE0GJ,s.3gwP.0.B00.x.0.4.A6.U.Yr0E.Y.IU34.Q0IU1.,.F
gh3EcCJ,IklbcZpi1xhhhhVphYhgmRiiQeodJ.0ksHomO5.oZK,6.Zz.6.,..O.2.f.T.36,sz
PuH7OJNOF,tETvLTeMl9JjvPRONb9R99NrN1P68Jd8,N1HsMTfPdfQHfMwhmRi7gbUIY2hhdZi
mBjUoeiYcVxgVhgqJYBAVgBhXhgiRiZ3Yx2YW2epJggBhX3Y2xhhBgdphWgVeIZdgV7gV7AdB3
eDJeI3Y1xhUIbx2Y1xBZuPf9RHfP9vQN76NuPDvCPM0PM0dOKVOFPM0HcEH9R,ND,7ITOGR8J9
eI,7JT863OOd9F9vQ5vCPM0HcEY62Yx2YGhc1xdGZcU2Z1xhiQcjJijhioV2hAam4ak2KIbGoR
qk2ak4aU,Bho3Yx..AcdZi2hAi14270,,...UdU7Igu2Y0BhoRbBA,90M1PM0VeITuE98FfeI9
86FdMp763Wd2Y2xhvgV7Ic3xc7pdBAV7YdDxdEhV7AV7YdjxgiQeoJidphb3ZWIcUAjdhggZgn
3YoxhUAcWAZv2YAxhbpZAphvgV7AV7QcjpZNBhZlRq.90sEQeoxhkRbBAV3p7,7FTvCg,V0.4K
R0mUaKuaGE.HcJ1eI,dOp76HeHdOFDOFZuCPM030EbKofWmkuGlamR0mkuGlumdGrk8Luin4ak
2m2CZm,4IECKtKqkGrmCLE8IFa0N0N0aEXyId0Gp0GRqHE0HEGpb0mO0GWyo4ak2aEakd.Eu8r
kuqtOqm8rt0Guya0J2.N0MMRdMR7JZPMUvgV7MFQ5Y7Q8.AjdhAC5gdVBhiN8r,Y7kVUj,9WU.
q..cIffPJtCPM0O34KR00in4I6.UdQbUAAb8R11AVAVHdQUBBgdphUQgmhAkU80UA,SJYaIaKI
EurkummyKt0GWyo4M0YemBA.g6qk2KIb2YGhiiRbBAVBgcCZ65uPzuH.YCum4qE,Corypb..8p
uuK,5TeK45uPR9RyKqmqm8rtumdYg1ZimZh2hgnRg.AyI,.ELCoruKu.GomCrl0U1VV,u0IC..
.Qii..70,cw7.,.d.,.HE.2U..U,IklbeZFdKLqKKtCLLC3ZORNX2V.AyI,ktuGdKLqKa2V.Iy
1U.2.i8S.C80E.QE.sQRtIQeoBjghg2hgn7.X5.u0n9PU.Iy56.2.U6UO,,U00.umUG5kmY62.
7.,..Y22U,2.2.2YXK96.Xxs1kDz41.1.,6.Ikmj,6..EBU.U,.J,U.2m,.,.E4WDN.Ntarm3W
j.JklbcjlqK4Qcj,.E72.0..2,2.M00.dPLbHESmF3kwL,,AzJEu1Ko2oe2H.f40...
--- end of encoding ---

Re: Co_Routines Support for Oberon

Posted: Wed Apr 26, 2017 4:43 am
by Ivan Denisov
Dmitry Dagaev wrote:By the way, I have 2 latest builts: 849 mentioned above and 852 http://blackboxframework.org/unstable/i ... a1.852.zip yours. Are you planning to upgrade your version to Josef's last changes (Kernel.BeginCoroutines, Kernel.EndCoroutines)? Shall I implement new Co_ for your HostCoroutines also?
IMHO, extra work is not required for now. Let's wait a bit. If Center will force to use Josef's Kernel embedded implementation ignoring all my claims for the preliminary voting I have to start parallel project with the focus to cross-platform solutions. Josef said earlier that he does not see the reasons for cross-platform capabilities for BlackBox and this leaves an imprint for all solutions he is developing. Because his professionalism is valuable and is not compensating by the discussion and voting process that shifts the focus of Center activity to Windows. So the goals of the Center for multiple platforms can not be reached with such team. I do not see perspectives.

Re: Co_Routines Support for Oberon

Posted: Fri Apr 28, 2017 4:08 pm
by Dmitry Dagaev
luowy wrote:if we can implement the coroutine use stackless tech, maybe we can make
Josef Templ wrote:an optimization for special cases offered by some languages but it needs a language change and heavy optimizations in the compiler
I've written before viewtopic.php?f=54&t=164&start=40#p992 that Kernel support for stacks&traps must be separated from Coroutines implementation. HostCoroutines subsystem gives anybody an opportunity to reimplement coroutines in custom way.

By the way the 2-nd BlackBox coroutines implementation by Ilya Ermakov (not published) uses transfer implementation by register switching:

Code: Select all

		S.GETREG(4, current.esp);
		S.GETREG(5, current.ebp);
                ...
		S.PUTREG(4, mainEsp);
		S.PUTREG(5, mainEbp)
I think anybody can easily implement HostCoroutines.Transfer in such a way or with ASSEMBLY

Code: Select all

 with better performance.

Re: Co_Routines Support for Oberon

Posted: Fri Apr 28, 2017 4:15 pm
by Dmitry Dagaev
luowy wrote:our framework can provide two std scheduler
Co_SchedTasks can be reimplemented in standart BlackBox way for your own needs.
Co.scheduler and Co.stdScheduler are factories like Files.dir, Files.stdDir.

Re: Co_Routines Support for Oberon

Posted: Fri Apr 28, 2017 5:08 pm
by Dmitry Dagaev
luowy wrote:certainly,coroutine must has "state" field;
then user's can use "resume","yeild","sleep"
Co_ is based on Carrier-Link-Rider model: Scheduler-Dispatcher-Coroutine. Scheduler holds state, the basic states are:
ST_READY* = 1; ST_LOCKED* = 2; ST_FINISHED* = 3; ST_SUSPENDED* = 4;
ST_NEXTREADY* = 5; ST_SLEEP* = 6;
Dispatcher with states can be reimplemented for Custom needs like Scheduler.

Co_ObxShakesPeare demonstrates Finite State Machine example:

Code: Select all

	PROCEDURE Next (r, rnext: Player);
	BEGIN
		r.Suspend;
		rnext.Resume;
		rnext.SchedSleep(1000);
	END Next;

	PROCEDURE (r: Desdemona) Do ;
	BEGIN
		Say(r, "Your honour is most welcome.");
		Next(r, othello); Co.Yield;
		Say(r, "My lord?"); 
		Next(r, othello); Co.Yield; 
		Say(r, "I will, my lord");
		Co.Stop
	END Do;
Next suspends and resumes execution state and schedulers Co_Routine to wakeup after 1000 ms.