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

World: r3wp

[Red] Red language group

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
[2205x6]
:-)
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:
dummy: func [return: [integer!]] [0]
either as-logic dummy [
	no
][
	no
]
*** Compiler Internal Error: Script Error : first expected series 
argument of type: series pair event money date object port time tuple 
any-function library struct event
*** Where: opposite? 
*** Near:  [first select/skip opp-conditions cond 2]
Dockimbel
20-Jun-2011
[2211x2]
Having a quick look at this error.
Seems related to my previous fix.
Kaj
20-Jun-2011
[2213]
Yeah, was to be expected
PeterWood
20-Jun-2011
[2214]
Added two tests to reflect the two cases above to cast-test.reds. 
It now fails with a compliation error.
Dockimbel
20-Jun-2011
[2215]
Fix pushed.
Kaj
20-Jun-2011
[2216]
Thanks, both
Dockimbel
20-Jun-2011
[2217x3]
Peter, the compilation error in the new type casting tests was not 
the right one. Variable initialization cannot happen in EITHER blocks 
now since today's following commit: https://github.com/dockimbel/Red/commit/31b87b9565004574174ba3bf02b4dfaa2db665f2
That change was required to fix issue #84.
Kaj: you're welcome. But no more fixes until tomorrow, bed time here.
Kaj
20-Jun-2011
[2220]
OK then, I'll release you from your duties for the duration of eight 
(8) hours ;-)
PeterWood
20-Jun-2011
[2221]
Thanks for the pointing out the initaliasation changes and fixing 
the tests.
Gregg
21-Jun-2011
[2222]
Great to see continued activity and progress on Red.
jocko
21-Jun-2011
[2223x2]
Kaj, I tested this morning, input-line works under Windows
My mistake was that I did not allocate the input buffer by

in: allocate 255 but by in: "" , which is not really an allocation
on an other hand, I cannot simply include the C-library in my script 
by :

#include %C-library.reds


instead, I must extract the used functions. (here _input-line and 
input-line)


The error message at the compilation is not visible in the console, 
because a large amount of text is printed. Maybe a double declaration. 
Any idea ?
Dockimbel
21-Jun-2011
[2225x2]
Jocko, this might be caused by a duplicate definition of ALLOCATE 
and FREE, but Kaj removed them from the C-library in the last revision. 
I just downloaded last revision and tested, I can include it in my 
scripts without any issue.
Gregg: thanks for your kind support.
Oldes
21-Jun-2011
[2227x3]
print functions from Kaj's C-library has different precedence than 
ordinary print/prin when you call the red's exe from REBOL using 
CALL/console command.
Which means.. if I have code:

print-1 "int %d" 1
print "hello"

I get in REBOL console:
>> call/console %builds/test.exe
hello
int 1== 0
in CMD:
int 1hello
Dockimbel
21-Jun-2011
[2230x5]
Confirmed here too (on Windows). PRINT-1 is printing after every 
other PRINT calls in a script.
It seems that they are not using the same streams.
This article explains the issue in the second note: http://support.microsoft.com/kb/190351/en-us
So flushing the C I/O streams is the solution:
  
    print-1 "int %d" 1
    flush-file null
    print "hello"

works fine.
A long-term solution could be to disable buffering of C's stdout 
stream, using a call to setvbuf(). It requires passing a stream pointer, 
so I am not sure this is doable now.
Kaj
21-Jun-2011
[2235x3]
The issue is that PRINT and PRIN use syscalls directly, and thus 
don't go through the buffering that the C library does on all I/O
In particular, the standard I/O streams stdin and stdout are line 
buffered. Flushing them is often more forceful than necessary: the 
same effect is achieved by printing a newline
Also, when doing an input-line on Linux, stdout is flushed automatically, 
so you can print a question with a prompt directly behind it