[gambit-list] Can I imply a FORCE all over? (**Prio Q for this weekend or so :D )

Marc Feeley feeley at iro.umontreal.ca
Thu Jun 9 22:40:40 EDT 2016


When using --enable-auto-force, it is OK for test1 to fail this way (because test1 introspects the structure of the generated code, and, unfortunately, using auto forcing changes the structure of the code).

Marc

> On Jun 9, 2016, at 4:00 PM, Bradley Lucier <lucier at math.purdue.edu> wrote:
> 
> I'm taking the liberty of adding the Gambit mail list to the CC, since this may be of general interest.
> 
> "make check" fails after configuring with
> 
> ./configure 'CC=/usr/local/gcc-6.1.0/bin/gcc -march=native' '--enable-single-host' '--enable-multiple-versions' '--enable-shared' --enable-auto-forcing
> 
> "make -i check" (to ignore errors and continue) gives
> 
> ------------ TEST 1 (debugging support)
> LD_LIBRARY_PATH=../lib:../gsi:../gsc:/usr/local/Gambit/current/lib:/usr/local/netpbm10/lib:/usr/local/gcc-6.1.0/lib/: ../gsi/gsi -:~~bin=../bin,~~lib=../lib,~~include=../include -f debug.scm > test1.out
> diff test1.ok test1.out && rm -f test1.out
> 81a82
>> #return(##cprc-if2 3) : ($code rte)
> 85a87
>> #return(##cprc-if3 3) : ($code rte)
> 108a111
>> #return(##cprc-cond-if 3) : ($code rte)
> 112a116
>> #return(##cprc-cond-or 3) : ($code rte)
> 117,120c121,126
> < #return(##cprc-cond-send-red 3) : ($code rte pred)
> < #procedure(##cprc-cond-send-red 4)
> < #return(##cprc-cond-send-red 5) : ($code rte oper)
> < #return(##cprc-cond-send-red 6) : ($code rte)
> ---
>> #return(##cprc-cond-send-red 3) : ($code rte)
>> #return(##cprc-cond-send-red 4) : ($code rte pred)
>> #return(##cprc-cond-send-red 5) : ($code rte pred)
>> #procedure(##cprc-cond-send-red 6)
>> #return(##cprc-cond-send-red 7) : ($code rte oper)
>> #return(##cprc-cond-send-red 8) : ($code rte)
> 125,127c131,135
> < #return(##cprc-cond-send-sub 3) : ($code rte pred)
> < #return(##cprc-cond-send-sub 4) : ($code rte oper)
> < #return(##cprc-cond-send-sub 5) : ($code rte)
> ---
>> #return(##cprc-cond-send-sub 3) : ($code rte)
>> #return(##cprc-cond-send-sub 4) : ($code rte pred)
>> #return(##cprc-cond-send-sub 5) : ($code rte pred)
>> #return(##cprc-cond-send-sub 6) : ($code rte oper)
>> #return(##cprc-cond-send-sub 7) : ($code rte)
> 131a140
>> #return(##cprc-or 3) : ($code rte)
> 135a145
>> #return(##cprc-and 3) : ($code rte)
> 140c150,151
> < #return(##cprc-case 3) : (rte $code)
> ---
>> #return(##cprc-case 3) : ($code rte)
>> #return(##cprc-case 4) : (rte $code)
> 250,251c261,263
> < #procedure(##cprc-app0-red 3)
> < #return(##cprc-app0-red 4) : ($code rte)
> ---
>> #return(##cprc-app0-red 3) : ($code rte)
>> #procedure(##cprc-app0-red 4)
>> #return(##cprc-app0-red 5) : ($code rte)
> 257,259c269,272
> < #procedure(##cprc-app1-red 4)
> < #return(##cprc-app1-red 5) : ($code rte oper)
> < #return(##cprc-app1-red 6) : ($code rte)
> ---
>> #return(##cprc-app1-red 4) : ($code rte oper)
>> #procedure(##cprc-app1-red 5)
>> #return(##cprc-app1-red 6) : ($code rte oper)
>> #return(##cprc-app1-red 7) : ($code rte)
> 266,268c279,282
> < #procedure(##cprc-app2-red 5)
> < #return(##cprc-app2-red 6) : ($code rte oper)
> < #return(##cprc-app2-red 7) : ($code rte)
> ---
>> #return(##cprc-app2-red 5) : ($code rte oper arg1)
>> #procedure(##cprc-app2-red 6)
>> #return(##cprc-app2-red 7) : ($code rte oper)
>> #return(##cprc-app2-red 8) : ($code rte)
> 276,278c290,293
> < #procedure(##cprc-app3-red 6)
> < #return(##cprc-app3-red 7) : ($code rte oper)
> < #return(##cprc-app3-red 8) : ($code rte)
> ---
>> #return(##cprc-app3-red 6) : ($code rte oper arg1 arg2)
>> #procedure(##cprc-app3-red 7)
>> #return(##cprc-app3-red 8) : ($code rte oper)
>> #return(##cprc-app3-red 9) : ($code rte)
> 287,289c302,305
> < #procedure(##cprc-app4-red 7)
> < #return(##cprc-app4-red 8) : ($code rte oper)
> < #return(##cprc-app4-red 9) : ($code rte)
> ---
>> #return(##cprc-app4-red 7) : ($code rte oper arg1 arg2 arg3)
>> #procedure(##cprc-app4-red 8)
>> #return(##cprc-app4-red 9) : ($code rte oper)
>> #return(##cprc-app4-red 10) : ($code rte)
> 297,298c313,315
> < #procedure(##cprc-app-red 6)
> < #return(##cprc-app-red 7) : ($code rte)
> ---
>> #return(##cprc-app-red 6) : ($code rte oper)
>> #procedure(##cprc-app-red 7)
>> #return(##cprc-app-red 8) : ($code rte)
> 303a321
>> #return(##cprc-app0-sub 4) : ($code rte)
> 310c328,329
> < #return(##cprc-app1-sub 5) : ($code rte)
> ---
>> #return(##cprc-app1-sub 5) : ($code rte oper)
>> #return(##cprc-app1-sub 6) : ($code rte)
> 317,318c336,338
> < #return(##cprc-app2-sub 5) : ($code rte oper)
> < #return(##cprc-app2-sub 6) : ($code rte)
> ---
>> #return(##cprc-app2-sub 5) : ($code rte oper arg1)
>> #return(##cprc-app2-sub 6) : ($code rte oper)
>> #return(##cprc-app2-sub 7) : ($code rte)
> 326,327c346,348
> < #return(##cprc-app3-sub 6) : ($code rte oper)
> < #return(##cprc-app3-sub 7) : ($code rte)
> ---
>> #return(##cprc-app3-sub 6) : ($code rte oper arg1 arg2)
>> #return(##cprc-app3-sub 7) : ($code rte oper)
>> #return(##cprc-app3-sub 8) : ($code rte)
> 336,337c357,359
> < #return(##cprc-app4-sub 7) : ($code rte oper)
> < #return(##cprc-app4-sub 8) : ($code rte)
> ---
>> #return(##cprc-app4-sub 7) : ($code rte oper arg1 arg2 arg3)
>> #return(##cprc-app4-sub 8) : ($code rte oper)
>> #return(##cprc-app4-sub 9) : ($code rte)
> 345,346c367,369
> < #procedure(##cprc-app-sub 6)
> < #return(##cprc-app-sub 7) : ($code rte)
> ---
>> #return(##cprc-app-sub 6) : ($code rte oper)
>> #procedure(##cprc-app-sub 7)
>> #return(##cprc-app-sub 8) : ($code rte)
> makefile:113: recipe for target 'test1' failed
> make[1]: [test1] Error 1 (ignored)
> 
> 
> I don't know whether this is important.
> 
> Brad
> 
> On 06/09/2016 02:11 PM, Mikael More wrote:
>> Awesomeness, thanks!!!!!
>> 
>> Fantastic, this means tight integration with a functional object
>> database is possible.
>> 
>> I guess the expression code is running under the scheduler too, opening
>> for storage of the database on non-low-latency facilities too, great!
>> 
>> 
>> 
>> 2016-06-10 1:30 GMT+08:00 Bradley Lucier <lucier at math.purdue.edu
>> <mailto:lucier at math.purdue.edu>>:
>> 
>>   Try adding --enable-auto-forcing to your configure of Gambit.
>> 
>> 
>>   On 06/09/2016 01:20 PM, Adam wrote:
>> 
>>       Hi Marc!
>> 
>>       I have a practical question:
>> 
>>       I am thinking about the possibility of realizing a TIGHTLY
>>       integrated
>>       persistent object store ("object database").
>> 
>>       (Tightly integrated, that is, with the Scheme heap.)
>> 
>>       The object store would be functional, so the host system can cache
>>       object references as much as it wants.
>> 
>> 
>>       My question is:
>> 
>>       The best thing would be to
>> 
>>       1) Have lazy loading of objects into the Scheme heap from the
>>       database
>>       (because the stored structures may have wather depth and shape
>>       meaning
>>       that precaching algorithms never would have an idea about what
>>       really
>>       needs to be loaded, so better let the code show that simply
>>       through what
>>       slots etc. it accesses), *AND* to at the same time
>> 
>>       2) *NOT* need to customize the Scheme code for the lazy loading,
>>       i.e.,
>>       have implicit |force| all over the code?
>> 
>> 
>>       A final wish here would be
>> 
>>       3) The option that the |force| would be run as a procedure
>>       within the
>>       green threading system, so that other green threads would continue
>>       executing while the lazy value is being loaded. Not sure about
>>       this one
>>       though - maybe for code-performance reasons it would be better
>>       to have
>>       it block.
>> 
>> 
>>       Even runtime procedures would need to do the implicit |force|.
>>       So the
>>       values that not are loaded right now, would be represented by a
>>       loading
>>       closure, and the result of closure invocation would be the value
>>       that
>>       should take the place of the respective accessed slot.
>> 
>> 
>>       Can this be done in Gambit, in its current form or with some
>>       very slight
>>       modification?
>> 
>>       Thanks!
>> 
>> 
>> 
> 




More information about the Gambit-list mailing list