r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3-OLD1]

Pekr
11-Feb-2009
[11012]
BrianH - weren't threads choosed because processors better optimise 
them?
BrianH
11-Feb-2009
[11013]
Pekr, threads were chosen because the multi-core processor increase 
hadn't started yet when the initial task! model was created. Processors 
don't optimize threads better than green processes, or even regular 
processes on Linux. Windows regular processes are pretty heavy but 
Windows 7 is implementing green processes right in the OS. That doesn't 
mean Erlang would need to use them though.
Janko
11-Feb-2009
[11014]
I think special thing about erlang is that each green process has 
very very little memory overhead (just 16-32 words) that is why there 
can be soo many of processes and that it can switch between them 
very fast. I imagine Erlang vm spreads N green processes on some 
number of native threads/processes (but I am not sure)... Another 
interesting language to look in this regards is stackless python
Gregg
12-Feb-2009
[11015]
Maarten? Calling Maarten. Erlang is being discussed. :-)
Maarten
12-Feb-2009
[11016]
Erlang uses their own lightweight process implementation (like you 
could write in REBOL .... hint); remember that the first version 
were written in Prolog. The Erlang VM uses all cores on a machine. 
The "no shared memory" aprroach makes this easy.


R3 should be able to utilize multiple cores. Then with async networking 
and people finally understanding dialecting who needs tasks? Just 
roll your own.
Pekr
12-Feb-2009
[11017x2]
Maarten - could you please explain your "who needs tasks" remark? 
You need some low level support, to be async, no? And by async I 
don't think only networking ....
IIRC, in R3, processes (threads) were not planned to share memory. 
ipc scheme was supposed to be provided ...
BrianH
12-Feb-2009
[11019]
He might mean "who needs threads?", because "tasks" aren't defined 
yet. As Erlang proves, there are advantages to having both green 
processes and full processes, especially if they are basically interchangeable 
as far as the code running in them is concerned. You *could* just 
go with full processes like R2 does ("Just roll your own."), but 
that wouldn't be as efficient as a hybrid green/full approach, particularly 
on platforms like Windows that have huge creation and switching overhead 
for full processes.
Henrik
12-Feb-2009
[11020]
Having to roll our own would be very cumbersome. It might be simple 
for Maarten who has written threading engines for R2, but for us 
lesser ones, it would be handy, if it was built in. I consider not 
having it a showstopper in many cases. AFAIR, threading was the original 
reason for starting R3 development?
BrianH
12-Feb-2009
[11021x2]
No, it was the broken port model.
Henrik, everyone who can, please get into R3 chat and read messages 
#1786 and #1436. I need help.
Henrik
12-Feb-2009
[11023]
Nail-biting, hair-loss inducing reply posted. :-)
Graham
12-Feb-2009
[11024]
Hope we get a GUI for R3 chat soon ... I find it just too hard to 
read it in a console.
[unknown: 5]
12-Feb-2009
[11025x2]
One formatting fix they need to make for RebDev is to put a blank 
line as the first input of each post.  Makes it a bit more readable.
Also, maybe add an R options to automatically have the message prefixed 
with a REPLY to #XXXX where x is the message number.
Henrik
12-Feb-2009
[11027]
Paul, the R option exists and works like you specify.
[unknown: 5]
12-Feb-2009
[11028x2]
Ahhh, that must mean that me and the Great mind of Carl think alike. 
 ;-)
I'm still a noob to RebDev.
BrianH
12-Feb-2009
[11030x2]
I'd be happy if they had word-wrap, as I've been manually word-wrapping 
my own posts.
Reply to your nail-biter Henrik: #1789.
[unknown: 5]
12-Feb-2009
[11032]
I thought Henrik's R3 GUI skills would have manufactured a GUI for 
RebDev by now.
BrianH
12-Feb-2009
[11033]
R3's GUI is missing some necessary styles for a RebDev client, notably 
grids. Filling in the blanks needs more programmers, so we are focussing 
on getting the file management portions of DevBase integrated first 
so we can get other people involved in the process. Priorities :(
Henrik
12-Feb-2009
[11034]
Also I'm pressed for time for about another month.
BrianH
12-Feb-2009
[11035]
This /into option proposal is based on profile-driven *language design*. 
It's a new approach to REBOL.
[unknown: 5]
12-Feb-2009
[11036x2]
I like the idea Brian.  In fact, I use that manner often in the things 
I do.
But why not make the /into default behavior?  And then use /copy 
for the alternative?
BrianH
12-Feb-2009
[11038x2]
Because the series creatiion builder model is easier for less advanced 
REBOL programmers to use. Buffers need management (as #1789 explains). 
This new model is for more advanced programming, such as mezzanine 
and library code.
Well, right now i need discussion and consensus. I have CureCode 
wishes, mezzanine modifications, new functions, and massive optimizations 
all waiting on this. I'm really blocked until this is decided on.
[unknown: 5]
12-Feb-2009
[11040]
I guess, I don't follow.  Maybe, I'm jumping to conclusions about 
what /into actually implies.  To me, /into implies that the original 
series passed to the function is what is modified and not a copy 
of it.
BrianH
12-Feb-2009
[11041]
No, that's the /no-copy option - it's a completely different thing. 
See #1789.
[unknown: 5]
12-Feb-2009
[11042]
Well, then I'm in favor of the no-copy option as the default behavior.
BrianH
12-Feb-2009
[11043]
Please read #1789 before you make that decision. The difference between 
/no-copy and /into is important.
Oldes
12-Feb-2009
[11044]
So you mean something like:
rejoin/into [a b c] out
instead of:
append out rejoin [a b c]
? I think I like it.
BrianH
12-Feb-2009
[11045]
Yes. But not for (RE)JOIN because JOIN or REJOIN /into is exactly 
the same as INSERT and INSERT REDUCE. What we *do* need to add /into 
to is (RE)MOLD, (RE)FORM, REDUCE, COMPOSE, READ, COLLECT (needs changes), 
MAP and EXTRACT.
[unknown: 5]
12-Feb-2009
[11046x2]
Brian, I read it and the option I believe should be default behavior 
is for the original series to be modified.
Which is what I thought the /into option was implying.
Dockimbel
12-Feb-2009
[11048]
BrianH: I'm 100% for /into and, if possible, it would be one of my 
top features to backport to R2.
Henrik
12-Feb-2009
[11049]
I thought that too.
BrianH
12-Feb-2009
[11050x2]
No, those are modifier functions. We already have those, and the 
algorithm for implementing a modifier is completely different than 
a builder. Some functions (like DELINE) could be changed into modifiers 
with /no-copy and that wouuld make sense. It doesn't make sense when 
the builder is creating something based on a spec or template, which 
often has a completely different datatype than the result. For these 
functions an output buffer makes more sense.
(That was a reply to Paul)
[unknown: 5]
12-Feb-2009
[11052]
Ok, then I'm for the modifier as the default operation.
BrianH
12-Feb-2009
[11053x2]
Modifiers and builders are completely different classes of functions, 
with some overlap (see DELINE or REPLACE vs. REWORD). When the function 
is making a copy of the spec with some tweaks, a /no-copy option 
makes sense, or a completely separate function with complex mezzanines. 
When the builder function creates something really different than 
the spec (like ARRAY or READ), there is no point to a /no-copy refinement 
since there is no eqivalent modifier even in theory.
That is the difference between /no-copy (which turns a builder into 
a modifier), /copy (which turns a modifier into a builder), and /into 
(which makes a builder insert into a provided buffer instead of creating 
its own series).
Henrik
12-Feb-2009
[11055]
Brian, now you say it inserts. Does it clear the series and inserts, 
just inserts or overwrites the existing content?
[unknown: 5]
12-Feb-2009
[11056]
So read-io in R2 would be an example of /into?
BrianH
12-Feb-2009
[11057x2]
Henrik: Inserts and *doesn't* overwrite the existing content. Paul: 
Yes.
The functions for which /into would give us the absolutely biggest 
bang-for-the-buck are REDUCE and COMPOSE. Have you ever done chained 
calls to INSERT or APPEND of intermediate blocks created by REDUCE 
or COMPOSE? All that code goes away.
[unknown: 5]
12-Feb-2009
[11059]
Ok, now I follow what your saying.
Henrik
12-Feb-2009
[11060]
I don't follow. I'm an example guy.
[unknown: 5]
12-Feb-2009
[11061]
henrik, the key is your supplying a buffer.