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

World: r4wp

[#Red] Red language group

DocKimbel
12-Mar-2012
[276]
Release v0.2.5 is out: http://www.red-lang.org/2012/03/redsystem-v025-released.html
Kaj
12-Mar-2012
[277x5]
I've tested almost all binding examples on Syllable and Linux
I've changed the developing branch of the C library binding to be 
the main branch again (technically, it isn't a merge):
http://red.esperconsultancy.nl/Red-C-library/timeline
Could it be that when a function is applied to multiple argument 
expressions, f exp1 exp2, they are computed in reverse order?
Is that acceptable? It's quite anti-intuitive, especially once inline 
assignments will be supported
Steeve
12-Mar-2012
[282x3]
Anti-intuitive ? It makes the generated code simpler to write since 
the parameters are pushed in reversal order so that the called function 
can unstack them in order.
C compilers do the same IIRC.
But I agree it's not rebol compliant.
I'm not sure if C forces any order for parameters evaluation.

But i'm sure it makes the compiler's task easier to evaluate in reversal.
I know you already know Kaj, but it sounded like you asked for logic 
:-)
DocKimbel
13-Mar-2012
[285x2]
Could it be that when a function is applied to multiple argument 
expressions, f exp1 exp2, they are computed in reverse order?


I agree that it is not intuitive, but doing otherwise would make 
it more complicated to support external libs. It could be possible 
to preallocate the stack and fill it in reverse order, so that arguments 
are executed in right order for the user, but that wouldn't work 
for variadic functions (can't preallocate the stack before compiling 
all the arguments).


It would be nice to add a ticket in the tracker to keep this issue 
in mind.
As we do the compilation and code generation in one pass in current 
Red/System, we can't look ahead to determine the boundaries of each 
expression in a variadic block of arguments in advance, to be able 
to extract their datatype.
Kaj
13-Mar-2012
[287x4]
OK. It got me in trouble, though, because I used this statement in 
the Fibonacci computation:
print [
	"Fibonacci " parameter ": " fibonacci parameter  newline
	"Elapsed time: " subtract-time  now-time none  start  newline
	"Process time: "
		(to-float form-integer process-time) /
		to-float form-integer clocks-per-second  newline
]
In the C version I already noticed that I had to put the computation 
in front of the reporting, but I hadn't expected this, and certainly 
not in a language that looks like REBOL
Actually, the single pass nature of Red/System strengthened my assumption 
that the computation would be in natural order
DocKimbel
13-Mar-2012
[291]
We have a "chunked" compilation mode that could be used to re-order 
the code once generated, but I'm not sure it could work in such case. 
The best thing to do for now is to document it in the tracker.
Kaj
13-Mar-2012
[292]
Done
DocKimbel
13-Mar-2012
[293]
Thanks.
Pekr
14-Mar-2012
[294]
Doc - congrats to 0.2.5 release - nice to hear, that first alpha 
of Red can be here in few weeks, although it will not do much yet 
...
GrahamC
14-Mar-2012
[295]
First alpha of Red in a few weeks?  Sounds great!
Pekr
14-Mar-2012
[296]
that's what Doc replied on his blog:


@Thomas: for the very first Red alpha, only memory management, basic 
datatypes and a few natives/actions. Ports and I/O will probably 
be added in following alpha versions, as PARSE. If we don't hit any 
walls, we should have it a few weeks, probably a month.
Kaj
14-Mar-2012
[297]
The first Red will probably have all the capabilities of Red/System, 
so I think it will be able to do quite a lot
Henrik
14-Mar-2012
[298]
Exciting news
Kaj
14-Mar-2012
[299]
http://development.syllable.org/news/2012-03-14-20-30-RedSystem-bindings-with-C-cURL-SDL-SQLite.html
Pekr
14-Mar-2012
[300]
Nice. Wil you push to OSNews? :-)
Kaj
14-Mar-2012
[301]
Already done
Pekr
14-Mar-2012
[302]
Maybe apart to C lib, you might mention in one sentence, that other 
big change for Red/S was addition of float support ...
Kaj
14-Mar-2012
[303]
It's in there
Pekr
16-Mar-2012
[304]
Implementing basic features for block! datatype support.
. RED - finally :-) How Btiffin says - go Doc, go! :-)
Nicolas
26-Mar-2012
[305]
Does anyone know how to change a float into an integer or round a 
float to its nearest integer counterpart?
Pekr
27-Mar-2012
[306]
dunno, maybe via type casting? as integer! ... but not sure if it 
works for floats, or only pointers ...

http://static.red-lang.org/red-system-specs.html#section-4.9
PeterWood
27-Mar-2012
[307]
The current partilal support for float does not support casting between 
float and integer datatypes
Pekr
27-Mar-2012
[308]
It seems float to integer is not allowed. Maybe some library call 
wrappers will be needed for that?
DocKimbel
27-Mar-2012
[309]
Support for converting between integer! and float!/float32! has not 
been implemented yet. The only way to achieve it right now is to 
rely on an external lib (libc?) or implement your own conversion 
routine in Red/System.
Kaj
27-Mar-2012
[310]
Yes, the C library binding can do that
DocKimbel
27-Mar-2012
[311]
FYI, I am making good progress on the Red runtime, but I had to start 
implementing the Red compiler earlier than planned, to be able to 
define more accurately the right runtime API that the compiler needs. 
So at the time that the runtime will be ready, I should have a first 
Red compiler partial implementation working.
Kaj
27-Mar-2012
[312x3]
Sounds logical to me
round-ceiling and round-floor in math.reds do rounding to integer, 
but they still return a float value
To convert to an integer value, you have to go through strings. You 
can use the format function in C-library.reds for that, but I see 
I haven't defined a shorter float wrapper yet
Pekr
27-Mar-2012
[315]
Doc - we are watching your progress via the Twitter messages, and 
looking into Github :-)
Kaj
27-Mar-2012
[316x6]
I've added some floating point convenience wrappers matching the 
other data types
This should work for conversion:
to-integer form-float
Note that the string returned by form-float should be freed
The other way around is already used in my Fibonacci and Mandelbrot 
time processing:
to-float form-integer
Andreas
27-Mar-2012
[322]
On Linux, you could also avoid going through strings and use lrint(3)/lrintf(3).
Kaj
27-Mar-2012
[323]
Is that GLibC specific?
Andreas
27-Mar-2012
[324]
ISO C 99
Kaj
27-Mar-2012
[325]
OK, that could be considered as a binding enhancement, then