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

World: r3wp

[!REBOL3-OLD1]

BrianH
9-Dec-2008
[8851]
I think Pekr doesn't see too many goths. I'm pretty conservative-looking 
by their standards :)
Steeve
9-Dec-2008
[8852]
Pekr is right, when i saw Brian first, i thought, oh God i hope no 
one will give him a scissor...
BrianH
9-Dec-2008
[8853]
I am really very happy and well adjusted, which weirds out my friends 
:)
Steeve
9-Dec-2008
[8854x2]
he's already "cutting" our idea on R3 evolutions, so that he doesn't 
need to be more accurate
;-)
BrianH
9-Dec-2008
[8856]
We are on the cutting edge :)
BrianH
10-Dec-2008
[8857]
Oldes: Is there something new with Rebcode?


Nothing new, but your requesting it means that you don't remember 
the problems the old rebcode had.

The bad news:

- Rebcode didn't work in R2, it was unstable and frequently crashed 
REBOL, very pre-allpha.

- Carl is unlikely to make a build with rebcode because of the above, 
and because he is focusing on R3.

- R2-style rebcode would be slower in R3 relative to the speed of 
regular R3, partly due to changes in function word lookup.

- Any rebcode dialect for R3 would be incompatible with R2 rebcode 
on a basic semantic level.

The good news:

- R3 has features that will make it relatively easy to add our own 
rebcode-like dialect.

- Even though the R2 semantics wouldn't be good, there are more tricks 
we can do to get more speed.

- The main reason that we don't get as much of a relative speedup 
for R2-style rebcode in R3 is that R3 is faster itself.
Pekr
11-Dec-2008
[8858]
BrianH - are you going to bring us Rebcode, JIT, or anything like 
that in the future for R3? :-)
Maarten
11-Dec-2008
[8859]
Petr, read carefully... he is saying R3 is so much faster that you 
may not need it.
Oldes
11-Dec-2008
[8860]
We will see. I'm not going to test it now as I don't have the latest 
R3 version. But I'm really looking forward to see the new R3 features.
Rebolek
11-Dec-2008
[8861]
R3 (at least publicly available versions) math is definitely not 
10x faster as rebcode was.
Oldes
11-Dec-2008
[8862]
For math maybe we will be able to use C-ish plugins with R3
Pekr
11-Dec-2008
[8863]
Maarten - you probably don't believe your own words, righ? Or are 
you going to write pixel manipulation in 'foreach or any other REBOL 
loop? :-)
Maarten
11-Dec-2008
[8864]
I think R3 will be fast enough for all things you don't want to code 
in C
Henrik
11-Dec-2008
[8865x2]
I'm looking forward to the reduce/into enhancement. In general we've 
had a lot of clever optimizations through better design, and I'm 
sure there are many more that can go in.
Small status update:

- CureCode is now the official bug tracker for R3.
- Clipboard now supports unicode. This took longer than expected.

- HTTP 1.1 has been degraded to 1.0 due to some problems with 1.1. 
Rebtalk will continue to work as always though. Maarten is looking 
into this.

- Carl is attacking font code (this does not involve altering the 
poor anti-aliasing unfortunately) and text handling, so text areas 
will finally grow up and act like real text areas. This makes Rebtalk 
usable for more than messages. :-)

- Also yesterday, code was added to allow cell based vertical and 
horizontal alignment of faces. It's interesting to see these changes 
in VID3.4: A new feature like this is rarely more than 5-10 lines 
of code, which is a sign of a great design.

- MAX-SIZE won't go away. Instead it might (I'm not sure Carl is 
convinced there is a problem) be split in two. It currently acts 
as both a pressure factor and maximum size for a face, which is the 
cause for most of its problems.
BrianH
11-Dec-2008
[8867x2]
Pekr, making new execution engines for R3 is one of my goals, so 
yes.
Rebolek, math is not REBOL's strong suit, true. The speedup comes 
from other areas.
Rebolek
11-Dec-2008
[8869]
Maarten: I don't want to code anything in C :)
BrianH
11-Dec-2008
[8870]
REBOL's syntax is bad for math - too verbose, too much required whitespace. 
We can do a better dialect than that.
Steeve
11-Dec-2008
[8871x2]
Brian coul you give an example how  to  define a new execution engine 
in R3, i don't see the point
perhaps a work to do in the wiki
BrianH
11-Dec-2008
[8873]
I can explain, but not give you code yet because it depends on user-defined 
datatypes and we don't even have the syntax for those yet.
Steeve
11-Dec-2008
[8874]
ok i take it
BrianH
11-Dec-2008
[8875]
Perhaps you have noticed that in R2 there are 4 function types, 5 
with rebcode builds: function!, native!, action!, routine!. Each 
of these behaves completely differently on the inside, but are called 
the same on the outside. This is because each of these datatypes 
defines a different execution model. R3 will have allow the user 
to create their own datatypes, and that includes function types. 
All a datatype needs to do to be a function type is to act like a 
function on the outside. How it behaves on the inside is up to it.
Steeve
11-Dec-2008
[8876]
but in what langage will be writed the inner code of such new functions 
? (rebol, c, ...)
BrianH
11-Dec-2008
[8877]
User-defined datatypes (UDT) depend on the R3 plugin model (that's 
not done yet either) and plugins are a REBOL module wrapper around 
native code. UDTs can be defined in REBOL code or a mix of REBOL 
and native.
Steeve
11-Dec-2008
[8878]
ok
BrianH
11-Dec-2008
[8879]
One thing you are missing is that the input data of the MAKE action 
of a datatype does not have to be the same as what is on the inside 
of the value created. That means that you could pass a block of code 
or string containing another language's syntax to MAKE and the datatype's 
MAKE handler can translate that data to whatever internal format 
it needs. This means we can compile.
Steeve
11-Dec-2008
[8880]
this means we could compile some c code in the fly with something 
like tcc
BrianH
11-Dec-2008
[8881]
Yes, that is one of my plans.
Steeve
11-Dec-2008
[8882]
sounds sweet
BrianH
11-Dec-2008
[8883x2]
The datatype's execution engine deals with the internal data that 
the MAKE handler creates, not the input syntax. This means that the 
internal data could be anything: bytecode, native code, graph structures, 
whatever.
You can't get a reference to the internal data in R3 like you can 
in R2, so no hot patching.
Steeve
11-Dec-2008
[8885]
using struct! ?
BrianH
11-Dec-2008
[8886]
I mean the value returned by the body-of reflector of a function 
is at best an unbound deep copy of the body, not the original. You 
can't patch functions. This means that your datatype could return 
a copy of the input data, a disassembly of your bytecode, or nothing 
if you like.
Steeve
11-Dec-2008
[8887]
hum i see
BrianH
11-Dec-2008
[8888x2]
This was a security fix.
Nonetheless, I am doing whatever I can to speed up regular R3 whereever 
it is reasonable to do so. The profiler is my friend :)
[unknown: 5]
11-Dec-2008
[8890]
what is the name of the REBOL world again for 2.7.7?
Henrik
11-Dec-2008
[8891]
r2-beta, I think
Maxim
11-Dec-2008
[8892]
quick question about R3.... does the GC *release* memory from the 
process properly, as opposed to R2 growing infinitely?
Kaj
11-Dec-2008
[8893]
R2 does that?
Maxim
11-Dec-2008
[8894]
yep.
Sunanda
11-Dec-2008
[8895]
R2 does not grow infinitely, but it does not hand back memory -- 
it prefers to keep what it's got and use that again when needed.

That is faster than continually handing back and reacquiring memory 
in many cases.

But if an application needs a large amount of memory at start-up 
(or some other peak time), it keeps that memory until the end. That 
is not very friendly!
Maxim
11-Dec-2008
[8896x5]
any memory use which grows the global pool is never de-allocated 
 :-(
but the actual effect is that if R2 grows, memory wise, its GC slows 
down.  so the argument of handing back the memory is ultimately flawed.
I've even witnessed this with altme, when doing the initial sync, 
it grew to almost 200 MB.  it then started to freeze sporadically.
so I just quit, started back... got me a nice 50MB process and all 
is well.
and sunanda... I've also discovered that it doesn't always recycle 
the memory its got !  image manipulation is an example of that.