Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago. Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull. It counts with a chapter in pharo enterprise book and some cool tests. We have moved the main distribution repo to CAR http://smalltalkhub.com/#!/~CAR/TaskIT/ The main easy things to do with this revision are: " closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync " rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand" " objects " val := 2 paralellize + 2. val == 4 "sync on demand" " staying in tune " val := [ "some task" ] shootIt asStickyReference. val := nil. " sticky means that if this future is taken by the GC, it will kill the process" " looping " val := server paralellize looping serveOnce: anyParameter asStickyReference. "this will execute in a new process, in a loop, server serveOnce: anyParameter." You can stop it by doing val:= nil. "or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported " For more advanced and cool usages, check the Doc. FAQ: 1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time. CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support. and from RMOD Esteban Lorenzano, also discussing and proposing. Thanks all :). OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes. I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed. Salut. Santiago. .
are those OS processes or Pharo processes ? On Mon, Jun 23, 2014 at 1:39 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
In general terms there are pharo processes. val := [2+2] shooitIt. val := [2+2] scheduleIt. val := [2+2] forkIt. All of this snippets will give you a future, all will be related with a pharo process, but each process has different meaning. the firstone is a common 2+2 block opened in a pharo process. the second one is a block assigned to one of the by-default two worker pharo processes from the thread pool. ( in this case the pharo processes do not run directly the task, but run a process that run tasks. Then, the first one is applied just there, the second one when is its turn. Finally the third one will use osprocess to open the same image (so, by now, this will work without anyproblem if you have saved the image just before, or if you didnt change any of the code to be executed) with the same vm and it will give the block to be executed. In our local image, there will be spawned a watch pharo process that will check if the third image has finished, and deploy the future for it. In the behind the scenes, each of this convenient methods is implemented with a different kind of runner and process reification. 2014-06-23 0:54 GMT+02:00 kilon alios <kilon.alios@gmail.com>:
are those OS processes or Pharo processes ?
On Mon, Jun 23, 2014 at 1:39 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Hi, This sounds very nice! I am trying to give it a shot, but I encounter a DNU for BlockClosure>>asTask. I have loaded the latest code from all packages, but this method is not defined. Cheers, Doru On Mon, Jun 23, 2014 at 7:32 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
In general terms there are pharo processes.
val := [2+2] shooitIt.
val := [2+2] scheduleIt.
val := [2+2] forkIt.
All of this snippets will give you a future, all will be related with a pharo process, but each process has different meaning. the firstone is a common 2+2 block opened in a pharo process. the second one is a block assigned to one of the by-default two worker pharo processes from the thread pool. ( in this case the pharo processes do not run directly the task, but run a process that run tasks. Then, the first one is applied just there, the second one when is its turn.
Finally the third one will use osprocess to open the same image (so, by now, this will work without anyproblem if you have saved the image just before, or if you didnt change any of the code to be executed) with the same vm and it will give the block to be executed. In our local image, there will be spawned a watch pharo process that will check if the third image has finished, and deploy the future for it.
In the behind the scenes, each of this convenient methods is implemented with a different kind of runner and process reification.
2014-06-23 0:54 GMT+02:00 kilon alios <kilon.alios@gmail.com>:
are those OS processes or Pharo processes ?
On Mon, Jun 23, 2014 at 1:39 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
-- www.tudorgirba.com "Every thing has its own flow"
Hi Doru! Download the stable version ConfigurationOfTaskIt stable. We are going through a refactor that adds new concepts, the last code is very unstable. We will try to make them transparent from the API point of view, but it will add new concepts in all the aspects. 2014-06-29 7:48 GMT+02:00 Tudor Girba <tudor@tudorgirba.com>:
Hi,
This sounds very nice!
I am trying to give it a shot, but I encounter a DNU for BlockClosure>>asTask. I have loaded the latest code from all packages, but this method is not defined.
Cheers, Doru
On Mon, Jun 23, 2014 at 7:32 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
In general terms there are pharo processes.
val := [2+2] shooitIt.
val := [2+2] scheduleIt.
val := [2+2] forkIt.
All of this snippets will give you a future, all will be related with a pharo process, but each process has different meaning. the firstone is a common 2+2 block opened in a pharo process. the second one is a block assigned to one of the by-default two worker pharo processes from the thread pool. ( in this case the pharo processes do not run directly the task, but run a process that run tasks. Then, the first one is applied just there, the second one when is its turn.
Finally the third one will use osprocess to open the same image (so, by now, this will work without anyproblem if you have saved the image just before, or if you didnt change any of the code to be executed) with the same vm and it will give the block to be executed. In our local image, there will be spawned a watch pharo process that will check if the third image has finished, and deploy the future for it.
In the behind the scenes, each of this convenient methods is implemented with a different kind of runner and process reification.
2014-06-23 0:54 GMT+02:00 kilon alios <kilon.alios@gmail.com>:
are those OS processes or Pharo processes ?
On Mon, Jun 23, 2014 at 1:39 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
-- www.tudorgirba.com
"Every thing has its own flow"
Thanks! This works. For reference, here is the loading script: Cheers, Doru On Sun, Jun 29, 2014 at 9:58 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi Doru!
Download the stable version ConfigurationOfTaskIt stable.
We are going through a refactor that adds new concepts, the last code is very unstable. We will try to make them transparent from the API point of view, but it will add new concepts in all the aspects.
2014-06-29 7:48 GMT+02:00 Tudor Girba <tudor@tudorgirba.com>:
Hi,
This sounds very nice!
I am trying to give it a shot, but I encounter a DNU for BlockClosure>>asTask. I have loaded the latest code from all packages, but this method is not defined.
Cheers, Doru
On Mon, Jun 23, 2014 at 7:32 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
In general terms there are pharo processes.
val := [2+2] shooitIt.
val := [2+2] scheduleIt.
val := [2+2] forkIt.
All of this snippets will give you a future, all will be related with a pharo process, but each process has different meaning. the firstone is a common 2+2 block opened in a pharo process. the second one is a block assigned to one of the by-default two worker pharo processes from the thread pool. ( in this case the pharo processes do not run directly the task, but run a process that run tasks. Then, the first one is applied just there, the second one when is its turn.
Finally the third one will use osprocess to open the same image (so, by now, this will work without anyproblem if you have saved the image just before, or if you didnt change any of the code to be executed) with the same vm and it will give the block to be executed. In our local image, there will be spawned a watch pharo process that will check if the third image has finished, and deploy the future for it.
In the behind the scenes, each of this convenient methods is implemented with a different kind of runner and process reification.
2014-06-23 0:54 GMT+02:00 kilon alios <kilon.alios@gmail.com>:
are those OS processes or Pharo processes ?
On Mon, Jun 23, 2014 at 1:39 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
-- www.tudorgirba.com
"Every thing has its own flow"
-- www.tudorgirba.com "Every thing has its own flow"
And the script:) Gofer new smalltalkhubUser: 'CAR' project: 'TaskIT'; configuration; load. (#ConfigurationOfTaskIT asClass project version: #stable) load: 'full' Cheers, Doru On Sun, Jun 29, 2014 at 11:09 AM, Tudor Girba <tudor@tudorgirba.com> wrote:
Thanks!
This works.
For reference, here is the loading script:
Cheers, Doru
On Sun, Jun 29, 2014 at 9:58 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi Doru!
Download the stable version ConfigurationOfTaskIt stable.
We are going through a refactor that adds new concepts, the last code is very unstable. We will try to make them transparent from the API point of view, but it will add new concepts in all the aspects.
2014-06-29 7:48 GMT+02:00 Tudor Girba <tudor@tudorgirba.com>:
Hi,
This sounds very nice!
I am trying to give it a shot, but I encounter a DNU for BlockClosure>>asTask. I have loaded the latest code from all packages, but this method is not defined.
Cheers, Doru
On Mon, Jun 23, 2014 at 7:32 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
In general terms there are pharo processes.
val := [2+2] shooitIt.
val := [2+2] scheduleIt.
val := [2+2] forkIt.
All of this snippets will give you a future, all will be related with a pharo process, but each process has different meaning. the firstone is a common 2+2 block opened in a pharo process. the second one is a block assigned to one of the by-default two worker pharo processes from the thread pool. ( in this case the pharo processes do not run directly the task, but run a process that run tasks. Then, the first one is applied just there, the second one when is its turn.
Finally the third one will use osprocess to open the same image (so, by now, this will work without anyproblem if you have saved the image just before, or if you didnt change any of the code to be executed) with the same vm and it will give the block to be executed. In our local image, there will be spawned a watch pharo process that will check if the third image has finished, and deploy the future for it.
In the behind the scenes, each of this convenient methods is implemented with a different kind of runner and process reification.
2014-06-23 0:54 GMT+02:00 kilon alios <kilon.alios@gmail.com>:
are those OS processes or Pharo processes ?
On Mon, Jun 23, 2014 at 1:39 AM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
-- www.tudorgirba.com
"Every thing has its own flow"
-- www.tudorgirba.com
"Every thing has its own flow"
-- www.tudorgirba.com "Every thing has its own flow"
Thanks for your contributions. I will read the chapter :) Stef On 23/6/14 00:39, Santiago Bragagnolo wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/ <http://smalltalkhub.com/#%21/%7ECAR/TaskIT/>
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Terrific ! Envoyé de mon iPhone
Le 23 juin 2014 à 00:39, Santiago Bragagnolo <santiagobragagnolo@gmail.com> a écrit :
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Nice! Can you group promises? Like ( [ 1 + 1 ] shootIt , [ 2 + 2 ] shootIt ) onSuccess: [ :values | (values first + values second ) = 6 ] ? Norbert
Am 23.06.2014 um 00:39 schrieb Santiago Bragagnolo <santiagobragagnolo@gmail.com>:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Ea, not, but i like that :D. 2014-06-23 9:07 GMT+02:00 Norbert Hartl <norbert@hartl.name>:
Nice! Can you group promises? Like
( [ 1 + 1 ] shootIt , [ 2 + 2 ] shootIt ) onSuccess: [ :values | (values first + values second ) = 6 ]
?
Norbert
Am 23.06.2014 um 00:39 schrieb Santiago Bragagnolo < santiagobragagnolo@gmail.com>:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Ok, i was thinking more for use the same async handler for all the futures, now i read better the handler, for that kind of thing we have something similar,what is PlanIT, you should be able to do something like (TKTPlan plan => ( [ 1+1 ] & [ 2+2 ]) => [ : fst :snd | fst + snd ]) run == 6. PlanIT is not yet documented and is not fully developed, but it has some nice tests that shows some of the powers 2014-06-23 9:07 GMT+02:00 Norbert Hartl <norbert@hartl.name>:
Nice! Can you group promises? Like
( [ 1 + 1 ] shootIt , [ 2 + 2 ] shootIt ) onSuccess: [ :values | (values first + values second ) = 6 ]
?
Norbert
Am 23.06.2014 um 00:39 schrieb Santiago Bragagnolo < santiagobragagnolo@gmail.com>:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
btw, with the default plan configuration, it will spawn a thread per independent block (associated by & ), it will rely on the Result mechanism (the sync on demand) to spawn a third thread that is the one that converges both results, and executes the last block with the two previous executions. 2014-06-23 10:00 GMT+02:00 Santiago Bragagnolo <santiagobragagnolo@gmail.com
:
Ok, i was thinking more for use the same async handler for all the futures, now i read better the handler, for that kind of thing we have something similar,what is PlanIT, you should be able to do something like
(TKTPlan plan => ( [ 1+1 ] & [ 2+2 ]) => [ : fst :snd | fst + snd ]) run == 6.
PlanIT is not yet documented and is not fully developed, but it has some nice tests that shows some of the powers
2014-06-23 9:07 GMT+02:00 Norbert Hartl <norbert@hartl.name>:
Nice! Can you group promises? Like
( [ 1 + 1 ] shootIt , [ 2 + 2 ] shootIt ) onSuccess: [ :values | (values first + values second ) = 6 ]
?
Norbert
Am 23.06.2014 um 00:39 schrieb Santiago Bragagnolo < santiagobragagnolo@gmail.com>:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Am 23.06.2014 um 10:02 schrieb Santiago Bragagnolo <santiagobragagnolo@gmail.com>:
btw, with the default plan configuration, it will spawn a thread per independent block (associated by & ), it will rely on the Result mechanism (the sync on demand) to spawn a third thread that is the one that converges both results, and executes the last block with the two previous executions.
Sounds reasonable. As long as the join points (where multiple promises are queued until one/all have a value) can be composed again this is great. Norbert
2014-06-23 10:00 GMT+02:00 Santiago Bragagnolo <santiagobragagnolo@gmail.com>:
Ok, i was thinking more for use the same async handler for all the futures, now i read better the handler, for that kind of thing we have something similar,what is PlanIT, you should be able to do something like
(TKTPlan plan => ( [ 1+1 ] & [ 2+2 ]) => [ : fst :snd | fst + snd ]) run == 6.
PlanIT is not yet documented and is not fully developed, but it has some nice tests that shows some of the powers
2014-06-23 9:07 GMT+02:00 Norbert Hartl <norbert@hartl.name>: Nice! Can you group promises? Like
( [ 1 + 1 ] shootIt , [ 2 + 2 ] shootIt ) onSuccess: [ :values | (values first + values second ) = 6 ]
?
Norbert
Am 23.06.2014 um 00:39 schrieb Santiago Bragagnolo <santiagobragagnolo@gmail.com>:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Looks really cool! Everythingâs an object :) Does it run in older images? How hard, do you reckon, would it be to backport TaskIT to e.g. Pharo 1.4? Cheers, Max On 23.06.2014, at 00:39, Santiago Bragagnolo <santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
There is actually a version of taskit for 1.4, but is not the last one. Honestly, i did not tested on 1.4, then i don't know :). If you run on it, make me know. i will try to run this week if not.
2014-06-24 17:23 GMT+02:00 Max Leske <maxleske@gmail.com>:
Looks really cool! Everythingâs an object :)
Does it run in older images? How hard, do you reckon, would it be to backport TaskIT to e.g. Pharo 1.4?
Cheers, Max
On 23.06.2014, at 00:39, Santiago Bragagnolo <santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
On 24.06.2014, at 19:14, Santiago Bragagnolo <santiagobragagnolo@gmail.com> wrote:
There is actually a version of taskit for 1.4, but is not the last one. Honestly, i did not tested on 1.4, then i don't know :). If you run on it, make me know. i will try to run this week if not.
Good stuff! Thanks.
2014-06-24 17:23 GMT+02:00 Max Leske <maxleske@gmail.com>: Looks really cool! Everythingâs an object :)
Does it run in older images? How hard, do you reckon, would it be to backport TaskIT to e.g. Pharo 1.4?
Cheers, Max
On 23.06.2014, at 00:39, Santiago Bragagnolo <santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
Impressive! Can I specify the semantic behind #shootIt ? I mean, now you are spawning processes right? Can I instead open a new image to have the work done? Alexandre On Jun 22, 2014, at 6:39 PM, Santiago Bragagnolo <santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the process"
" looping "
val := server paralellize looping serveOnce: anyParameter asStickyReference.
"this will execute in a new process, in a loop, server serveOnce: anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo: ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
yeah, the name of the extension for executing in a second image is forkit. instead of [ 2+2 ] shootIt, do [ 2+2 ]forkIt, The difference in between both is the runner. Meanwhile shootIt is like this: shootIt ^ TKTOneShotRunner new run: self forkIt is forkIt ^ FKTOneShotAtThirdInstanceRunner new run: self We are changing this for the next version, but it will be similar, but more dynamic (we will take more advantage of our reification of process) 2014-06-30 0:05 GMT+02:00 Alexandre Bergel <alexandre.bergel@me.com>:
Impressive!
Can I specify the semantic behind #shootIt ? I mean, now you are spawning processes right? Can I instead open a new image to have the work done?
Alexandre
On Jun 22, 2014, at 6:39 PM, Santiago Bragagnolo < santiagobragagnolo@gmail.com> wrote:
Hi all, im glad to announce TaskIT. You may already knew about, after
all it's not confidential ;) and it has documentation on-going since some months ago.
Task IT is package that provides a cool way to deal with processes. Even
when this version is stable, it still in design and we want to make it consistent and powerfull.
It counts with a chapter in pharo enterprise book and some cool tests.
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
The main easy things to do with this revision are:
" closures " val := [ 2+2 ] shootIt. val isKindOf: TKTFuture. val onSuccess: [: rslt | rslt == 4 ] "async" val value == 4. " sync "
rslt := [ 2+2 ] shootIt asResult. rslt == 4 "sync on demand"
" objects "
val := 2 paralellize + 2. val == 4 "sync on demand"
" staying in tune "
val := [ "some task" ] shootIt asStickyReference.
val := nil. " sticky means that if this future is taken by the GC, it will kill the
process"
" looping "
val := server paralellize looping serveOnce: anyParameter
asStickyReference.
"this will execute in a new process, in a loop, server serveOnce:
anyParameter."
You can stop it by doing val:= nil.
"or using a disgusting magic variable, for that check the samples :).
But do not rely on that kind of things, because it will not be supported "
For more advanced and cool usages, check the Doc.
FAQ:
1- Yes, the "sync" on demand is implemented with a proxy and a become. 2- Yes, we are changing the API of the processes that persist in time.
CREDITS All CAR team in general was great inspiration, particularly, Guille
Polito full operational commiter and of course is always a good idea to discuss with him, Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.
and from RMOD Esteban Lorenzano, also discussing and proposing.
Thanks all :).
OTHERS: If you want to go to the darkside (dark because is not documented yet,
but in the case of PoolIT, that it has some doc ) you can also add to your combo:
ActIT: a simple Actor extention for taskit. ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution) PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads. PlanIT: a basic and not yet full developed algebra for composing processes.
I encourage you to use it, it is being used in PhaROS since a lot of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.
Salut.
Santiago. .
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
participants (8)
-
Alexandre Bergel -
kilon alios -
Max Leske -
Norbert Hartl -
Santiago Bragagnolo -
Serge Stinckwich -
stepharo -
Tudor Girba