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

World: r3wp

[Red] Red language group

Dockimbel
13-Apr-2011
[1121x3]
Humm, looking at it a bit closer, it is not totally equivalent: the 
* and / operators will generate shifts only if the right argument 
is a literal integer. So: 
    a: 4
    123 * b
won't generate a shift.

So, I guess the conclusion would be: it is worth adding them. :-)
I'll consider adding these operators to the specifications after 
finishing my current debugging on ANY & ALL.
a: 4
    123 * b
should be:
    a: 4
    123 * a
PeterWood
13-Apr-2011
[1124]
Will  << and >> be needed in order to build the first version of 
Red?
Pavel
13-Apr-2011
[1125]
shift funcs are useful f.e. for checksums, securtity funcs etc. I 
thought the shift funcs will be produced using shift machine codes 
(i e single operation). Is there some kind of optimalization for 
multiply/delete by pow of 2? Also consider not to implement overflow 
for << (true shifting)
Dockimbel
13-Apr-2011
[1126]
Peter: strictly speaking, they are not needed because they can be 
emulated by math operations. However, on CPUs, the speed difference 
with true shifts is huge (one order of magnitude at least). I can't 
say yet how much shifts will be used in Red's runtime (mainly in 
memory manager) because in some cases, bitfield operators could be 
used instead.
PeterWood
13-Apr-2011
[1127x2]
I was wodering if you could perhaps live without them until the version 
of Red/System that will be built with Red.
wodering -> wondering
Dockimbel
13-Apr-2011
[1129x2]
Speedwise, certainly. But as the Red/System code that will be written 
for Red's runtime will stay, syntactic improvements are worth considering 
now.
It is a matter of writing, e.g.:
    123 >> 16
instead of:
    123 / 65536
PeterWood
13-Apr-2011
[1131x2]
It is certainly more readable.
I'll  guess that  the next request will be for an unsigned integer.
Dockimbel
13-Apr-2011
[1133]
BTW, Pavel is right about the overflow error checking (which is still 
pending for math ops in the current implementation), it is not required 
for shifts.
Pavel
13-Apr-2011
[1134]
Doc it would be very helpful to publish (maybe as picture) workflow 
thru respective modules (files) because for non expert it is quite 
difficult to see what is going on each module.
Dockimbel
13-Apr-2011
[1135]
You mean compilation workflow?
Pavel
13-Apr-2011
[1136]
yes and maybe light enlightment of design (ie metacode is created 
by compiler or linker?)
Dockimbel
13-Apr-2011
[1137x2]
metacode? If you mean the native code generation, it is done by the 
compiler.
I'll see if I can make a short description on how it is organized.
Pavel
13-Apr-2011
[1139]
and what linker cares about, glues together multiple compiled source 
files?
Dockimbel
13-Apr-2011
[1140x2]
Compiled source files are glued together by the compiler itself. 
The linker currently simply generates the right binary from compiled 
code, global data and external libs imports. The linker will be later 
extended to be able als to statically link external libraries.
als => also
Pavel
13-Apr-2011
[1142]
so emitter is only helper?
Dockimbel
13-Apr-2011
[1143]
Emitter module purpose is to isolate as much as possible target-specific 
code from the compiler. So, it provides target-independent helper 
functions to the compiler and for target-specific code, it loads 
one from  %targets/ folder.
Pavel
13-Apr-2011
[1144]
thx for description
Dockimbel
13-Apr-2011
[1145]
The emitter module API is used by the compiler only when it can provide 
an added value, else the compiler taps directly in the target-specific 
code through a target-independant API. In other words, a new target 
module needs to implement all the current target API (all the emit-* 
functions in %IA.r) to be able to work with the compiler.
Pekr
15-Apr-2011
[1146]
Doc - do you think we can get Red to the following page, or is it 
too preliminary?

http://en.wikipedia.org/wiki/List_of_programming_languages
GrahamC
15-Apr-2011
[1147]
somewhat premature .. it's not in use yet
Henrik
15-Apr-2011
[1148]
I agree.
Dockimbel
15-Apr-2011
[1149x2]
Probably too early.
Direct link to Red/System specifications draft changed, it is now 
available from: http://static.red-lang.org/red-system-specs.html
Pekr
18-Apr-2011
[1151]
I just visited the Haiku OS website, and I can see, that it was accepted 
for the Google summer of code 2011. Maybe once Red becomes an alpha, 
we could apply too? Let's say for 2012 :-)
Dockimbel
18-Apr-2011
[1152]
Google Summer of Code is a global program that offers student developers 
stipends to write code for various open source software projects
  I wouldn't qualify for the "student developer" part.
Kaj
18-Apr-2011
[1153x3]
No, you would qualify for the mentor part. So you'd have to find 
students willing to write open source Red code, and then you have 
to mentor them
It's very hard to get into SoC, beginning with the rush to register, 
and if you don't have the organisation to conduct the mentoring, 
or your project is too eccentric for students to get into quickly, 
it's fairly pointless
It's also questionable if the students will go on to maintain their 
code. The biggest advantage if you do get in is simply the marketing, 
because people suddenly think you're associated with Google
Maxim
18-Apr-2011
[1156]
(and google also gets to notice you a little)
Kaj
18-Apr-2011
[1157]
Yeah, so they can steal your ideas... I figure the cost is well worth 
it to them
Dockimbel
18-Apr-2011
[1158]
Kaj: thanks for the insights.
Maxim
19-Apr-2011
[1159x2]
Questions about the declarations.  

1-  why are you using this syntax for *all* declarations? : 
word: [datatype value] 

ex:
my-val: [integer! 20]

woudn't just this do ?:
my-val: integer! 20

I find its a hell of a lot easier to read,


and when you add type detection, its back to 

my-val: 20   


meaning that the integer! word really is just a typecast operation 
here.
since you are compiling and pre-filtering the source code, the integer! 
word really is contextual,  what it means is inherently bound to 
where its found.   so I see no issue with this use syntax.

anyone care to debunk me?  am I missing something?
Dockimbel
19-Apr-2011
[1161x3]
Where have you seen: my-val: [integer! 20] ?
word: [datatype value]  => I don't remember writing that in the specs? 
Maybe a typo?
Oh, I guess you're just refering to pointer! initialization?
Maxim
19-Apr-2011
[1164x2]
darn... I'm completely off.. yeah... I guess the old pointer documentation 
got me all mixed up.
Doc, I have to say, the red docs are getting really nice.


its clear now, and I was talking nonsense... I should have gone over 
them... will make sure to visit each time. they've significantly 
updated since last I visited.

I was just taking a little break from all of the cheyenne dev.
Dockimbel
19-Apr-2011
[1166]
they've significantly updated since last I visited

 You are too used to R3's monthly updates...it's Red here, it's updated 
 daily ;-)
Maxim
19-Apr-2011
[1167x2]
hehe
yeah, I forgot that Red lives in the same space-time continuum as 
the rest of us humans  ;-)
Dockimbel
19-Apr-2011
[1169x2]
If you have looked at Red sources since a long time (like a week 
;-)), you should look at the Quick-Test framework added yesterday 
by PeterWood: https://github.com/dockimbel/Red/tree/master/red-system/tests
(see the readme.txt)
have => haven't