World: r3wp
[!REBOL3-OLD1]
older newer | first last |
BrianH 12-Feb-2009 [11135] | >> mold/all do/next [1 + 1 2 + 2] == "[2 #[block![1 + 1 2 + 2]4]]" |
Janko 12-Feb-2009 [11136] | so now I just need to figure out how to detect when the last block is evaluated .. that is probably when the oftest block is empty... |
BrianH 12-Feb-2009 [11137] | Yup. |
Janko 12-Feb-2009 [11138x3] | I mean the whole block .. (in a loop) |
I will try | |
ha, works on all test blocks I tried :) step-block: func [ code ] [ until [ set/any [ value code ] do/next code empty? code ] value ] | |
BrianH 12-Feb-2009 [11141] | :) |
Janko 12-Feb-2009 [11142] | I thought I will ask a very very stupid question and it turns out this is very nicely possible already |
BrianH 12-Feb-2009 [11143] | Except in R3, for now :( |
Janko 12-Feb-2009 [11144x2] | would this enable us to do some sort of "green threading" without the need to maually yield even? |
absolutely no problem , if it's "for now" | |
BrianH 12-Feb-2009 [11146] | Yes, but watch out: If there is a function call, the *whole* call gets executed, even if it is long. Your granularity of preemption of your manual multithreading is going to be pretty coarse. |
Janko 12-Feb-2009 [11147x2] | yes, I know.. no long running tasks as with coroutines for example ( I am not really specialist in this, I only used it few times) |
basically I don't have the full picture, it's just awesome that something like this can be done inside a language itself | |
BrianH 12-Feb-2009 [11149] | It will be like cooperative multi-threading with no yield statement (that I can see), but an implied yield between top-level expressions. |
Janko 12-Feb-2009 [11150x2] | yes, it looks like that .. I will try to make a simple step-blocks function and see what it does |
if you would want to switch you could also step until you hit a certain word probably and then switch to other funct | |
BrianH 12-Feb-2009 [11152] | With DO/next and pseudothreads you could do full fake cooperative multithreading. |
Janko 12-Feb-2009 [11153x2] | what are pseudothreads? |
you mean the R3 threads/processes? | |
BrianH 12-Feb-2009 [11155x3] | Sorry, meant Protothreads: fake threading done with macros and special tricks. A C version: http://www.sics.se/~adam/pt/ |
The principle could be done in REBOL by preprocessing the code - easier than in C, though we don't have the switch trick. | |
C-style protothreads requires compilation to rebcode though, so we can use the brab opcode. | |
Janko 12-Feb-2009 [11158] | (the page doesn't load to me so I will keep trying) |
BrianH 12-Feb-2009 [11159] | Sorry, broken link. Try this: http://en.wikipedia.org/wiki/Protothreads |
Janko 12-Feb-2009 [11160x2] | these things are very interesting to me but I am a little |
uh.. I wanted to delete that but clicked the send button :) .. | |
BrianH 12-Feb-2009 [11162] | Aren't we all "a little", sometimes :) |
Janko 12-Feb-2009 [11163x2] | :) |
is this how stackless works (because it mentions no stack) | |
BrianH 12-Feb-2009 [11165] | If by "how stackless works" you mean Stackless Python, then no. That works using continuation passing style. |
Janko 12-Feb-2009 [11166x3] | aha, I meant stackless pythong.. you seem to really understand this stuff :) |
python = pythong | |
my "I am a little" was meant to be "unknowledgable on lower level things" | |
BrianH 12-Feb-2009 [11169] | Protothreads often work be redoing the calling stack using special tricks, or with no recursion. They're good for embedded work. |
Janko 12-Feb-2009 [11170] | interesting |
BrianH 12-Feb-2009 [11171] | They were used to implement Contiki, a multitasking embedded OS that runs on computers of Commodore 64-level capabilities. |
Janko 12-Feb-2009 [11172] | I saw it mentioned on wikipedia page.. looks interesting, but it's website doens't work either |
BrianH 12-Feb-2009 [11173] | Contiki is used by smart sensor arrays and such. Pretty hard-core stuff. |
Janko 12-Feb-2009 [11174x2] | I used to be an electronic studied automation so these things are very interesting to me... I see on google cache that last news from contiki site are " Tuesday, 03 February 2009 " so it seems page isn't abanconed, but probably just temporatly down |
(sorry for all the typos - it's late over here) | |
BrianH 12-Feb-2009 [11176] | It's weird, those sites were up last November. |
Janko 12-Feb-2009 [11177x3] | http://209.85.129.132/search?q=cache:0HWW7I9t-GUJ:www.sics.se/contiki/+contiki+os&hl=en&ct=clnk&cd=1 |
I made a simple paralel block executor .. not sure if it can be used for anything but it's interesting to see it work | |
hm... maybe I shouldn't post code here as this is R3 group | |
BrianH 12-Feb-2009 [11180] | Core group |
Pekr 13-Feb-2009 [11181] | BrianH: I wonder when Carl gets to those "more interesting" topics, like tasks, rebin, plugins, etc. :-) So far I can see we mostly play with mezzanine stuff, although those additions are really cool to have :-) |
BrianH 13-Feb-2009 [11182x2] | Well, I mostly play with mezzanine and library code and backports, then generate a *ton* of bugs and wishes in CureCode about fixes for or enhancements of natives. Because I tend to be public with my work, that's what you see. Carl is mostly working on the new DevBase right now (and possibly articles and interviews). Once the new DevBase is up and running the source will be posted to it, then we can all work on stuff. |
Right now (this minute) I am backporting the R3 reflection functions to R2. The r2-forward collection is getting pretty extensive :) | |
Pekr 13-Feb-2009 [11184] | new DevBase? |
older newer | first last |