Quite some time ago I wrote a blog post about the number of temporary strings that are loaded when rubygems starts up. (The largest culprit is the file list for the gems).

I've been trying to think how to overcome this for some time, without breaking the gems api, but a slightly more lightweight idea came to me today, which may be workable prior to an architecture change.

Add another field for 'non-runtime files', for covering docs, examples, rakefiles, tests, etc.

This would enable gem authors to maintain the ability to scan the gemspec for important files (often under lib/), but unimportant files would be missed out.

Initial saving on a development machine (averaging what we use in the office), would seem to be around 30-40% of the instanced objects in a `ruby -rubygems -e ""`

On a related note, I was considering a more architectural changeset to gems, which I was going to stab case in a more external 'mini-gems' package (may be quite some time away).

The plan is to move to something that's glob supported (and a new directory structure aside that).

In order to accomplish this but maintain compatibility I envisage a Gem.source_index that binds data as late as possible. A useful api however would be to Gem.source_files.glob(), which would both simplify and abstract the necessary piece of work for many of the current 'plugin' architectures built on top of Gem.source_index discovery. The hope being that this slowly opens up the floor to such architectural modifications, hiding them behind an API.

Any / all input would be most welcome,

Kind regards,

James.
_______________________________________________
Rubygems-developers mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rubygems-developers

Reply via email to