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

World: r3wp

[!REBOL3-OLD1]

BrianH
29-May-2009
[14678x3]
Janko, map and fold are only efficient in functional languages that 
are compiled and optimized. In hand-optimized, interpreted languages 
iteration is *much* more efficient.
You could use map and fold to implement foreach, but FOREACH is much 
faster that that implementation.
that that -> than that
Janko
29-May-2009
[14681x2]
if I would care only for efficient I wouldn't be using compiled languages 
anyway .. sometimes it doesn't matter that much .. I like map/fold 
because they cleanly express what you want to do , you don't have 
to setup and update temp variables and they are expressions ( they 
return result)
wouldnt = would
BrianH
29-May-2009
[14683x2]
Pekr, LOAD-PLUGIN is an internal function. We reserve the most awkward 
names for the internal functions :)

And READ-TEXT doesn't exist and won't - it will probably be READ/text 
instead.
I don't know about the name "fold" - it has ambigous meaning in English, 
with the primary meaning being something else.
Janko
29-May-2009
[14685]
I don't care about the exact name much ... I usually call it reduce 
but reduce has a very important and basic meaning in rebol already
BrianH
29-May-2009
[14686]
Yeah, and a different meaning too...
Anton
30-May-2009
[14687]
I am OK with MAP -> MAP-EACH.
Pekr
30-May-2009
[14688x4]
BrianH: one question - what is the motive to have R3/plus? Is there 
really a need to move few funcs out from main R3 module? Isn't it 
a bit preliminary?
ah, BrianH, if you think that I will not mind have read/text, then 
you are unlucky here - man, it really sucks :-)
This is exactly the case, where something is under-engineered, and 
influences REBOL's design. There would be no need for such an exception, 
if Codecs would be able to work the streamed way, not just upon the 
data in memory ....
Above reminds me - does our parse enhancement proposal contain request 
to continuous (streamed) parsing? I can imagine parse being fast 
enough to have REBOL level codecs. But surely I don't want to read/part 
manually, nor do I want to read 1GB of video into RAM, just to find 
out, what the codec is :-)
Maxim
30-May-2009
[14692x2]
parse on ports definitely is possible, but would have limitations. 
 because of the rollback aspect of rules.
if bytes aren't available anymore, we can't rollback, obviously...
Pekr
30-May-2009
[14694]
could be solved by buffering, but the quesiton is, how much to buffer 
anyway, so it really might not work :-)
Louis
30-May-2009
[14695]
Pekr, I'm still mad at you for making me think R3 was almost done 
a year or so ago.  I waited with great anticipation for that date. 
 That was a big letdown!  :>)
Maxim
30-May-2009
[14696x2]
in cases where the data is pretty linear or backup isn't needed due 
to format, a simple error is all you need to return when you encounter 
un-expected data... this can mean streamed xml parsing.
increasing latency, but not throughput if you chain two servers, 
or two threads.
Pekr
30-May-2009
[14698x2]
Louis - then go and smash your head agains the wall, it might help 
:-)
I never said R3 is close to being finished. So what let-down you 
are talking about? We were talking public release, which happened 
and is available for some time.
Louis
30-May-2009
[14700]
Pekr, I'm doing that right now head smashing right now trying to 
find a bug in my script.  It doesn't seem to help. But don't worry. 
I'm not really mad at you. Just joking.
BrianH
30-May-2009
[14701x5]
Pekr, the reason for R3/Plus is so we don't have to say no to people's 
requests for new functions, but don't want to bloat REBOL. With modules 
we don't have to make everything monolithic anymore. We have a new 
situation with R3.

The main advantages to having functions built into REBOL:
- REBOL itself can use them.
- You can count on them being there.

- They will be tested and reworked by the best of the community (the 
REBOL optimizer).

The main disadvantages to building functions into REBOL:

- Increases overhead, both in startup time and memory overhead. Compare 
R2 /Base to /Core to see what I mean.
- Predefines more words.

- These might not do what you want, so you'll end up redefining them 
anyways.


Building a community is a balancing act. Once we started taking requests 
for new features to make REBOL better, the floodgates opened. Even 
after filtering out the impossible or otherwise bad ideas, there 
was a lot of good stuff in there. But we don't want to bloat REBOL 
into Perl.


Fortunately, we had added modules to R3 to help organize the code 
and deal with the last two disadvantages to building in functions. 
And we have DevBase to accept community contributions. These are 
all the infrastructure we needed to create a standard library, tentatively 
called R3/Plus.


So now we don't have to worry about accepting requests for new features, 
because we know how ruthless we are going to be about our mezzanine 
cuts. If REBOL itself uses the function, it either stays as a mezzanine, 
or in some cases goes native. If the value of the function for users 
is high, the overhead is low, and there is consensus, it may get 
to stay too. Otherwise they become library functions. FUNCTOR wasn't 
the first cut, and it won't be the last.


Keep in mind that with plugins, library functions can be native too. 
And the REBOL optimizer still applies. And with modules you can declare 
your dependencies. There's very little downside to having R3/Plus.
As for the Parse Proposals, well, the proposals need some reorganizing. 
We've had some months to think about them while we've been working 
on other priorities, and one thing that is clear is that some of 
the operations need to apply to only certain data types and not others, 
and some are more global.
The existing parse model could extend to ports if they are seekable. 
Alternation, backtracking and position setting would be translated 
into seeking. The value assigned to words with the set-word operation 
would be an integer offset. The rules would look the same.
Buffering would be handled by the port scheme and the underlying 
OS - no explicit buffering necessary.
This could only work with the R3 port model though, not with R2's 
port model.
Steeve
30-May-2009
[14706]
hmm, somewhere, i have a script which simulates parsing on an opened 
file (a port) in R2
BrianH
30-May-2009
[14707x3]
R3 ports are vaguely similar to /direct ports in R2, but with better 
buffering and in some cases asynchrony. There are more advantages, 
but those are the main ones that apply here. You'd need /read and 
/seek mode to parse with backtracking.
R2 ports could be parsed like series if they are not opened /direct. 
That would be completely different than the above proposal though.
The reasons the above proposal doesn't apply to R2 ports are that 
/seek ports don't buffer (according to  the help, and except for 
OS internal buffering), and the messed-up handling of position for 
/direct ports.
Pavel
30-May-2009
[14710]
Steeve would you release idx.r to accept A55 patches?
Steeve
30-May-2009
[14711x7]
i can
wait a minute
But i've not fully tested it back (i only to tested the speed of 
APPEND)
Geez, my connection is slow, it'll take some more minutes
*** Done, check idx.r at the end of the page http://sites.google.com/site/rebolish/Home
I have some improvements in my mind.

For example, I could optimize the copy/part  actor to get it really 
faster.

Because currently doing loop 10 [copy blk] or copy/part blk 10, takes 
the same time mostly
Strange behavior, i don't remember since when it's like that in R3.
>>to block! "[1 2 3]"
== [[1 2 3]]

instead of previously
== [1 2 3]

Any reason for this change ?
BrianH
30-May-2009
[14718x2]
It's been like that since the first R3 release. And in R2 as well.
DO of strings is broken in the crrent release though.
Pavel
31-May-2009
[14720]
Steeve thnx for update
Steeve
31-May-2009
[14721]
Brian  No it wasn"t like that from the start.

I didn't have that behavior in the previous releases of the VBS scheme 
(some weeks ago)
Sunanda
31-May-2009
[14722]
Perhaps there was a glitch in one version.

I've checked a few older R3s and a 2003 R2....They all behave the 
same way.
Steeve
31-May-2009
[14723]
Argh how can that it be ? Am i crazy ????
BrianH
1-Jun-2009
[14724]
Here's a good place for that kind of chat.
Pekr
1-Jun-2009
[14725x2]
I would like to ask, if we could start some very preliminary planning 
for Prague Devcon 2010 (May, June?). It should be time of R3 official 
3.0 launch :-)
Carl - still working on plugins? We were discussin here some topics, 
as concurency (getting something like Uniserve engine into R3 for 
networking along with some good model of tasking), parse enhancements 
(parse and codecs being able to work upon streamed input), back-to-GUI 
topics, etc.
Carl
1-Jun-2009
[14727]
DevCon - yes. Interesting, because we are starting to plan a trip 
over there (Europe) already.