lately i'm 99% imager both for development and deployment. most of the time i start from an image that contains all the dependencies we have except the hu.dwim.* stuff and swank.
i don't initiate a reload when the image is started. if i need to do nontrivial work on a dependency, then i just start slime with a vanilla SBCL.
startup time does matter for me because:
- we have 80+ dependencies, a full recompile takes long minutes even on new hardware
- it's easy to lose track of what's the state of the heap and i've debugged ghosts often enough to just simply restart and reload as a first step whenever there's something that baffles me.
- CL has complex load-time/compile-time semantics, and some components (e.g. ASDF) are quite naive regarding this which doesn't help. i have often experienced that what i've done to the heap using redefinitions cannot be loaded from files out of the box. long sessions without a reload mean longer cleanups afterwards when loading from files fail.
relevant sources (http://dwim.hu/darcsweb/darcsweb.cgi):
- hu.dwim.build - the CL build app, similar to Xach's buildapp. it can build itself into an executable.
- hu.dwim.environment - emacs/ for the way emacs/slime is set up; etc/server-scripts for the posix services of production images
production.lisp files throughout our projects. they add something to the way the production images are started.