[stamp-devel] Some initial thoughts
Robert Strandh
strandh at labri.fr
Sun Dec 31 06:05:38 UTC 2006
1) I have checked in stamp.lisp and a very preliminary specification
in Spec/spec.text
2) Using mel-base is going to create some problems. For one thing,
mes-base seems to use base-string and base-char a lot, but that
seems to be incompatible with the kind of strings used by SBCL.
The solution would be to fix the declarations in mel-base. Perhaps
this has already been fixed; I tripped on this problem by using an
old version of mel-base.
Another problem with mel-base is that it can't handle non-ascii
contents of message headers and message bodies. The solution to
this problem seems to be to make mel-base use flexi-streams, to
scan the header in ascii mode with a default character (as
flexi-streams allow) of (say) #\?, and to set the encoding of the
stream for the body to whatever the content-type/charset header
indicates (with a default of ascii as for the header). This would
require some digging into the mel-base code, but I think it can be
done. Mel-base is pretty well written. To get around this problem
until mel-base is fixed, I suggest using a test folder that has
only ascii characters in all of the messages.
We don't want to use the `messages' function on a folder, simply
because it scans the entire directory and we might have a million
files in there. Instead, we must select an individual message
based on the tags list, and let mel-base scan that individual
message.
3) I am working on a list of priorities. I think I'll post it here
and leave it open to debate. In a week or so, we should have
nailed the priorities so that the students know what to work on and
in which order.
4) I still intend to convert the existing Stamp code to use the ESA
library, but I don't know at which speed this will happen. It
would be good to have something running in a week or so.
5) We need to think about file and package structures. We should
definitely create an ASDF file (named `stamp.asd'), and a
`packages.lisp' file. The main package should be called `stamp',
and should contain only exported symbols. Other packages used for
implementation should :use the stamp package (I learned this trick
from CLIM). We need to decide what other packages are required.
For now, let's say we only need one: stamp-internals, perhaps with
a nick name of `stampi'. We should probably have this working in a
week or so as well.
Comments?
--
Robert Strandh
---------------------------------------------------------------------
Greenspun's Tenth Rule of Programming: any sufficiently complicated C
or Fortran program contains an ad hoc informally-specified bug-ridden
slow implementation of half of Common Lisp.
---------------------------------------------------------------------
More information about the Stamp-devel
mailing list