read-only GC spaces
Ivan Shmakov <[email protected]>
| Newsgroups | gmane.lisp.scheme.scheme48 |
|---|---|
| Message-ID | <[email protected]> |
I wonder, what it'd take to implement read-only GC spaces, either a read-only space for two-space GC, or arbitrary number of read-only spaces for Bibop? The implementation of read-only GC spaces would allow for mmap () system call to be used to memory-less map scheme48.image (or, possibly, even arbitrary data arrays), thus drastically reducing the per-process memory consumption for Scheme48 (from, I believe, about 5 MiB on amd64 currently, to probably less than 1 MiB.) Also, it would allow for the whole Scheme48 run-time system to be pre-compiled into the image, thus saving both the time (otherwise needed to byte-compile the code) and memory space when loading extensions, thus making Scheme48 behavior comparable the the one of the languages (implementations) making use of shared libraries, such as C or Chicken Scheme, with respect to the memory consumption. I guess that since Bibop already supports multiple spaces, it'd be easier to implement read-only spaces support for it than for the two-space GC? Is there any description of its internals, or should I start with the source code? Should the mmap () support be then implemented somewhere deeply within the VM?