Tim Bradshaw <firstname.lastname@example.org> wrote:
| ... DTML ... does do some probably-unneeded optimisation such that
| macros only get recompiled when it knows they might have changed.
| Typically the macros call Lisp functions which then do a lot of
| backquote-based rewriting of the parsed DTML they get passed.
| Previous to DTML I briefly used something which was file-based but
| used sexps. It used READ and then HTOUT's printing support...
My "LHP" ("Lisp-Handled Pages", as in the example I mentioned
before, <http://rpw3.org/hacks/lisp/appsrv-demo.lhp>) does a
similar recompilation/caching, but of essentially pure CL code
[albeit using HTOUT for HTML-generation] rather than DTML or
some other tailored syntax. If the application server is handed
a path suffixed with ".lhp", it checks the modification dates
of the corresponding file and the same file with a FASL suffix
(".x86f" for CMUCL), and only recompiles and/or reloads the file
if the source is newer than the internally-cached copy of the
(compiled) page. [Compilation is done only if there's already
a compiled FASL there, so the user can control which LHP pages
get compiled and which ones only get interpreted.]
Development is *very* fast with this model, since to recompile
recently-edited code you need only hit "Refresh" (or "Reload")
button on your browser...
Rob Warnock <email@example.com>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607