bfb27b7caa
This is far from comprehensive, mainly covering stuff I'm interested for mblog currently. I should extend it as I go. The cases I've added reveal something I've noticed recently: The worst performing part of mime4cl seems to be the initial parsing of the message. My current theory is that this is due to the use of READ-LINE in DO-MULTIPART-PARTS which seems to ultimately dispatch to READ-CHAR internally due to the way our streams are set up. We should look into fixing this soon. It may be interesting to add this to windtunnel at some point, but I'd rather not burden a runner with this given that mime4cl is only worked on once every blue moon and I'm the only user. Change-Id: I001de3aac01f8aa7ea923b43b2db29cf66a4aac3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12864 Reviewed-by: sterni <sternenseemann@systemli.org> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI |
||
---|---|---|
.. | ||
benchmark | ||
test | ||
address.lisp | ||
default.nix | ||
endec.lisp | ||
ex-sclf.lisp | ||
mime.lisp | ||
mime4cl-tests.asd | ||
mime4cl.asd | ||
OWNERS | ||
package.lisp | ||
README.md | ||
streams.lisp |
mime4cl
MIME4CL
is a Common Lisp library for dealing with MIME messages. It was
originally been written by Walter C. Pelissero and vendored into depot
(mime4cl-20150207T211851.tbz
to be exact) as upstream has become inactive. Its original
website can still be accessed.
The depot version has since diverged from upstream. Main aims were to improve performance and reduce code size by relying on third party libraries like flexi-streams. It is planned to improve encoding handling in the long term. Currently, the library is being worked on intermittently and not very well tested—it may not work as expected.
Differences from the original version
-
//nix/buildLisp
is used as the build system. ASDF is currently untested and may be broken. -
The dependency on sclf has been eliminated by inlining the relevant parts.
-
MY-STRING-INPUT-STREAM
,DELIMITED-INPUT-STREAM
,CHARACTER-INPUT-ADAPTER-STREAM
,BINARY-INPUT-ADAPTER-STREAM
etc. have been replaced by (thin wrappers around) flexi-streams. In addition to improved handling of encodings, this allows usingREAD-SEQUENCE
via the gray stream interface.