Bradley Lucier wrote:
As to Christian's comments about unresponsiveness---there are already many tight loops in the gambit runtime that disable interrupts to gain performance. I think if you want to throw around strings that are hundreds of megabytes long then you are willing to accepts some unresponsiveness.
Well, not necessarily; garbage collection may still run fast since still objects don't have to be copied, and maybe there are no (other) places that require locking times proportional to the size of objects, I don't know. Well, I'm the one having suggested to use separate unix processes for independence a few times, and I don't have any numbers, so I won't protest. But I suggest to make the purpose of such optimizations visible and easily removable in the sources. I've made an alternative patch with that change (it also defines the combine macro only once--avoid duplication whenever possible).
Be aware that this is untested: I wanted to test it, but couldn't figure out how to compile Gambit from Mercurial.
The Page http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/How_to_Contribute suggests this should work:
$ make bootstrap making all in include make[1]: Entering directory `/home/chris/schemedevelopment/gambit/gambit.git/include' make[1]: Leaving directory `/home/chris/schemedevelopment/gambit/gambit.git/include' making all in lib make[1]: Entering directory `/home/chris/schemedevelopment/gambit/gambit.git/lib' LD_LIBRARY_PATH=../lib:../gsi:../gsc: ../gsc-comp -:=.. -f -c -check _io.scm /bin/sh: ../gsc-comp: No such file or directory make[1]: *** [_io.c] Error 127 make[1]: Leaving directory `/home/chris/schemedevelopment/gambit/gambit.git/lib' make: *** [all-recursive] Error 1
If I symlink gsc from my previous Gambit installation on that machine (4.0 beta 21), I'm getting:
... make[1]: Entering directory `/home/chris/schemedevelopment/gambit/gambit.git/lib' LD_LIBRARY_PATH=../lib:../gsi:../gsc: ../gsc-comp -:=.. -f -c -check _io.scm gcc -I../include -I. -Wall -W -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common -mieee-fp -DHAVE_CONFIG_H -D___PRIMAL -D___LIBRARY -D___GAMBCDIR=""/usr/local/Gambit-C/v4.2.2"" -D___SYS_TYPE_CPU=""i686"" -D___SYS_TYPE_VENDOR=""pc"" -D___SYS_TYPE_OS=""linux-gnu"" -c _io.c In file included from _io.c:1248: ../include/gambit.h:19:30: error: gambit-not402002.h: No such file or directory In file included from _io.c:1248: ../include/gambit.h:6609: error: expected specifier-qualifier-list before '___SCMOBJ' ../include/gambit.h:6672: error: expected specifier-qualifier-list before '___U32' ../include/gambit.h:6683: error: expected specifier-qualifier-list before '___U32' ../include/gambit.h:6728: error: expected '=', ',', ';', 'asm' or '__attribute__' before '___symkey_struct' ...
Creating an empty gambit-not402002.h file in the include directory (it's being included by the include/gambit.h file) doesn't help.
What's the problem?
BTW I've started playing around with Tailor(*) to convert between Mercurial and Git; you can see the two changes of my patch in separate pieces from the following gitweb URL:
http://scheme.mine.nu/dyn/gitweb?p=gambit;a=shortlog;h=refs/heads/stringspee...
But I haven't found out yet how to merge the Git changesets back to Mercurial (Tailor docs suggest it is possible).
Christian.