issue-#156 adding Coroutines to BlackBox
Posted: Tue Mar 21, 2017 2:53 pm
I would like to propose "adding Coroutines to BlackBox.
Coroutines are not as powerful as threads but they are much simpler
and somewhere in between classical BlackBox and a multi-threaded system.
For the issue see https://redmine.blackboxframework.org/issues/156.
For the proposed solution see https://redmine.blackboxframework.org/p ... 97faa7e691.
The solution is based on Windows fibers (inspired by the CPC package Co_). Fibers are just another name for coroutines.
The main work is in the integration into Kernel services such as garbage collection, trap handling and trap cleaners.
Fortunately, most things worked almost unchanged.
The proposed solution does not make any modifications to Kernel unless Coroutines are really used.
This should help in avoiding any instabilities. The Kernel modifications are encapsulated in a set of auxiliary procedures,
which avoids exporting low-level Kernel data structures. One WinApi function was missing and has been added.
A test version is here: http://blackboxframework.org/unstable/i ... a1.816.zip.
A test program can be found below.
- Josef
StdCoder.Decode ..,, ..2a....3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLLCJuyKtYcZRiX
7.2.s,M0H.0k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7O
NbXmb.2.we6k20.T802U.U08J99SdfJHPNjvQCJuGKfaqmY6MwdONl1QCh0708T,U..w.Az5U.
2U18J99SqorGqmQCbWBxhYFWUl1UnNHEWUmr.6.QU4k5kxL.0E.Ed4.86.QC18RdfQHfMf9R9v
Q7ONb17.,.D,,6.I16.M.6.JFyuv.U.2m,.3R.AU0KyB.,U0,,UO.,.1.e0E.2UwK.616.7T.A
UG.J20.Cp69UPoZ0cUXDF9fR5uPPPP1fP7PNZvQRtIdHf.2UlbcZpC.c9h0E.8z,U.EEE.E1U.
M3656.kd.cwR.0.,,,.B.0UJUX.,.b0.U...B.0UJUjUzjdDZcJZd33YIhgnZi1xhmxhpZidph
ZRivgVBAdB3eDJeI3Y1xhm,69,7HTvNrN1P6Jn8I9O1HMGdPNZPMdvPZ96v76VuHHeHdOFZ86d
uH,dI9uETeI786FtETfQ.umVyKty4M8PM0H6Sp76HeHdOFDOFZO1HMFR8FrN1HM1HcE1vMLvNZ
vPffP79J1vQL96v76V0I8..Eukt.Ud2Y3pd2R5P6IZuH5OF7OJZOF,78d9OHvQp76H8R9fQkI0
GdKLrin4aEf4Id0moeHEaIbsFQbBIc3xc7pdBAVAxhbpZHZimBhixgcIY0hc5B7,NGd1c6HtC,
7HTvNR7HRvCPM0BuHZ86H96pND,7A,7JT86n767uHPM0H6RFPObf9l96pND,NOrN1HM05uPZvP
Un7JZPMRvQBPNZ98d9OHXaJijhhdgV7gcCV7Ydjld.gcCZcUAdohA..N09eH786ZORRXB28.0G
eK4H8R91IZvgV7o86Rp76H8R.rN1UBcH9uJFNOdP8rN1Cor.kYuqoGLIaKua0..d0UdZidUL3d
7Zd33YdZiiQioBgohgUgbUQcjJC.CruCLsKKrGqmGKEGobq.NuPQ8.l96vd6HtC,,aIrGLIaKu
uGwamR0GaEak2akV.UI,.kWuYBgcCZcUYeZ7R.k4.Uc.pFV4qli4oBd0H76ZORM0h0e1.I6UAV
H,cE90,dE11.c6HtC,,m2o6.01.6HsI.W5.A7M8r76N0N0akVsPG56I1PRKKI4HM0HMam4akWs
C.b0kWu23OM51oB..N09WUI8M1.66d03OM51.IZvgV7o8IgoJbUIcV,.QbBIc3VBcHcMdP8rN1
C2YCkYAB8Kua0..d0UWZidkWu2d0.oB.PMFR8FU1,d1gVBIUIhgnZC.EeKqtA7.Pc.dONQ6..8
2Ui,qk48EWKKvGom8quSKLKJrmqr4KmGJoaqt0GeKqtQ66REECor85.PcUXDJ99SCoruKu8rrm
KqKKtCLLCZYRcoJigZcZRiX3Ulb8..umVyKrG5EWKqtCK.Q6AA.cQ...sQR,.G20EtH.0.G,0.
aU.6.,..1cUXDJcIf9P9fQbf9bWGhigFWE.4Te.sQRdIf9P9HWE.8z,E.0.L3D.53,6.C6.Qii
Q8CJuaLqKKWKqtCK.4D.o3aLq.,cwD.0.E2EhU.E,,.RNEd1U2ll0U2U...G00k.0U.6.665hK
E.mLT5UTyB4.4.0E.cUZT1E..UO.,.1.e06.2UEC.6..mEw71suHz9KNPvZ0CSTXhhAsET1.UG
6.2..606.k22.0sfCbgAYX8Utj00MyfU.Qfc7f77a.br,...
--- end of encoding ---
moderated 29.03.2017 (fix encoded example)
Coroutines are not as powerful as threads but they are much simpler
and somewhere in between classical BlackBox and a multi-threaded system.
For the issue see https://redmine.blackboxframework.org/issues/156.
For the proposed solution see https://redmine.blackboxframework.org/p ... 97faa7e691.
The solution is based on Windows fibers (inspired by the CPC package Co_). Fibers are just another name for coroutines.
The main work is in the integration into Kernel services such as garbage collection, trap handling and trap cleaners.
Fortunately, most things worked almost unchanged.
The proposed solution does not make any modifications to Kernel unless Coroutines are really used.
This should help in avoiding any instabilities. The Kernel modifications are encapsulated in a set of auxiliary procedures,
which avoids exporting low-level Kernel data structures. One WinApi function was missing and has been added.
A test version is here: http://blackboxframework.org/unstable/i ... a1.816.zip.
A test program can be found below.
- Josef
StdCoder.Decode ..,, ..2a....3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLLCJuyKtYcZRiX
7.2.s,M0H.0k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7O
NbXmb.2.we6k20.T802U.U08J99SdfJHPNjvQCJuGKfaqmY6MwdONl1QCh0708T,U..w.Az5U.
2U18J99SqorGqmQCbWBxhYFWUl1UnNHEWUmr.6.QU4k5kxL.0E.Ed4.86.QC18RdfQHfMf9R9v
Q7ONb17.,.D,,6.I16.M.6.JFyuv.U.2m,.3R.AU0KyB.,U0,,UO.,.1.e0E.2UwK.616.7T.A
UG.J20.Cp69UPoZ0cUXDF9fR5uPPPP1fP7PNZvQRtIdHf.2UlbcZpC.c9h0E.8z,U.EEE.E1U.
M3656.kd.cwR.0.,,,.B.0UJUX.,.b0.U...B.0UJUjUzjdDZcJZd33YIhgnZi1xhmxhpZidph
ZRivgVBAdB3eDJeI3Y1xhm,69,7HTvNrN1P6Jn8I9O1HMGdPNZPMdvPZ96v76VuHHeHdOFZ86d
uH,dI9uETeI786FtETfQ.umVyKty4M8PM0H6Sp76HeHdOFDOFZO1HMFR8FrN1HM1HcE1vMLvNZ
vPffP79J1vQL96v76V0I8..Eukt.Ud2Y3pd2R5P6IZuH5OF7OJZOF,78d9OHvQp76H8R9fQkI0
GdKLrin4aEf4Id0moeHEaIbsFQbBIc3xc7pdBAVAxhbpZHZimBhixgcIY0hc5B7,NGd1c6HtC,
7HTvNR7HRvCPM0BuHZ86H96pND,7A,7JT86n767uHPM0H6RFPObf9l96pND,NOrN1HM05uPZvP
Un7JZPMRvQBPNZ98d9OHXaJijhhdgV7gcCV7Ydjld.gcCZcUAdohA..N09eH786ZORRXB28.0G
eK4H8R91IZvgV7o86Rp76H8R.rN1UBcH9uJFNOdP8rN1Cor.kYuqoGLIaKua0..d0UdZidUL3d
7Zd33YdZiiQioBgohgUgbUQcjJC.CruCLsKKrGqmGKEGobq.NuPQ8.l96vd6HtC,,aIrGLIaKu
uGwamR0GaEak2akV.UI,.kWuYBgcCZcUYeZ7R.k4.Uc.pFV4qli4oBd0H76ZORM0h0e1.I6UAV
H,cE90,dE11.c6HtC,,m2o6.01.6HsI.W5.A7M8r76N0N0akVsPG56I1PRKKI4HM0HMam4akWs
C.b0kWu23OM51oB..N09WUI8M1.66d03OM51.IZvgV7o8IgoJbUIcV,.QbBIc3VBcHcMdP8rN1
C2YCkYAB8Kua0..d0UWZidkWu2d0.oB.PMFR8FU1,d1gVBIUIhgnZC.EeKqtA7.Pc.dONQ6..8
2Ui,qk48EWKKvGom8quSKLKJrmqr4KmGJoaqt0GeKqtQ66REECor85.PcUXDJ99SCoruKu8rrm
KqKKtCLLCZYRcoJigZcZRiX3Ulb8..umVyKrG5EWKqtCK.Q6AA.cQ...sQR,.G20EtH.0.G,0.
aU.6.,..1cUXDJcIf9P9fQbf9bWGhigFWE.4Te.sQRdIf9P9HWE.8z,E.0.L3D.53,6.C6.Qii
Q8CJuaLqKKWKqtCK.4D.o3aLq.,cwD.0.E2EhU.E,,.RNEd1U2ll0U2U...G00k.0U.6.665hK
E.mLT5UTyB4.4.0E.cUZT1E..UO.,.1.e06.2UEC.6..mEw71suHz9KNPvZ0CSTXhhAsET1.UG
6.2..606.k22.0sfCbgAYX8Utj00MyfU.Qfc7f77a.br,...
--- end of encoding ---
moderated 29.03.2017 (fix encoded example)