World: r3wp
[Red] Red language group
older newer | first last |
BrianH 28-Feb-2011 [59] | And /local is special, not just another refinement? |
Dockimbel 28-Feb-2011 [60] | Yes, it's a reserved keyword. I planned to add refinement support also, but I'm not sure I will need it to implement Red runtime, so it will be probably postponed. |
Mchean 28-Feb-2011 [61] | how many attended the conference? |
Dockimbel 28-Feb-2011 [62] | We were 5, but it felt like 10 ;-) |
Mchean 28-Feb-2011 [63] | heh, well having actually had a conf i think you can use a 3x multiplier |
Dockimbel 28-Feb-2011 [64] | Brian: here's an example of /LOCAL usage from my Red/System tests scripts (just a variation on the real PRINT function): print: func [s [string!] return: [integer!] /local lf [string!] sz [integer!]][ lf: "^/" prin s sz: 1 WriteConsole stdout lf sz written 0 ] |
BrianH 28-Feb-2011 [65] | No tmp variables then :) |
Dockimbel 28-Feb-2011 [66] | Nope. |
Kaj 28-Feb-2011 [67] | Cool examples, Doc |
Dockimbel 28-Feb-2011 [68] | The real PRINT is defined as: print: func [s [string!]][ prin s prin "^/" ] |
BrianH 28-Feb-2011 [69x3] | Only string!, no binary!? |
I'm wondering about the Unicode strategy... | |
In Red/System, I mean. Of course Red will have both. | |
Dockimbel 28-Feb-2011 [72] | Binary! is half-supported. It was part of my initial list of type to support, but as I didn't needed it so far, it's not supported. That might change when I'll implement the lexical analyzer. |
BrianH 28-Feb-2011 [73] | Have you decided yet whether the lexical analyzer will have the same source-is-UTF8-binary strategy as R3? |
Dockimbel 28-Feb-2011 [74] | I plan to support UTF-8 scripts for both Red & Red/System. The memory storage model is not yet decided, could be UTF-8 or UCS-2. |
BrianH 28-Feb-2011 [75] | And arguments and locals can only have one type in their typespecs for Red/System? |
Dockimbel 28-Feb-2011 [76] | In fact, they can have several types as long as they take the same space in memory, but support for that has not yet been implemented. |
Andreas 28-Feb-2011 [77] | Do you currently compile the above directly to binary machine code? |
Dockimbel 28-Feb-2011 [78] | Yes, machine code, then generating an executable. |
Andreas 28-Feb-2011 [79] | ABI differences will probably give you the heebie-jeebies :) |
Dockimbel 28-Feb-2011 [80x2] | The whole compiler is 40KB, the linker is 20KB. |
I did the PE/COFF support, no other ABI can be so screwed up. :-) | |
Kaj 28-Feb-2011 [82] | Obviously, GCC is superior at 50 MB or so |
Andreas 28-Feb-2011 [83x2] | That is only the binary format :) |
I assume you currently do x86 stdcall only? | |
Dockimbel 28-Feb-2011 [85] | Yes, but the support for cdecl is like adding a couple of lines to the current code. |
Andreas 28-Feb-2011 [86] | Sure. But that quickly gets extremely annoying :) |
Dockimbel 28-Feb-2011 [87] | Red/System uses stdcall for its own functions, I found out that it was generating shorter code than cdecl. |
BrianH 28-Feb-2011 [88] | That's why stdcall was invented :) |
Andreas 28-Feb-2011 [89] | Or on x86, fastcall, rather :) |
Dockimbel 28-Feb-2011 [90x2] | The really annoying part was having to reverse the arguments list to support stdcall. It's a much more difficult when you're compiling in one pass directly to machine code. |
Fastcall, sure, that would be the target in a future version with an optimizing compiler. | |
BrianH 28-Feb-2011 [92] | Do string references in Red/System have indexes, or are they just pointers? |
Dockimbel 28-Feb-2011 [93] | They support indexed read/write accesses like in C, but using a REBOL syntax, so s/1, s/2, s/3... |
BrianH 28-Feb-2011 [94] | I meant offset references an internal pointer to the head and an offset index, like s: next s. |
Dockimbel 28-Feb-2011 [95x2] | Indexing with a variable should also be possible: s: "hello" c: 1 s/c or s/:c (haven't decided yet which one is the more appropriate) |
Nope, no indexes like in REBOL strings, that's too high-level for Red/System. | |
BrianH 28-Feb-2011 [97x2] | Going with the latter (s/:c) would be more compatible with REBOL and Red, and leave room for expanding Red/System's capabilities in the future. |
No offset references means no set-word syntax in FOREACH - good to know. | |
Kaj 28-Feb-2011 [99] | Agreed |
BrianH 28-Feb-2011 [100] | And no FORALL and FORSKIP. |
Dockimbel 28-Feb-2011 [101x2] | Perhaps, that's what I'm thinking too, but s/c looks more consistent with current Red/System abstraction level. |
I might add support for FOREACH for string! & binary! if this can make me avoid to add FOR. :-) | |
BrianH 28-Feb-2011 [103x2] | Things would be less confusing if Red/System and Red were compatible for corresponding concepts. This would also let you prototype Red/System code in Red. |
You would still need something like FOR if you don't have offset references, because FOREACH doesn't let you modify its argument without set-word syntax. | |
Dockimbel 28-Feb-2011 [105x2] | Well, I already have WHILE, so FOR is optional anyway, just syntactic sugar. I should add REPEAT too, if I still miss FOR after that, I'll add it. |
Enough for tonight, it's very late here. I just wanted to give you some taste of what Red/System would look like. I'll work on Cheyenne new release and new documentation tomorrow, I should be able to get back to Red after that. I hope to be able to put the current codebase on github during the weekend. | |
BrianH 28-Feb-2011 [107] | Good night! |
Dockimbel 28-Feb-2011 [108] | Thanks! |
older newer | first last |