• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[#Red] Red language group

DocKimbel
21-Nov-2012
[4176x2]
Does this mean no GUI or just gui done in different way?

 See all the presentation slides for Red, a native GUI system will 
 be provided. Also a web server with a new web framework will be part 
 of Red stack, so modern style web apps will be supported.


The GUI will probably be done in different way than R3 underneath, 
maybe a gob!-like datatype will be a good match, but such implementation 
detail is not known until implementation starts. Also, it is possible 
to extract R3 GUI code, wrap it in a shared library and plug it in 
Red (but I won't be the one doing that and maintaining such wrapper).
As Kaj underlined, GTK+ will most probably be the native target for 
Linux.
Kaj
22-Nov-2012
[4178x2]
I've finally been able to write a Red version of Fibonacci numbers. 
It executes twice as fast as R3
Red/System is roughly hundred times faster
Henrik
22-Nov-2012
[4180]
Is the Red version pure Red? Why exactly is it faster than R3?
Kaj
22-Nov-2012
[4181x2]
It's compiled
parameter: 35

fibonacci: func [
	n		[integer!]
	/local	a
][
	either n < 2 [
		n
	][
		a: fibonacci n - 1
		a + fibonacci n - 2
	]
]

prin "Fibonacci "
prin parameter
prin ": "
print fibonacci parameter
Steeve
22-Nov-2012
[4183]
Functions in red are not compiled yet, right ?
PeterWood
22-Nov-2012
[4184x2]
Wrong.
Functions are compiled  in Red.
Steeve
22-Nov-2012
[4186]
I talk about Red not Red/system
Kaj
22-Nov-2012
[4187]
Yes, Peter i right
PeterWood
22-Nov-2012
[4188]
Me too!
Kaj
22-Nov-2012
[4189]
is
Steeve
22-Nov-2012
[4190]
I think you're both wrong ;-)
Kaj
22-Nov-2012
[4191]
Red is a compiler, as simple as that
PeterWood
22-Nov-2012
[4192]
Well I'm usually worng :-)
Steeve
22-Nov-2012
[4193x2]
You're talking 	about Red/system not Red
Red is evaluated
Kaj
22-Nov-2012
[4195]
No, we've been publishing that fact for almost two years now. I don't 
know what else we can do
Steeve
22-Nov-2012
[4196]
like Rebol
PeterWood
22-Nov-2012
[4197x2]
No, it is compiled like C.
This might give you a clue - https://github.com/dockimbel/Red/issues/308
DocKimbel
22-Nov-2012
[4199x2]
Kaj: nice! Actually, such kind of function (highly recursive, very 
small body) should perform 5-10 times faster than R3 in the target 
compiler. Functions with bigger bodies shoud be in the 10-15 range. 
Functions with pure math expressions should be in a 20-100 range.


Though, these are very rough early estimates I did on the base of 
a few micro-benchmarks.
Red is evaluated
 No, compiled. :-)
Steeve
22-Nov-2012
[4201]
why is kaj's script so slow then ?  ;-)
Kaj
22-Nov-2012
[4202]
No optimisations
Steeve
22-Nov-2012
[4203]
okay T_T
Pekr
22-Nov-2012
[4204]
Uh, what optimisations, Kaj? We are talking Red bing compiled to 
Red/System, so how comes, that the result is only 2 times faster 
than R3? I expected speed of nearly a R/S version. Something must 
be wrong, or Red would not make sense with such poor performance 
at all imo ...
Kaj
22-Nov-2012
[4205x2]
The fact that you're complaining means that the optimisations are 
missing, isn't it?
If Red doesn't make sense at all, then R3 doesn't make sense double 
at all
Pekr
22-Nov-2012
[4207]
Well, R3 is dynamic. We are supposed to give-up something in exchange 
in much bigger performance. And R/S gave us some rewards, being only 
some 4-5 times slower than C version? Now if Red is going to be orders 
of magnitude slower, I would be really disappointed ...
Kaj
22-Nov-2012
[4208]
You can get Red/System speed if you write in Red/System, not if you 
write Red
Pekr
22-Nov-2012
[4209]
Well, I thought, that Red code gets compiled/translated into R/S 
code, and that code is going to be translated into machine code :-)
DocKimbel
22-Nov-2012
[4210]
Red is a high-level language with high-level abstract types. Once 
we get optimizations, Kaj's example should run 5-10 faster than R3. 
For some high-level expressions that have low-level counterparts, 
it is possible to achieve very high gains (in the 10-100 range), 
for those that do not have low-level counterparts, you can only expect 
typical gains from moving from an interpreter to a compiler (on average 
5-10 faster).


Also, there is also a source of additional speed gains: the possible 
runtime optimizations enabled by the JIT-compiler.
Kaj
22-Nov-2012
[4211]
Yes, and that doesn't magically make it being programmed in machine 
code
DocKimbel
22-Nov-2012
[4212]
Pekr: high-level language have higher level semantics (materialized 
in the case of Red by the runtime code in %runtime/ folder), you 
can't expect all that "disappear by magic" when translated to native 
code. It is not in the domain of possible things. :-)
Steeve
22-Nov-2012
[4213]
to be exact R3 is 300-500 time slower than c compiled code in my 
last tests.
So at least Red should be at leatst 30-50 times faster than Rebol
DocKimbel
22-Nov-2012
[4214]
Those high-level layers are what makes Red able to accomplish all 
the things you like instead of being limited to a macro-assember 
level language (like C or Red/System).
Kaj
22-Nov-2012
[4215]
Steeve, I look forward to your Red fork that does that
Steeve
22-Nov-2012
[4216]
I forfeit
Kaj
22-Nov-2012
[4217]
Your own REBOL clone, then?
Steeve
22-Nov-2012
[4218]
it's the limit of the stack based compiler, simple to implement, 
slower than a registers based one
Kaj
22-Nov-2012
[4219]
Only partly
DocKimbel
22-Nov-2012
[4220]
Steeve, performances gains will depends on the kind of code you run. 
For micro-benchmarks (like loop 10'000'000 [tail? ""]), the target 
compiler should perform 5-10 faster than R3. For "normal apps", you 
should expect a 10-20 gain (very rough early estimates). For math 
intensive apps, you'll be able to go up to x100 speed gains.
Steeve
22-Nov-2012
[4221]
(Kaj, I'm trying to port a text editor to R3 currently, gobs are 
terrible and some times horrific)
DocKimbel
22-Nov-2012
[4222]
Steeve, it is not that simple (I wish it would). You forget to account 
for a lot of things like e.g., exceptions handling and the GC.
Steeve
22-Nov-2012
[4223]
yeah, I forgot
Pekr
22-Nov-2012
[4224]
Steeve - could you outline then, how would you change gobs in some 
other channel or wiki document. I e.g. don't want to support GTK 
or other bloatware yet, so it might be that I might sponsor View 
engine port, of course, being done eventually right. Gobs are definitely 
more optimised than Faces were though ...
Steeve
22-Nov-2012
[4225]
I wanted to say terrible, in the sense of nice