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

World: r3wp

[Red] Red language group

Dockimbel
29-Jun-2011
[2599]
Good point.
Kaj
29-Jun-2011
[2600]
When floats are passed to C functions, can they be in normal registers 
or must they be in FPU registers?
Dockimbel
29-Jun-2011
[2601]
If the calling convention is cdecl, they are just pushed on stack.
Kaj
29-Jun-2011
[2602]
That seems like a nice shortcut, then
Dockimbel
29-Jun-2011
[2603x2]
That would only work for literal float values.
If you use a variable, you need to pass thru the registers.
Kaj
29-Jun-2011
[2605]
The FPU registers?
Dockimbel
29-Jun-2011
[2606x2]
In the float case, yes FPU registers.
IA32 32-bit registers can't hold C double floats (64-bit).
Kaj
29-Jun-2011
[2608x3]
I've started working on a cURL binding. It can print the cURL version 
now :-)
I could call it a port from the R3 binding, but it will be more like 
a rewrite
The dynamics in Red are quite different
Dockimbel
29-Jun-2011
[2611x4]
You mean in Red/System. Red does not exist yet.
I will improve the web site that make that difference more clear.
Red/System can hardly be compared to REBOL, they don't live at the 
same level of abstraction.
Great to know you are working on a new binding. Let me know when 
you will put it online, so I can add a link from red-lang.org.
Kaj
29-Jun-2011
[2615x2]
As long as Red proper doesn't exist, I use Red to refer to Red/System 
:-)
I'm careful not to do that in publications, though
Andreas
29-Jun-2011
[2617]
http://rebol.esperconsultancy.nl/Red-ZeroMQ-binding/doc/trunk/COPYRIGHT.txt
refers to Red :)
Kaj
29-Jun-2011
[2618]
Ah, yes, because it will be a binding for Red, even though the binding 
is written in Red/System
Andreas
29-Jun-2011
[2619]
Hmm, form me the AltME large font swallowed the "refers to Red :)" 
remark.
Kaj
29-Jun-2011
[2620x2]
Not on my screen size
Since R3 bindings are written in C, their level is comparable to 
a binding in Red/System. But the dynamics are quite different, that's 
what I meant
Andreas
29-Jun-2011
[2622]
looking forward to more weird bugs discovered by the curl binding 
:)
Kaj
29-Jun-2011
[2623x2]
I hope they were all shaken out with the other bindings :-)
Hm, a cURL progress callback needs floats. It's pretty limiting if 
you can't get progress feedback
Dockimbel
29-Jun-2011
[2625]
You should be able to pass 2 integers (if it's a 'double or just 
one if it's a 'single), then do the float->integer (by doing a * 
100 e.g.). Probably fun to code. :-)
Kaj
29-Jun-2011
[2626]
But you said they must be passed via the FPU?
Dockimbel
29-Jun-2011
[2627]
Right, if you want them in a variable. What I was proposing here 
is to split them from the stack by declaring 2 integers, so that 
the float gets stored in 2 arguments (supposing it is a double).
Kaj
29-Jun-2011
[2628]
If cdecl functions pass them on the stack, they may be shuffled between 
them
Dockimbel
29-Jun-2011
[2629]
The stack order for cdecl and stdcall (used by Red/System) is the 
same.
Oldes
29-Jun-2011
[2630]
Almost everything needs floats... better to wait for proper implementation.
Dockimbel
29-Jun-2011
[2631]
Well, it depends what are the boundaries of your "everything". From 
my own experience, except for 2D/3D and scientific calculations, 
they are rarely needed.
Oldes
29-Jun-2011
[2632x2]
Well, you need it for music and graphics. That's almost everything 
for me. I was checking the FMOD binding, and it's not so bad... at 
least if you don't need to change volume or some more advanced effects:)
Is this useful? http://en.wikibooks.org/wiki/X86_Disassembly/Floating_Point_Numbers
Andreas
29-Jun-2011
[2634]
It is another source to confirm that cdecl/stdcall both pass floating 
point arguments via the normal stack :)
Kaj
29-Jun-2011
[2635x3]
Got cURL to read a website and print it:
curl-begin curl-global-all
session: curl-new-session
curl-set session curl-set-upload?  as variant! no
curl-set session curl-set-url  as variant! "http://rebol.com"
curl-do session
curl-end-session session
curl-end
Not as concise as READ "http://rebol.com"but we'll get there
Kaj
30-Jun-2011
[2638x2]
Added a higher level interface that reduces that to
curl-begin
session: curl-new-session
curl-read session
curl-do session "http://rebol.com"
curl-end-session session
curl-end
NickA
30-Jun-2011
[2640]
Next: wxWidgets :)
Kaj
30-Jun-2011
[2641x4]
They say it's a man year work to port it
In any case, I'm not going to do it
But I can upload a file to FTP now
That's direct from disk, so large files can be uploaded without using 
much memory
GrahamC
1-Jul-2011
[2645]
Can you do multiple uploads concurrently?
Kaj
1-Jul-2011
[2646x3]
No, I can upload one file from disk exclusively. The binding is two 
days old
For multiple concurrent uploads before next week, use my R3 binding
Of course, if you use the 0MQ binding in combination with the cURL 
binding, you can do multiple concurrent uploads from disk only