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

World: r4wp

[#Red] Red language group

DocKimbel
9-Mar-2013
[6118x2]
red>> a: %dev
== %dev
red>> type? a
== file!
red>> length? a
== 3
red>> append a %/red/hello.red
== %dev/red/hello.red
red>> length? a
== 17
red>> find a slash
== %/red/hello.red
red>> index? find a slash
== 4
red>> form a
== "dev/red/hello.red"
red>> mold a
== "%dev/red/hello.red"
red>> a/1
== #"d"
red>> last a
== #"d"
red>> a/5: #"R"
== #"R"
red>> a
== %dev/Red/hello.red
I will add compiler support later today.
Gregg
9-Mar-2013
[6120]
Very cool Doc!
DocKimbel
9-Mar-2013
[6121]
I'm counting 27 datatypes implemented so far in Red. The next on 
the list will be: typeset!, errror!, object!, port!, binary!. Although, 
I'm not sure in which precise order they will be added (especially 
for error! and object!, not sure which one I'll do first).


For other datatypes, like float!, date! and time!, which are not 
a requirement for building Red core itself, I would like them to 
be contributed if possible. I could provide a sample empty datatype 
file and instructions on how to use Red's current internal API to 
anyone willing to work on them.
Pekr
9-Mar-2013
[6122x2]
image! :-)
vector!
DocKimbel
9-Mar-2013
[6124x3]
Vector! is a bit tricky and I might use it for parallel processing, 
so I will probably implement it myself.
Image! could be contributed too (would require loader and savers 
do be also added).
Image! should be built as an add-on module, that you choose to import 
in your app.
Pekr
9-Mar-2013
[6127x2]
IIRC, vector! and range! were not even precisely defined for R3, 
so those two might use some discussions between our two projects 
...
I don't want to import anything :-)
DocKimbel
9-Mar-2013
[6129x2]
Pekr: think SDK! :-)
But don't worry, you'll have your fat single all-in-one binary too. 
;-)
Pekr
9-Mar-2013
[6131x2]
well, OK - so I might built full-contained Red executable with all 
stuff which I need?
The thing is, if I will have to use import, or not - how that module/component 
system will work. Btw - what were technically R2 components? We could 
see them in system structure ....
DocKimbel
9-Mar-2013
[6133]
Yes, you'll be able to just build your fat binary/interpreter yourself 
including whatever module you want.
Pekr
9-Mar-2013
[6134]
ok I am fine with that then ....
DocKimbel
9-Mar-2013
[6135x2]
That is precisely what Kaj has done with his console-pro binary, 
including several of his own bindings.
Don't ask me details on the module/component yet, I haven't decided 
on the best approach. I just know that I want it to be as simple 
as possible.
Pekr
9-Mar-2013
[6137]
Doc, will we have anything like R3 environment stuff - e.g. delayed 
loading/bootstraping, some debug stuff, being able to trace memory, 
time of running app, etc?
DocKimbel
9-Mar-2013
[6138]
You'll have much more sophisticate debugging tools in the Red IDE. 
;-)
Pekr
9-Mar-2013
[6139x2]
I agree - R3 modules have to prove themselves first - we live way 
too long without them, most users are used to contexts ....
Well - IDE is IDE, I mean - the runtime stuff. Simply put (and most 
probably worrying unnecessarily and sounding like a broken machine), 
let's make R3/Red another Amiga like OS :)
DocKimbel
9-Mar-2013
[6141]
You'll have some of the debugging features accessible from the console.
Gregg
9-Mar-2013
[6142]
Having an outline for implementing types will be great. I have looked 
at the current code, and they are laid out very clearly, but notes 
on how the slots work, so implementers don't assume something that's 
incorrect would help. And also how best to leverage work in similar 
types.
Kaj
9-Mar-2013
[6143x2]
Doc, will you implement this, too?
red>> b: %x
== %x
red>> b/y
== none
BrianH
9-Mar-2013
[6145x4]
No flooding or trying to prove anyone wrong. I'm happy to see improvements 
and progress in Red's development. There is no Red-vs-R3, we're all 
in this together.
There are some things in R3, particularly some of the things that 
the module system can do, that probably won't make sense to do in 
Red because it's compiled. Delay-loading modules won't be as important 
for Red because most of the overhead of creating a module can be 
done ahead of time when it's compiled. It would make sense to support 
the delaying feature because you might want to have a module's side 
effects happen at a particular time, but the delay can happen a lot 
later in the process than it would in R3. Red might benefit from 
the options specification method and some other aspects of its surface 
API and behavioral model, but the implementation would be completely 
different. The restrictions we made to make the module system statically 
resolvable (in R3's case by a preprocessor like prebol or Ladislav's 
include) would be a lot more important for Red than they have been 
so far for R3, because compilation makes static resolution more important.
In many ways, R3's module system design is even more beneficial for 
a language like Red than it is for R3 itself. Actually, that was 
one of the things I was taking into account when we were thinking 
it through. Back before Red was announced I was thinking about putting 
a JIT compiler into R3, and R3's extensions are similar in some ways 
to what modules would be in a Red-like language. So R3's module system 
was basically designed with Red in mind.
In order for R3 to get the full benefit of its module system, Ladislav's 
include and Saphiron's encapper would have to be enhanced to use 
and process them. Red can get the benefit from day one just because 
it's compiled.
Kaj
9-Mar-2013
[6149]
red>> {}
*** Load Error: string ending delimiter } not found!
== {}}
DocKimbel
9-Mar-2013
[6150x2]
Error fixed.
About the path composition for files, I might give it a try tomorrow.
Kaj
9-Mar-2013
[6152]
red>> ""
*** Load Error: string ending delimiter not found!
== """
DocKimbel
9-Mar-2013
[6153]
Sounds like we really need LOAD regression tests if we want to finish 
this...
Kaj
9-Mar-2013
[6154x2]
Yep. Another one:
red>> view [{}]
Box: skipping unknown dialect word "{".
Box: skipping unknown dialect word "}".
BrianH
9-Mar-2013
[6156x2]
It's on my todo list to do more LOAD tests for R3. You can use those 
then, at least as a start.
Unfortunately they won't happen today.
DocKimbel
9-Mar-2013
[6158x2]
I need to port them to Quick-Test anyway.
BTW, I have no clue where the R3 tests are located online?
BrianH
9-Mar-2013
[6160]
https://github.com/rebolsource/rebol-test
DocKimbel
9-Mar-2013
[6161]
Thanks.
Kaj
9-Mar-2013
[6162x2]
file! is suddenly broken:
red>> print %x
unset
BrianH
9-Mar-2013
[6164]
Those tests manage to be unified between R2 and R3 by tagging the 
ones that aren't. A #red tag could be added...
DocKimbel
9-Mar-2013
[6165x2]
Works here.
Where do I find LOAD tests? There are only these ones: https://github.com/rebolsource/rebol-test/blob/master/load-tests.txt
Kaj
9-Mar-2013
[6167]
Fresh build, on Linux