Burl Nyswonger: # I am concerned with the size of parrot recently -- # libparrot.so is like # 650K, and libparrot.a is like 770K. This is stripped and # without JIT (and # there is a lot more to come, right?)
Actually, I'm not sure there's much left. More portable bytecode formats, an extension interface, dynaloading, the compiler, and a language interface may be it--and the dynaloading may help trim the core size. (I'm sure I've left out some huge stuff. What did I miss?) What -O did you use? See if your compiler has an "optimize for space" option. # The ability to build the VM in an extremely stripped-down # configuration # would be really useful for embedded environments (where you # only have, say # a 4MB flash that must hold a kernel, all libs, apps, etc...). Hmm. Most apps on my Palm are like 10K, including all the GUI code and stuff. Although they aren't as general. I'd like to know a few things: 1. Rip out all the I/O stuff. Does that help? (I don't think it will much.) 2. Rip out predereferencing. Does that help? (This could be big.) 3. Rip out the opcode lookup stuff (a function with a humungous switch() statement, near the bottom of core_ops.c and core_ops_prederef.c). Does that help? (I think this'll be big.) # JIT can be # turned off to make the VM smaller -- how about making it so # that parrot # can be optionally built without profililng, debug, etc. as # well -- would # that make it smaller? I doubt it, but you could try. Most of that stuff is just a few lines of code in the slow runops loop, although all of them have supporting code scattered about. EVERYONE: Should we have a PARROT_TINY_CORE define you can activate to cut some of this stuff out? --Brent Dax <[EMAIL PROTECTED]> @roles=map {"Parrot $_"} qw(embedding regexen Configure) #define private public --Spotted in a C++ program just before a #include