World: r3wp
[Red] Red language group
older newer | first last |
Kaj 15-Mar-2011 [395x4] | So the 512 bytes binary pages (with seemingly 2048 bytes minimum) are a Windows thing? |
Here's the library package I needed to install for 0MQ: | |
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en | |
There are newer versions. I don't know if they would work. Maybe they're needed if someone compiled 0MQ on them | |
Dockimbel 15-Mar-2011 [399] | ELF seems to be a bit smarter about page loading, it doesn't require explicit padding to page boundaries in the file itself, so can generate smaller exe. (It's possible with PE too with some hacking). |
Kaj 15-Mar-2011 [400] | My client/server executables are 3 KB. That's two orders of magnitude smaller than REBOL. Who would have thought? |
Dockimbel 15-Mar-2011 [401x4] | New revision pushed online. |
:-) That's the good side of being closer to the metal. | |
Btw, the newer revision requires explicit calling convention to be added to imported DLL, see %red-system/runtime/win32.r | |
Windows DLL: stdcall C DLL: cdecl (or stdcall if that's the required convention) | |
Kaj 15-Mar-2011 [405] | Yes, thanks |
Dockimbel 15-Mar-2011 [406] | Btw, can't color the R letter in red in the Linux version, not sure it's possible at all to make ANSI sequences interpreted using only syscalls. |
Kaj 15-Mar-2011 [407x2] | Probably depends on the terminal definition the system is running under (which can vary wildly) |
Do you plan to implement #import for Linux soon? | |
Dockimbel 15-Mar-2011 [409x2] | Andreas is supposed to give it a try this week. |
OMQ: still getting the same error message, got at least 3 versions of Visual C++ 2008 redistribuable package (added the one from your link too). | |
Kaj 15-Mar-2011 [411] | Odd; must be something else |
Andreas 15-Mar-2011 [412] | very nice, doc. the ELF hello works like a charm here :) |
Dockimbel 15-Mar-2011 [413] | Goog to know. |
Andreas 15-Mar-2011 [414] | re the size of executables, for comparison: basic 0MQ examples ("hwserver/hwclient") written in C compiled & linked dynamically with GCC & gold on Linux are ~6KB in size. |
Kaj 15-Mar-2011 [415x3] | The 0MQ error code function is called zmq_errno. If the error message is about zmq_err0 it seems the name is being truncated somewhere on Windows |
This function differs in that it has no parameters, only a return value. Might have something to do with it | |
Actually, this name truncation is in the symbol table, so it's a bug in the Red code generator that doesn't disturb WINE if the function isn't called | |
Dockimbel 15-Mar-2011 [418] | Looking at the server.exe content, I see the zmq_err0 in the imported functions list. So it seems to be corrupted inside the executable. |
Kaj 15-Mar-2011 [419] | The name is garbled from zmq_errno to zmq_err0 |
Dockimbel 15-Mar-2011 [420x2] | I'm looking into the linker to find the cause. |
Found the issue: #define no 0 :-)) | |
Andreas 15-Mar-2011 [422] | heh, good catch :) |
Dockimbel 15-Mar-2011 [423] | The preprocessor is a bit too aggressive. |
Andreas 15-Mar-2011 [424x2] | is it case-sensitive? |
yes | |
Dockimbel 15-Mar-2011 [426] | yep |
Andreas 15-Mar-2011 [427] | so sticking to the C convention of ALL_CAPS_DEFINES is probably a good idea (at least for now) :) |
Dockimbel 15-Mar-2011 [428x2] | That would be safer, until we get a smarter one. |
I thought about adding a full macros system, I think it will be useful until we can compose Red/System code from Red itself. | |
Kaj 15-Mar-2011 [430] | Right, I ran into the preprocessor zeal before, and replaced some other values with variables |
Dockimbel 15-Mar-2011 [431x2] | Once that definition fixed in %ZeroMQ-binding.reds, I can compile working versions of client & server...testing...seems to work ok, the server is receiving a list of Hello messages from the client. :-) |
Congrats! | |
Kaj 15-Mar-2011 [433x2] | Thanks :-) |
Is the preprocessor necessary at all? It's usually much nicer to implement this functionality at a more integrated level in a language | |
Dockimbel 15-Mar-2011 [435] | I'm thinking about descending it one level below to process the script at block! level instead of string! level, after all, the compiler has the full power of REBOL. |
Kaj 15-Mar-2011 [436] | Yes |
Dockimbel 15-Mar-2011 [437] | That should avoid the nasty side-effects. |
Kaj 15-Mar-2011 [438] | With the Linux backend, did the system loose its ability to cross-compile to Windows? |
Dockimbel 15-Mar-2011 [439x2] | Nope, I just need to adjust the compiler front-end (rsc.r) to pass an option for the desired format (PE, ELF, ...). |
Currently, a default format is applied depending on the REBOL binary used. | |
BrianH 15-Mar-2011 [441x2] | You can compose Red/System from REBOL in lieu of a preprocessor, until the compiler is ported to Red. |
I mean in lieu of preprocessor macros | |
Dockimbel 15-Mar-2011 [443x2] | Do you mean replacing .reds scripts by .r scripts? |
Kaj: if you want to cross-compile, you currently need to hardcode the target format in %compiler.r at: fmt: select [ ;TBD: allow cross-compilation! 3 'PE ;-- Windows 4 'ELF ;-- Linux 5 'Mach-o ;-- Mac OS X ] system/version/4 | |
older newer | first last |