World: r3wp
[Red] Red language group
older newer | first last |
Kaj 18-Jun-2011 [2159x7] | Doc, thanks for the link; that's informative |
I've updated both my C library binding and my 0MQ binding to work with the latest Red | |
A lot of changes were needed, most of them for the stricter checking | |
Callbacks can now be passed to imported functions with fully defined specs. However, function specs can not be defined as the return value of an imported function: | |
on-signal: "signal" [ ; Register handlers for receiving system signals. signal [integer!] handler [function! [signal [integer!]]] ; Flag or callback ; return: [function! [signal [integer!]]] return: [handle!] ] | |
Also, callbacks can't be passed as such to native functions. In some cases they can still be passed as unspecified handles, but those can't be cast to callback functions. I have a wrapper for atexit() that is now impossible to define: | |
on-quit: func [ ; Register handler for normal program termination. ; handler [function! []] ; Callback handler [handle!] ; Callback return: [logic!] ][ not as-logic _on-quit handler ] | |
jocko 19-Jun-2011 [2166] | Doc, thanks for yor answers |
Dockimbel 19-Jun-2011 [2167x4] | Kaj: function! is just a pseudo-type (not a first-class type) that was introduced just to be able to verify callback signatures when passed to an external library. |
I will have a look today on your issue and see if allowing function! to be passed as argument and returned as value is safe and side-effect free in the current state of the implementation. | |
Kaj: on Windows, it is possible to use _get_osfhandle() to retrieve the file handle for stdin/out/err (http://msdn.microsoft.com/en-us/library/ks2530z6.aspx) | |
I can't find an equivalent in UNIX world. | |
Kaj 19-Jun-2011 [2171] | I know, you have to import it as a symbol as far as I can see |
Dockimbel 20-Jun-2011 [2172] | Kaj: you have now a polymorphic NULL for all pointers (struct, pointer, c-string) and a new pointer! [byte!] type. byte-ptr! has been redefined to pointer! [byte!] instead of c-string!. |
Oldes 20-Jun-2011 [2173] | Is it possible to specify a build target per file? If I don't want to use %builds/ folder, but for example %builds/project/ and specify it in the project.reds file header. |
Dockimbel 20-Jun-2011 [2174] | Not yet, but Andreas should add it soon. Taking the output path/name from script header is a good idea. |
Oldes 20-Jun-2011 [2175] | Cool... I'm able to obtain image size from red using iMagick |
Dockimbel 20-Jun-2011 [2176] | Nice, let us know if you hit any issue. |
Oldes 20-Jun-2011 [2177x5] | the main issue is that I had to find out, how to print integers:) Kaj's C-library is not working on windows. |
*** Compilation Error: multiple type casting not allowed *** in file: %runtime/../library/C-library.reds *** in function: temporary-name *** at: [as c-string! null] | |
here is a fix: | |
-- _temporary-name as-c-string none ++ _temporary-name none | |
for a real work with iMagick, the decimal numbers are required. | |
Dockimbel 20-Jun-2011 [2182x2] | Kaj has not yet updated the C library binding to the latest Red/System version. |
Float support will either be added at Red level or at Red/System level, depending on how the Red compiler will be built. | |
Kaj 20-Jun-2011 [2184x4] | A bit hard to update my binding to a Red version that is released while I sleep, but I will have a look |
By the way, my C binding was developed for Windows so far, and the only thing I've really used it for is printing integers :-) | |
I've just tested it for the the first time on Linux last night, and printing worked there, as well | |
The new pointers sound good, Doc | |
Dockimbel 20-Jun-2011 [2188x3] | Glad you like it. |
Kaj: sorry if my sentence sounded bad, I was just trying to be informative. That is a typical case of impedance mismatch between a thought and how it ends up being written. :-) | |
Btw, about function! extended support: after making a few tests in the compiler to extend it, I can't support it for argument passing and as return value for native functions without making function! type fully first class. The changes required for that are too deep and too numerous to be made now. | |
Kaj 20-Jun-2011 [2191x8] | No problem, I know all about it :-) |
I've left the alternative function! uses commented out in my code, so they'll be there awaiting a future version | |
Updated the C and 0MQ bindings to the latest changes | |
Jocko, input-line works on Linux. I'll test it on WINE later tonight | |
When I compile this: | |
either as-logic 0 [ no ][ yes ] | |
I get | |
Compiling /users/administrator/Red/test.reds ... *** Compiler Internal Error: Script Error : Invalid path value: 1 *** Where: comp-either *** Near: [emitter/branch/over/adjust/on c-true negate offset expr/1] | |
Dockimbel 20-Jun-2011 [2199] | Weird error... |
Kaj 20-Jun-2011 [2200] | Yeah |
Dockimbel 20-Jun-2011 [2201x2] | Oh I see what's wrong, let me fix that |
Fix pushed. | |
Kaj 20-Jun-2011 [2203] | Thanks! Good turnaround again :-) |
Dockimbel 20-Jun-2011 [2204] | Took me some time, had to run all the tests suite several times, refactor the code and find a meaningful commit log message. ;-) |
Kaj 20-Jun-2011 [2205x4] | :-) |
Jocko, input-line works both on WINE and on Linux, so I have no reason to believe it wouldn't work on Windows. What is your code that doesn't work? | |
Oldes, same for print-integer and print-1. What is your code that doesn't work? | |
Next: | |
older newer | first last |