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

Bradley Lucier lucier at math.purdue.edu
Thu Jun 9 16:00:13 EDT 2016


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