On 2020/02/01 21:23:51, hanwenn wrote: > On 2020/02/01 20:59:06, dak wrote: > > On 2020/02/01 20:49:09, hanwenn wrote: > > > On 2020/02/01 11:00:41, hahnjo wrote: > > > > > > > > > > https://codereview.appspot.com/561390043/diff/557260051/lily/include/score-engraver.hh > > > > File lily/include/score-engraver.hh (right): > > > > > > > > > > > > > > https://codereview.appspot.com/561390043/diff/557260051/lily/include/score-engraver.hh#newcode26 > > > > lily/include/score-engraver.hh:26: #include <gc.h> > > > > This effectively adds a dependency on libgc which you should search for at > > > > configure - it is not necessarily installed in a default location. > > > > > > I've added a TODO for now. One complication is that libgc doesn't come with > > > pkg-config. > > > > It seems like a bad idea to change the bgc parameters behind Guile's back. > > Can you give a specific reason why? > > > Does > > Guile not have any GC hooks of its own that one could use for increasing the > > heap size or its behavior with regard to requesting memory? > > I guess you could allocate a large block of memory, and then deallocate it > again. > > The whole idea of GUILE moving to libgc is that it gets out of the business of > trying > to do GC. Why would they insert themselves into that game again?
>From the Guile-2.2 manual: -- C Function: void * scm_malloc (size_t SIZE) -- C Function: void * scm_calloc (size_t SIZE) [...] These functions will (indirectly) call ‘scm_gc_register_allocation’. -- C Function: void scm_gc_register_allocation (size_t SIZE) Informs the garbage collector that SIZE bytes have been allocated, which the collector would otherwise not have known about. In general, Scheme will decide to collect garbage only after some amount of memory has been allocated. Calling this function will make the Scheme garbage collector know about more allocation, and thus run more often (as appropriate). It is especially important to call this function when large unmanaged allocations, like images, may be freed by small Scheme allocations, like foreign objects. So it would appear that Guile does have an interface for the notion of getting in memory pressure, and we incidentally also call those hooks when we are allocating smob structures. https://codereview.appspot.com/561390043/