[Haskell-cafe] Ann: contstuff, dnscache, ihttp, ismtp, netlines, yesod-tableview

Ertugrul Soeylemez es at ertes.de
Sun Apr 3 22:09:16 CEST 2011

Hello fellow Haskellers,

(once again posted to the cafe, because the Haskell mailing list rejects
my mails.)

I have released quite a few libraries over time on Hackage.  I feel they
are stable enough now to announce them here.

  * contstuff: Fast and flexible monad transformers based on the CPS
    concept.  Mainly it helps getting rid of large transformer stacks,
    because it unifies some monad transformers (like StateT and ContT),
    and it is also faster than the naive approach.

    This library is comparable to a combination of the transformers
    package with Edward Kmett's monad-ran package, but without hiding
    the CPS transformation.  In early benchmarks ChoiceT turned out to
    be twice as fast as normal Haskell lists, and it is also a proper
    list monad transformer.

    Finally in the Control.ContStuff.Classes module you find lots of
    useful utility classes, which seem to be unique to contstuff.

  * dnscache: Handy DNS caching library.  This library automatically
    manages a set of resolver threads for you, which share a reply
    cache.  This allows very fast mass-resolution.

    The library also comes with a handy command line utility called
    'massdns' for quick resolution of even very large lists of entities.
    Call massdns without arguments to get usage help.

  * ihttp: This is an HTTP library based on enumerators giving you
    maximum flexibility and control over the connection.  Using proper
    iteratees you can simply implement e.g. proxy clients (my main use
    case), but also HTTP servers.  Using proper enumeratees you can also
    encapsulate the connection in an SSL/TLS layer, but unfortunately
    there doesn't seem to be such an SSL/TLS implementation yet.

  * ismtp: This is an advanced ESMTP library, which allows you to
    structure your sessions as you like.  It also features an automated
    resolver for MX records using the dnscache library.  Right now there
    is support for most of the base functionalities of the protocol as
    specified in RFC 821 (SMTP) and RFC 1425 (service extensions).

    An update to RFC 2821 is planned, but is not necessary for practical
    purposes.  The new RFC mainly removes some unneeded features and
    unifies the two mentioned RFCs.

    Right now there is no support for SMTL (SASL) authentication, but it
    is planned for a near future release.  For the time being you can
    implement your own iteratees for this purpose, if you depend on

  * netlines: This is a library for writing implementations of
    text-based protocols.  In particular it allows reading lines safely
    from untrusted sources with a maximum length in constant space.

  * yesod-tableview: For web applications using Michael Snoyman's Yesod
    web framework this library implements an easy to use table renderer
    mainly for database records.  It is in an early stage of development
    right now, but as the need arises, I will extend it.

To use the networking libraries, you should be familiar with John
Millikin's 'enumerator' package.  If you're not, I recommend studying
it, because it is a useful library for all kinds of stream processing
like network connections, files and concurrent channels.

All mentioned libraries have been tested extensively for correctness and
safety.  Especially the networking libraries have undergone a lot of
penetration testing.  However, I'm only one developer, so I would be
glad to hear about any vulnerabilities and other shortcomings you find.
Usually I have a very short response time to bugs in these libraries, so
please don't hesitate to contact me.  Feature requests are also welcome,
of course. =)

Please note that major version numbers specify interface versions in my
libraries.  In other words, a new major version of a package usually
means that the API has changed in a way, which is likely to break
dependent packages.

I would like to use this opportunity to thank a few people in particular

    - Cale Gibbard,
    - Edward Kmett,
    - John Millikin,
    - Bryan O'Sullivan and
    - Michael Snoyman.

I appreciate your efforts both in libraries and support.  Many thanks,
guys!  Thanks also to the rest of the innovative and helpful Haskell


Key-ID: E5DD8D11 "Ertugrul Soeylemez <es at ertes.de>"
FPrint: 0F12 0912 DFC8 2FC5 E2B8  A23E 6BAC 998E CE40 2012
Keysrv: hkp://subkeys.pgp.net/

nightmare = unsafePerformIO (getWrongWife >>= sex)

More information about the Haskell-Cafe mailing list