• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[#Red] Red language group

DocKimbel
20-Aug-2012
[1084]
After looking at the diff-ed code, I think that replacing all the 
assignment in IFs bodies, by a single one before the SWITCHs is what 
produced the code size gain.
Kaj
20-Aug-2012
[1085x3]
Yes, I did manage to make small gains where SWITCH could be used, 
but only when it makes other constructs obsolete. First you have 
to make good on the overhead of SWITCH itself
strnlen only available in last year's OS X? Oh man...
I suspect you could optimise SWITCH and CASE by detecting constant 
expressions, like C does, especially when TRUE is used as a default 
clause for CASE
DocKimbel
20-Aug-2012
[1088]
Probably, but we'll leave that for the final version of the compiler.
Kaj
20-Aug-2012
[1089]
I think
--assert 12 = strlen s 32
should be
--assert 12 = strlen s
in your last commit
DocKimbel
20-Aug-2012
[1090]
Thanks, forgot to commit that modification.
Andreas
20-Aug-2012
[1091x2]
Ah, so calling rsc.r from someplace else was the trouble.


Isn't that a fundamental problem with the current R2 interpreters? 
I seem to remember that when a script is running the interpreter 
already change-dir'ed to the directory containing the script, thereby 
losing the original working directory.
Anyone has an easy workaround for that handy?
DocKimbel
20-Aug-2012
[1093]
It's not lost, it should be stored in system/options/path.
Andreas
20-Aug-2012
[1094]
Reliably?
DocKimbel
20-Aug-2012
[1095]
I'm unsure about that.
Andreas
20-Aug-2012
[1096]
Time to try again, I guess :)
DocKimbel
20-Aug-2012
[1097]
So far, testing with a modified %rsc.r on Linux, it seems to be reliable.
Andreas
20-Aug-2012
[1098x3]
Do you use rsc.r from the REBOL console as well?
Well, seems to even properly work with DO.
(Testing with R2.7.8 on Linux.)
DocKimbel
20-Aug-2012
[1101]
Yes, from REBOL console.
Andreas
20-Aug-2012
[1102]
So `change-dir system/options/path` at the top of rsc.r it is :) 
?
DocKimbel
20-Aug-2012
[1103x2]
Not sure this would covers all cases.
We need two paths: one for locating red-system/ root directory and 
another one for the working directory.
So:
- system/script/path should give us red-system/ root
- system/options/path should give us working directory
Andreas
20-Aug-2012
[1105x2]
`do load %rsc.r` and DO-ing rsc.r from an URL are the two only cases 
I can think of right away where it might make not much sense (it 
would then use the workdir the REBOL interpreter was started.)
script/path & options/path: yes
DocKimbel
20-Aug-2012
[1107x2]
What we want is ability to call %rsc.r from anywhere, compiling a 
program from working dir (or relative to working dir) and producing 
the binary in the working dir.
(Kaj correct me if I'm wrong)
Andreas
20-Aug-2012
[1109]
Yes, that's what we want.
Kaj
20-Aug-2012
[1110]
Yes
Andreas
20-Aug-2012
[1111x3]
A minor question re the output binary remains: do we want to keep 
up the automatic executable name guessing we do at the moment (foo.reds 
-> foo || foo.exe), or do we want to use non-descript default name.
And if we want to keep the "nice" exe names (which would be my guess), 
what to do if the target file already exists?
Most developer friendly (imo): just overwrite it.
DocKimbel
20-Aug-2012
[1114]
Automatic name guessing: yes, we want to keep that and overwrite 
it if exists already.
Andreas
20-Aug-2012
[1115]
Ok, should be an easy change, but I guess the test runners will need 
adapting (if we want the new behaviour to be the default).
DocKimbel
20-Aug-2012
[1116]
Yes, we'll need to adapt all our tests scripts. That's why I've tagged 
the last commit for the release, to avoid further delays.
Kaj
20-Aug-2012
[1117]
Added floating point support to the SQLite binding
DocKimbel
20-Aug-2012
[1118]
Nice!
Kaj
20-Aug-2012
[1119]
It was mostly uncommenting some prepared lines :-)
DocKimbel
20-Aug-2012
[1120]
Andreas: if you know how to improve working dir handling in %rsc.r, 
feel free to do so when you want. We'll adapt the test scripts accordingly.
Kaj
20-Aug-2012
[1121]
I'm trying to move the SQLite binding into a CONTEXT, but I've hit 
a bug
PeterWood
20-Aug-2012
[1122x5]
Nenad" "Peter: the lib-test file is crashing here on my OS X 10.6.2 
image with following error:"


Did you install Xcode including the Unix libs?  I wrote the tests 
under OS X 10.6 but am now running on 10.7.
What we want is ability to call %rsc.r from anywhere, compiling a 
program from working dir (or relative to working dir) and producing 
the binary in the working dir.


Please can we also supply a second argument to rsc.r for the output 
dir/file name (the gcc -o option with improvements).


If the second argument is a dir then the executable is written to 
that dir instead of the current working dir.


If the second argument is a file then the executable is saved with 
that name.
(That would really help with quick-test).
I just checked on my old machine, I did re-wrtie the lib tests on 
OS X 10.6 but on OS X 10.7.
I meant that I re-wrote the lib tests on OS X 10.7 not 10.6.
DocKimbel
21-Aug-2012
[1127x2]
Did you install Xcode including the Unix libs?

 I have Xcode installed, but don't know if it includes Unix libs or 
 not...how can I check that?
The -o command-line option for %rsc.r is already there (and since 
a while). ;-)
Oldes
21-Aug-2012
[1129]
I was reviewing my old iMagick.reds binding for a while and found 
that it the current version I cannot write something like:
		DrawComment: "DrawComment" [
			;== Adds a comment to a vector output stream
			;-- void DrawComment(DrawingWand *wand,const char *comment)
			wand          [DrawingWand!] ;the drawing wand.
			comment   [c-string!] ;comment text
		]
It throws:
*** Loading Error: invalid comment string


Do we really need to have 'comment word such an important? I'm pretty 
sure I would never use it in declarations (as a comment).
DocKimbel
21-Aug-2012
[1130x2]
It should be allowed imported functions spec block.
*allowed in
Oldes
21-Aug-2012
[1132x2]
I don't like it:/ Could it be at least used only with string after 
comment word?
There are some issues with context which I found..
1.
WITH is not able to find enums defined in CONTEXT

c: context [
	#enum SomeEnum! [FooFalse FooTrue]
	test: does [
		print FooTrue
	]
]
with c [
	test ;prints 1

 ;; print FooTrue ;<-- *** Compilation Error: undefined symbol: FooTrue
]