On Fri, 2017-12-01 at 14:04 -0500, The Chamberlins wrote: > I'm trying to get mit-scheme up and running on a new system running > windows 10, but get the heap-size problem (heap is either too high > or too small depending on what I set it with --heap). > > Any ideas?
The Ubuntu app? If the "new" machine is 64 bit capable, perhaps the app is a 64 bit Ubuntu. Or a VirtualBox virtual machine? The following article recommends one instead of the app. http://www.zdnet.com/article/how-to-run-run-the-native-ubuntu-desktop -on-windows-10/ Or port Scheme to 64 bit Windows? I've tried to describe the difficulties of using a 32 bit Scheme on Windows to others recently. I suppose I should have done that here. I'll repeat myself as much to answer you as to double-check with the net gods that I did not mis-hear all of this so many years ago. And the fastest way to get an answer on this list is to posit the wrong answer. :-) Scheme compiles to machine code that finds words in the heap by masking (clearing) 6 type bits at the top of 32 bit pointers. That leaves 26 bits, which address the first 64MiB of the address space. This works great when the operating system is loading the program as well as shared libraries and whatnot into the high end of the virtual address space, leaving the low addresses to the program's data. It works lousy when the system itself shares the low addresses, and loads the program into low addresses, and leaves only high addresses for program data. I'm just guessing but expect there are enough shenanigans going on from the very bootstrap these days that Scheme has almost no shot at allocating any of the bottom 64MiB even if you run it first thing. Searching for unallocated space below the 64MiB limit is what causes the seemingly random failures. It is a crap shoot dependent on what the system has allocated down there at the moment. There is some bit-rotted support for a dynamic base/offset that would allow Scheme to use addresses above the 2^26 limit, but it really hurts performance, replacing a simple masking with an indirection or a dedicated register or sump'n. I think there is an idle segment register, but that would be a new idea for the compiler. A 64 bit Scheme (on 64 bit Windows) should not have a problem with a 2^58 (258PiB) heap address limit for a few decades. If you have a 64 bit Windows C compiler, you might give it a whirl, but be forewarned that it probably thinks a long is 32 bits, just to make the port extra difficult. _______________________________________________ MIT-Scheme-devel mailing list MIT-Scheme-devel@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-devel