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

World: r4wp

[#Red] Red language group

DocKimbel
20-Nov-2012
[4134x3]
Jerry: command!, end!, frame! and rebcode! are very unlikely to be 
adopted in Red. Also following will probably not be part of Red too 
(or not in a near future): event!, gob!, handle!. Meaning of decimal! 
will most probably be changed, float! or real! will be used instead. 
Money! will receive a different treatment than in REBOL (number of 
digits after comma will probably be adjustable).


Also, expect the return of hash! in Red, and new datatypes that do 
not exists in REBOL.

As you can see, it is not a 1-1 matching between Red and R3.
Routine! will also probably be back in Red.
I agree with Peter, you can't measure Red's progress by taking R3 
as a target goal. It is better and more accurate to measure progress 
by counting what is built in Red.
Kaj
20-Nov-2012
[4137x4]
struct! doesn't work in R3
task! seems to work half or so
As far as I know, utype! doesn't work
rebcode! is not implemented in R3
Pekr
20-Nov-2012
[4141]
Doc - interesting - I know you have no intention to port View, but 
what about other types of events? Will not be there an event type? 
I want my wait-list with various events - networking, serial port, 
whatever :-)
BrianH
20-Nov-2012
[4142x2]
Kaj, rebcode! isn't really in R2 anymore either. But the mechanism 
that was used to make rebcode fast in R2 has been implemented in 
R3, and it used by the R3-GUI dialect. Anyone could implement their 
own rebcode if they like, even with improvements. That mechanism 
would be worth supporting in Red.
Hopefully less buggy too. The rebcode dialect caused a lot of crashes 
and security holes, which is why it was removed. The new mechanism 
doesn't have that problem.
DocKimbel
20-Nov-2012
[4144]
Petr, I haven't decided yet how events will be presented to user, 
there are different possible options and the choice will depend on 
the implementation constraints. Once we have the I/O + tasking implemented, 
we'll see what interface is the best for exposing events to user.
BrianH
20-Nov-2012
[4145x4]
Too bad about command!, that function type is the best one for pluggable 
JIT compiled function models. There are other advantages too.
Let's not rehash the hybrid extension conversation though :)
For handle!, what type are you using to be an opaque pointer-sized 
type that all pointer operations are prohibited on? Can such a thing 
be typedefed?
If you had an ability to create an opaque value of any size that 
will fit in a value slot, or maybe just limited to pointer size, 
only accessible from Red/system code, that would be a good replacement 
for handle!.
DocKimbel
20-Nov-2012
[4149]
I haven't decided on that yet. I need to implement first the type 
marshalling interface between Red and Red/System and see then, what 
is the best option.
Kaj
20-Nov-2012
[4150]
Interesting info, Brian. However, I wonder what rebcode! would be 
needed for when you can inline Red/System
BrianH
20-Nov-2012
[4151]
The advantage to rebcode isn't that it's fast, it's that its semantic 
model is similar to assembler. That makes it useful for a lot of 
interesting problems. Also, there might be times when you don't want 
to allow Red/System to be inlined - it's basically the same as unsafe 
code in C#, with the same security characteristics.
Kaj
20-Nov-2012
[4152]
Yes, but RebCode is aimed at an interpreter. In Red we can make any 
safe dialect we want that compiles to Red and/or Red/System
BrianH
20-Nov-2012
[4153x3]
If Red's compiler is implemented well, there shouldn't be any reason 
that it would be slower than the equivalent Red/System code. Red/System 
is just less safe.
In Red, there might be an advantage to making a compiled rebcode 
equivalent (but without the stability and security bugs). Unlike 
REBOL (ignoring the debate), rebcode is inherently compilable. It 
wasn't designed to be interpreted the way REBOL was. It just had 
a fast interpreter implementation, which has been adapted to other 
dialects in R3.
Right, found it, the DO-COMMANDS function. That is what implements 
the rebcode interpreter model. And it's another reason to have a 
command! type.
Kaj
20-Nov-2012
[4156]
Sure, but Red and Red/System are also inherently compilable. I think 
there's very little advantage left in a virtual assembly dialect
Andreas
20-Nov-2012
[4157]
Inherently compilable

 alone still leaves open a wide range of design possibilities. "Redcode" 
 could still explore design spaces opened up by a quite reduced source 
 language.
Kaj
20-Nov-2012
[4158]
I guess the intermediate format in Red/System 2 will get you that
Andreas
20-Nov-2012
[4159]
Yes, possibly.
Kaj
20-Nov-2012
[4160]
Inline that, and presto: RedCode
Pekr
20-Nov-2012
[4161]
BrianH: is the command! dispatch interface the same as DELECT?
Kaj
20-Nov-2012
[4162]
DELECT takes a dialect that prepares the commands
Gregg
20-Nov-2012
[4163]
Doc, regarding decimal!, do you mean the implementation will be different, 
or are you planning to use float! or real! as the datatype name?
DocKimbel
20-Nov-2012
[4164]
The latter. I would like to keep decimal! name for a new BCD datatype.
Arnold
20-Nov-2012
[4165]
I want to compliment you on the speed of development of Red! It is 
truly amazing. Keep up the good work.
Is this news also worth mentioning on the red-lang.org website?
DocKimbel
20-Nov-2012
[4166x2]
Thanks Arnold. Not yet, I will make a 0.3.1 release for that, but 
it needs a few more days to stabilize.
FYI, I have started working on EXIT and RETURN implementation. It 
will probably take a day to design and implement them correctly. 
In the meantime, feel free to push issues with Red functions on the 
bugtracker.
Pekr
20-Nov-2012
[4168]
Haven't read commints, so sorry if already answered - will there 
be a FUNCT equivalent, allowing to use local words only?
BrianH
20-Nov-2012
[4169]
FUNCTION. It's mentioned here: https://github.com/dockimbel/Red/commit/cc5c8dcb839572bb25559f964ed7d30419cb5a31
Gregg
20-Nov-2012
[4170]
Thanks Doc. I support the idea of decimal! as the BCD type.
Pekr
21-Nov-2012
[4171]
Doc, I can see Rudolf being pretty active with testing Red, Red/System? 
Nice, I thought we have lost him when R3 went into a non-development 
mode ....
DocKimbel
21-Nov-2012
[4172]
He showed up again shorter after Red first alpha release. He's working 
on updating the BNF grammar of Red/System to add namespaces.
kensingleton
21-Nov-2012
[4173]
No gob! Does this mean no GUI or just gui done in different way?
Kaj
21-Nov-2012
[4174x2]
There are GTK+ and SDL bindings. There will be bindings to native 
GUIs in the future (I consider GTK to be the most native binding 
for Linux and BSD systems)
They're for Red/System for now, not connected to Red yet
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 ?