World: r3wp
[Red] Red language group
older newer | first last |
Kaj 13-Jul-2011 [2760] | Very nice :-) |
Gregg 14-Jul-2011 [2761] | Very nice indeed. In GET-KEY, should 'cc be local? |
Geomol 15-Jul-2011 [2762] | About calling functions in shared libraries and calling conventions, there seem to be differences between CPUs and compilers across operating systems. There's a lib, called libffi, to help with this, and it has bee widely ported. http://en.wikipedia.org/wiki/Libffi Why isn't a lib like libffi used in Red? Is it because of overhead, making it slower? Or maybe using such a lib makes little sense the way Red is implemented? When looking at the host-kit for R3, I see functions to open, close and find functions in DLLs, but I don't see the calling of those functions. Shouldn't that be part of the host kit? |
Gabriele 15-Jul-2011 [2763] | I don't see the calling of those functions - the C compiler handles that. |
Geomol 15-Jul-2011 [2764] | As I understand it, it's about fetching and calling functions at runtime, not compile time, so is that really the case? |
Dockimbel 15-Jul-2011 [2765] | Red/System relies on shared libraries dynamic linking at load time. CPU and ABI specific calling conventions are handled by respectively Red's target emitters and file emitters. I don't see how libffi could make it simpler or better. From what I understand from FFI (very short) descriptions, it is more suitable for high-level languages that can't or don't want to deal with low-level interfaces. |
Geomol 15-Jul-2011 [2766x2] | Ok, it's probably because I don't understand Red completely. At "load time", is that when the system starts up? (Maybe comparable to compile time.) FFI is, as I understand it, a way for high-level languages like Python, Ruby, Rebol, etc., to load a library at runtime and call its functions. Like we do in R2 with load/library and then some make routine! and finally call the functions. |
(Actually FFI just handle the calling conventions, you have to load the libraries yourself with e.g. dlopen, dlsym, dlclose (POSIX) or LoadLibrary, GetProcAddress, FreeLibrary (Win32).) | |
Dockimbel 15-Jul-2011 [2768] | Load time = Red executable load time. The OS does the job of binding the required shared library and making their functions available to Red/System programs. |
Geomol 15-Jul-2011 [2769] | So, when Red is running, you don't have functions to load another library and use its functions? |
Dockimbel 15-Jul-2011 [2770] | Not for now. In most use cases, binding at load time is enough. |
Geomol 15-Jul-2011 [2771] | ok, I think, I get it now. Thanks! |
Steeve 15-Jul-2011 [2772] | Do Red handles block data-type so far ? |
PeterWood 15-Jul-2011 [2773] | Red/System does not have a block datatype. |
Steeve 15-Jul-2011 [2774] | Will it ? |
PeterWood 15-Jul-2011 [2775] | I'm pretty sure that Red will have a block datatype, not so sure about Red/System |
Kaj 15-Jul-2011 [2776x2] | I guess there will be a way to access Red blocks from Red/System. Until then, you can implement your own |
I'm about to for cURL, to receive an unknown quantity of data into memory | |
Dockimbel 15-Jul-2011 [2778] | Red/System will not have high-level datatypes, but will be able to use the low-level methods of Red's datatypes if required (mainly for supporting Red). Anyway, Red/System is not meant to use those "boxed" datatypes, only low-level and close to the CPU types. |
Gabriele 16-Jul-2011 [2779x2] | Geomol, this is an example in C: #include <stdlib.h> #include <stdio.h> #include <dlfcn.h> int main(int argc, char **argv) { void *handle; double (*cosine)(double); char *error; handle = dlopen ("/lib/libm.so.6", RTLD_LAZY); if (!handle) { fputs (dlerror(), stderr); exit(1); } cosine = dlsym(handle, "cos"); if ((error = dlerror()) != NULL) { fputs(error, stderr); exit(1); } printf ("%f\n", (*cosine)(2.0)); dlclose(handle); } |
who generates the appropriate assembly code for the (*cosine)(2.0) call? The C compiler. | |
Geomol 16-Jul-2011 [2781x2] | Yes, but we're talking doing that in a high-level interpreted language, like Python, Ruby, Rebol, etc. |
In a situation, where you don't know the function at compile time. | |
Gabriele 16-Jul-2011 [2783] | R3 does not have such ability, so I'm confused by your "When looking at the host-kit for R3, I see functions to open, close and find functions in DLLs, but I don't see the calling of those functions." |
Geomol 16-Jul-2011 [2784x2] | Ok, I thought, R3 had that ability and used those open/close functions to do it. |
The code is in R2, but out of reach. | |
Andreas 16-Jul-2011 [2786] | R3 uses dlopen/dlsym/dlclose to load R3 extensions, which have a clearly defined exposed API (RX_Init, RX_Call). |
Dockimbel 17-Jul-2011 [2787] | Mac OS X now fully supported: http://www.red-lang.org/2011/07/mac-os-x-port-released.html |
Oldes 17-Jul-2011 [2788] | Nice, but the original "hello" demo was with red color:) |
Dockimbel 17-Jul-2011 [2789x3] | Well, if someone could bring color (using ANSI codes?) to the Mac and Linux version, that would be nice! :-) |
Ok, I have added the red color to Mac and Linux platforms...updating the screenshots now ;-) | |
Looks much better now. :-) | |
Oldes 17-Jul-2011 [2792] | I don't have Linux nor Mac at this moment... are you using just string like "^[[31mRED^[[0m" ? |
Dockimbel 17-Jul-2011 [2793] | Yes, have a look at the hello.reds source code: https://github.com/dockimbel/Red/blob/master/red-system/tests/hello.reds |
Kaj 17-Jul-2011 [2794] | You're too good for us :-) |
Oldes 17-Jul-2011 [2795] | I like colors... I'm looking forward to see colorized console one day:) |
Dockimbel 19-Jul-2011 [2796] | Implemented support for argc, argv and env for UNIX platforms, will publish it tomorrow when Windows support will be ready too. |
Kaj 19-Jul-2011 [2797x2] | Cool, thanks! |
That enables another large class of programs | |
Endo 20-Jul-2011 [2799] | great! now it's getting more useful. |
Dockimbel 20-Jul-2011 [2800x2] | Command line arguments access now available: http://groups.google.com/group/red-lang/browse_thread/thread/4b8cb7a5a49308ba?hl=en |
Tested ok on all OS (including Syllable). | |
Kaj 20-Jul-2011 [2802] | Great, I was just looking over it, and couldn't see anything wrong yet |
Dockimbel 20-Jul-2011 [2803] | In my first release, I wrongly read ESP data instead of [ESP] for Syllable. |
Kaj 20-Jul-2011 [2804] | Ah, the detail devil :-) |
Dockimbel 20-Jul-2011 [2805] | I once offered a little glowing "code protecting" angel statue to one of my developers. It was supposed to keep devil out of your code if you kept it close to your screen. Can't find it online anymore, maybe that would help...:-) |
Kaj 20-Jul-2011 [2806] | :-) |
Dockimbel 21-Jul-2011 [2807] | New Red/System document is available: BNF language grammar description (by Rudolf W. Meijer) http://static.red-lang.org/A_BNF_grammar_of_Red_System.pdf |
Gregg 29-Jul-2011 [2808] | Very cool Doc (and Rudolf). |
Kaj 29-Jul-2011 [2809] | I've cleaned up my cURL binding enough to put it in a repository: |
older newer | first last |