Haskell Weekly News: April 17, 2006 Greetings, and thanks for reading issue 33 of HWN, a weekly newsletter covering developments in the Haskell community. Each Monday, new editions are posted to [1]the Haskell mailing list and to [2]The Haskell Sequence. [3]RSS is also available. Headlines also go to [4]haskell.org. 1. http://www.haskell.org/mailman/listinfo/haskell 2. http://sequence.complete.org/ 3. http://sequence.complete.org/node/feed 4. http://haskell.org/ Announcements * Halfs, a Haskell filesystem. Isaac Jones [5]announced the first release of Halfs, a filesystem written in Haskell. Halfs can be mounted and used like any other Linux filesystem, or used as a library. Halfs is a fork (and a port) of the filesystem developed by Galois Connections. In addition, Halfs comes with a virtual machine to make using it extremely easy. You don't need an extra partition or a thumb drive, or even Linux (Windows and Mac OS can emulate the virtual machine). See more at [6]the Halfs site. 5. http://article.gmane.org/gmane.comp.lang.haskell.general/13550 6. http://www.haskell.org/halfs/ * DrIFT-2.2.0. John Meacham [7]released DrIFT-2.2.0, the type sensitive preprocessor for Haskell. It extracts type declarations and directives from modules. The directives cause rules to be fired on the parsed type declarations, generating new code which is then appended to the bottom of the input file. Read more [8]here. 7. http://article.gmane.org/gmane.comp.lang.haskell.general/13541 8. http://repetae.net/john/computer/haskell/DrIFT/ * MissingH 0.14.2. John Goerzen [9]announced version 0.14.2 of MissingH, the library of "missing" Haskell code. Now including support for shell globs, POSIX-style wildcards and more. Check [10]here for more details. 9. http://article.gmane.org/gmane.comp.lang.haskell.general/13555 10. http://quux.org/devel/missingh * HAppS - Haskell Application Server 0.8 Einar Karttunen [11]announced HAppS 0.8. The Haskell Application Server version 0.8 contains a complete rewrite of the ACID and HTTP functionalities. Features include: + MACID - Monadic framework for ACID transactions. + An HTTP Server (outperforms Apache/PHP in informal benchmarks). + An SMTP Server. + Mail delivery agent. + DNS resolver in pure Haskell + XML and XSLT. Separate application logic from presentation using XML/XSLT. + And more.. More information on the [12]the HAppS page. 11. http://article.gmane.org/gmane.comp.lang.haskell.general/13557 12. http://happs.org/ * Index-aware linear algebra. Frederik Eaton [13]announced an index-aware linear algebra library written in Haskell. The library exposes index types and ranges so that static guarantees can be made about the library operations (e.g. an attempt to add two incompatibly sized matrices is a static error). Frederik's motivation is that a good linear algebra library which embeds knowledge of the mathematical structures in the type system, such that misuse is a static error, could mean Haskell makes valuable contribution in the area of technical computing, currently dominated by interpreted, weakly typed languages. 13. http://article.gmane.org/gmane.comp.lang.haskell.general/13561 * Crypto-3.0.3. Dominic Steinitz [14]announced Crypto-3.0.3, a new version of the Haskell Cryptography Library. Version 3.0.3 supports: DES, Blowfish, AES, Cipher Block Chaining (CBC), PKCS#5 and nulls padding, SHA-1, MD5 , RSA, OAEP-based encryption (Bellare-Rogaway), PKCS#1v1.5 signature scheme, ASN.1, PKCS#8, X.509 Identity Certificates, X.509 Attribute Certificates. See [15]here for more. 14. http://article.gmane.org/gmane.comp.lang.haskell.general/13564 15. http://www.haskell.org/crypto Haskell' This section covers activity on [16]Haskell' standardisation process. * [17]Concurrency and FFI status * [18]On Unicode * [19]The goals of the concurrency standard * [20]Preemptive versus cooperative scheduling * [21]Postponing deepSeq and exceptions discussion * [22]Defaults for superclass methods * [23]Collecting requirements for FDs * [24]FDs and confluence * [25]Network IO 16. http://hackage.haskell.org/trac/haskell-prime 17. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1409/focus=1409 18. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1404/focus=1404 19. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1361/focus=1361 20. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1354/focus=1354 21. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1352/focus=1352 22. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1328/focus=1328 23. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1318/focus=1318 24. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1296/focus=1296 25. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1432/focus=1432 Discussion * QuickCheck. Koen Claessen [26]hinted that a "brand new" version of QuickCheck with lots of cool features is soon to be released. 26. http://article.gmane.org/gmane.comp.lang.haskell.general/13543 * Accurate event scheduling. Henning Thielemann [27]asked about how to improve the accuracy of event scheduling, while working on Haskore, the Haskell music system. John Meacham suggested a binding to the Linux real time clock interface, while Tomasz Zielonka pointed to a library he has been developing using software transactional memory actions for accurate timeouts. He also mentioned the new registerDelay function in the GHC head. Measurements indicated that the average error from the expected waiting time dropped from 0.010140108245s to 0.00080999391s. Quite good results. 27. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/12350/focus=12350 * Good fusion. [28]A casual remark about an alternative version of the inits function lead to a huge discussion about using fusion to improve code quality. 28. http://thread.gmane.org/gmane.comp.lang.haskell.libraries/4520/focus=4520 Code watch * Sun Apr 2 14:59:11 PDT 2006 simonpj Improve newtype deriving Ross Paterson pointed out a useful generalisation of GHC's newtype-deriving mechanism. This implements it. The idea is to allow newtype Wrap m a = Wrap (m a) deriving (Monad, Eq) where the representation type doesn't start with a type constructor. * Tue Apr 11 05:04:41 PDT 2006 simonpj Allow IO to be wrapped in a newtype in foreign import/export Up to now, the silent unwrapping of newtypes in foreign import/export has been limited to data values. But it's useful for the IO monad itself: newtype MyIO a = MIO (IO a) foreign import foo :: Int -> MyIO Int This patch allows the IO monad to be wrapped too. Contributing to HWN You can help us create new editions of this newsletter. Please see the [29]contributing information, send stories to dons -at- cse.unsw.edu.au. The darcs repository is available at darcs get http://www.cse.unsw.edu.au/~dons/code/hwn 29. http://haskell.org/haskellwiki/HWN