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

World: r3wp

[Red] Red language group

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: