News from 2006
Halfs, a Haskell filesystem. Isaac Jones 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 the Halfs site.
DrIFT-2.2.0. John Meacham 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 here.
MissingH 0.14.2. John Goerzen 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 here for more details.
HAppS - Haskell Application Server 0.8 Einar Karttunen 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 the HAppS page.
Index-aware linear algebra. Frederik Eaton 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.
Crypto-3.0.3. Dominic Steinitz 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 here for more.
hImerge: a graphical user interface for emerge. Luis Araujo released hImerge, a graphical user interface for emerge, (Gentoo's Portage system) written in Haskell using gtk2hs. Here's a jpg. The main idea is to simplify browsing the entire portage tree as well as of running the most basic and common options from the emerge command. hImerge also offers several handy tools, like global and local use flags browsers, and a minimal web browser.
Edison 1.2 rc3. Robert Dockins announced that the 3rd release candidate for Edison 1.2 is now avaliable.
monadLib 2.0. Iavor Diatchki announced the release of monadLib 2.0 -- library of monad transformers for Haskell. 'monadLib' is a descendent of 'mtl', the monad template library that is distributed with most Haskell implementations. Check out the library web page.
Text.Regex.Lazy (0.33). Chris Kuklewicz announced the release of Text.Regex.Lazy. This is an alternative to Text.Regex along with some enhancements. GHC's Text.Regex marshals the data back and forth to C arrays, to call libc. This is far too slow (and strict). This module understands regular expression Strings via a Parsec parser and creates an internal data structure (Text.Regex.Lazy.Pattern). This is then transformed into a Parsec parser to process the input String, or into a DFA table for matching against the input String or FastPackedString. The input string is consumed lazily, so it may be an arbitrarily long or infinite source.
HDBC 0.99.2. John Goerzen released HDBC 0.99.2, along with 0.99.2 versions of all database backends. John says "If things go well, after a few weeks of testing, this version will become HDBC 1.0.0". HDBC is a multi-database interface system for Haskell.
GHC 6.4.2 Release Candidates Simon Marlow announced that GHC was moving into release-candidate mode for version 6.4.2. Grab a snapshot and try it out. The available builds are: x86_64-unknown-linux (Fedora Core 5), i386-unknown-linux (glibc 2.3 era), and Windows (i386-unknown-mingw32). Barring any serious hiccups, the release should be out in a couple of weeks.
HaRe 0.3. Sneaking out without us noticing, in January, a new snapshot of HaRe, the Haskell refactoring tool, was released. This snapshot of HaRe 0.3 is now compatible with the latest GHC and Programmatica. New refactorings have also been added.
Haskell on Gentoo Linux Duncan Coutts writes that GHC 6.4.1 has been marked stable on x86, amd64, sparc and ppc, for Gentoo Linux. (We also support ppc64, alpha and hppa.) Gentoo also has a collection of over 30 Haskell libraries and tools. There is also a #gentoo-haskell channel on freenode.
Planet Haskell. Isaac Jones asked if someone could volunteer to set up "Planet Haskell", an RSS feed aggregator in the style of Planet Debian, Planet Gnome or Planet Perl. Happily, Antti-Juhani Kaijanaho stepped up, and now Planet Haskell is live at http://planet.haskell.org. Antti-Juhani asks that any Haskell people with blogs submit their feed urls to him, so check it out!
Concurrent Yhc. The Yhc dev team reports that Yhc now includes support for concurrency! The interface is the same as Concurrent GHC. Currently only
are implemented, however many other abstractions can be written in Haskell in terms of MVars.
lhs2TeX version 1.11. Andres Loeh announced lhs2TeX version 1.11, a preprocessor to generate LaTeX code from literate Haskell sources.
lhs2TeX includes the following features:
- Highly customized output.
- Liberal parser -- no restriction to Haskell 98.
- Generate multiple versions of a program or document from a single source.
- Active documents: call Haskell to generate parts of the document (useful for papers on Haskell).
- A manual explaining all the important aspects of lhs2TeX.
- Alternative to Text.Regex. Chris Kuklewicz announced an alternative to Text.Regex. While working on the language shootout, Chris implemented a new efficient regex engine, using parsec. It contructs a parser from a string representation of a regular expression.
- pass.net. S. Alexander Jacobson launched Pass.net. Written in Haskell, using HAppS, Pass.net lets websites replace registration, confirmation mails, and multiple passwords with a single login, authenticating via their email domain.
- Haskell as a markup language. Oleg Kiselyov writes on using Haskell to represent semi-structured documents and the rules of their processing. SXML is embedded directly in Haskell, with an open and extensible set of `tags'. The benefit of this is of course in static type guarantees, such as prohibiting an H1 element to appear in the character content of other elements.
- hmp3 1.0. Don Stewart released hmp3 version 1. hmp3 is a curses-based mp3 player written in Haskell, designed to be fast, small and stable.
- Edison 1.2rc2. Robert Dockins announced the second release candidate for Edison 1.2 is now ready for comments.
- Long Live Edison. Robert Dockins announced he had revived the Edison data structure code, and is maintaining a darcs repository, with a view to modernising the codebase.
- The Haskell Workshop. Andres Loeh released the initial call for papers for the ACM SIGPLAN 2006 Haskell Workshop, to be held at Portland, Oregon on the 17 September, 2006. The purpose of the Haskell Workshop is to discuss experience with Haskell, and possible future developments for the language. The scope of the workshop includes all aspects of the design, semantics, theory, application, implementation, and teaching of Haskell.
- Probability Distributions. Matthias Fischmann released a module for sampling arbitrary probability distribution, so far including normal (gaussian) and uniform distributions.
- Constructor Classes. Sean Seefried announced an implementation of a tool to help explore constructor classes (type classes which can take constructors as arguments) described in Mark Jones' paper, A system of constructor classes: overloading and implicit higher-order polymorphism. The implementation not only infers the type but also prints out a trace of the derivation tree for the syntax directed rules.
- FFI Imports Packaging Utility. Dimitry Golubovsky
the pre-release of the FFI Imports Packaging Utility
(ffipkg), a new member of the HSFFIG package.
The `ffipkg' utility prepares a Haskell package containing FFI imports
for building by accepting locations of C header and foreign library
files as command line arguments and producing Haskell source files
with FFI declarations, a Makefile, a Cabal package descriptor file,
and a Setup.hs file suitable for running the Cabal package setup
program. The utility acts as a "driver" running the C preprocessor,
the equivalent of the hsffig program, and the source splitter.
darcs get --partial http://hsffig.sourceforge.net/repos/hsffig-1.1
- Haskell in Higher Education. John Hughes announced that the result of his survey into the use of Haskell in higher education are out. The survey covers 89 universities, accounting for 5-10,000 students being taught Haskell this academic year. The results are available on the web.
- EclipseFP. Thiago Arrais announced that EclipseFP 0.9.1 has been released since last Friday. It is an open-source development environment for Haskell code. EclipseFP integrates GHC with an Haskell-aware code editor and also supports quick file browsing through an outline view, automatic building/compiling and quick one-button code execution. Downloads and more information are available on the project home page.
- Class-parameterized classes, and type-level logarithm. Oleg Kiselyov writes: we show invertible, terminating, 3-place addition, multiplication, exponentiation relations on type-level Peano numerals, where any two operands determine the third. We also show the invertible factorial relation. This gives us all common arithmetic operations on Peano numerals, including n-base discrete logarithm, n-th root, and the inverse of factorial. The inverting method can work with any representation of (type-level) numerals, binary or decimal. Oleg says, "The implementation of RSA on the type level is left for future work".
- Fast mutable variables for IO and ST. Bulat Ziganshin released a module for fast mutable variables, providing efficient newVar/readVar/writeVar, as well as support for unboxed values, fast unboxed bitwise operations, and more.
- C-- Frontend. Robert Dockins announced the initial alpha release of a C-- frontend (parser, pretty printer, and semantic checker) written in Haskell. The goal when beginning this project was to create a modular frontend that could be used both by people writing and by those targeting C-- compilers. This implementation attempts to follow the C-- spec as exactly as possible.
- Type level arithmetic. Robert Dockins also released a library for arithmetic on the type level. This library uses a binary representation and can handle numbers at the order of 10^15 (at least). It also contains a test suite to help validate the somewhat unintuitive algorithms.
This week Isaac Jones announced that the Haskell' standardisation
process is underway. Haskell' will be a conservative refinement of
Announcing the Haskell' ("Haskell-Prime") process. A short time ago, I asked for volunteers to help with the next Haskell standard. A brave group has spoken up, and we've organized ourselves into a committee in order to coordinate the community's work. It will be the committee's task to bring together the very best ideas and work of the broader community in an "open-source" way, and to fill in any gaps in order to make Haskell' as coherent and elegant as Haskell 98.
Read the full announcement here.
Presently, the following resources are available:
- The haskell-prime mailing list
- The Haskell' issue tracking system/wiki
- A darcs repository for larger code examples and experiments
Please join us in making Haskell' a success.
- hdbc-odbc. John Goerzen released the first version of hdbc-odbc, the ODBC backend for HDBC. With this driver, you can use HDBC to connect to any database for which ODBC drivers exist, including such databases as MySQL, Oracle, MS SQL Server
- A Faster Binary. Bulat Ziganshin posted a preliminary optimised Binary library, achieving excellent (de)serialization speeds of around 50 Mb/s in testing.
- Process library. Bulat Ziganshin announced a new library abstracting over some of the process and concurrency functions in the standard libraries, using ideas from Unix pipes.
- Djinn. Lennart Augustsson released Djinn, a theorem prover/coding wizard, that generates Haskell code from a given type. A lambdabot plugin for Djinn was also written, for use in #haskell.
- Ranged Sets. Paul Johnson released a ranged sets library 0.0.1 and 0.0.2. Ranged sets allow programming with sets of values that are described by a list of ranges. A value is a member of the set if it lies within one of the ranges.
- Hmp3. Don Stewart announced a stable release of hmp3, an curses-based mp3 player written in Haskell. Portability has improved, and binaries are available for 5 architectures.
- HSQL. Krasimir Angelov released HSQL 1.7. New features include a driver for Oracle.
- HDBC. John Goerzen announced the 0.5.0, 0.6.0 and 0.99.0 releases of Haskell Database Connectivity library. Patterned after Perl's DBI, it includes an Sqlite3 and a PostgreSQL backend
- Shellac. Robert Dockins released Shellac, a framework for building read-eval-print style shells. This should ease the burden of binding readline-style interactive shells in Haskell.
- Lambda Shell. Robert Dockins also released v0.1 of Lambda Shell, a shell environment for evaluating terms of the pure, untyped lambda calculus. A lambdabot interface for use in #haskell also exists.
- Shaskell. David Mercer announced version 0.21a of Shaskell, a SHA2 library for sha256 and sha512 hashes, written in pure Haskell.
- hdbc-missingh. John Goerzen announced the initial release of HDBC-MissingH, a library to add database features to MissingH, allowing the use of a SQL database as storage for a simple DBM-like key/value interface.