1 News from 2006
- Ninth annual ICFP Programming Contest (2006) is over. Results will be announced in September.
HDBC 1.0 . John Goerzen released the latest HDBC. HDBC is a database tool, modeled loosely on Perl's DBI interface, though it has also been influenced by Python's DB-API v2, JDBC in Java, and HSQL in Haskell. You can find the code here.
hpodder . John Goerzen announced the first release of hpodder. hpodder is a podcast downloader (podcatcher) written in pure Haskell. It exists because John was unsatisfied with the other podcatchers for Linux. Full details here.
hmp3 1.1 . Don Stewart announced a new release of hmp3, the curses-based mp3 player written in Haskell. Release 1.1 is a maintenance release, fixing support for GHC 6.4.2
QDBM and Hyper Estraier bindings . Jun Mukai released a library of bindings to Quick DBM, a database module similar to GDBM, Berkeley-DB, optimized for performance and a simple API. Additionally, Jun's code includes support for Hyper Estraier, a full-text search system using QDBM, with the ability to search documents according to keywords.
Streams 0.2 . Bulat Ziganshin announced the beta release of his Streams 0.2 library, providing fast string and binary IO, now with Data.ByteString support.
HNOP 0.1 . Ashley Yakeley released the first version of HNOP 0.1. HNOP does nothing. This version should be considered "beta" quality.
HList updates . Oleg Kiselyov announced that HList, the library for strongly typed heterogeneous lists, records, type-indexed products (TIP) and co-products is now accessible via darcs, here. Additionally, Oleg pointed to some new features for HList, including a new representation for open records. Finally, he published a note on how HList supports, natively, polymorphic variants: extensible recursive open sum datatypes, quite similar to Polymorphic variants of OCaml. HList thus solves the `expression problem' -- the ability to add new variants to a datatype without changing the existing code.
Translating Haskell into English . Shannon Behrens published a new Haskell tutorial, hoping to give readers a glimpse of the Zen of Haskell, without requiring that they already be Haskell converts.
The GHC Hackathon . Simon Peyton-Jones announced that GHC HQ are going to run a hackathon, in Portland, just before ICFP this September (14-15th). It'll be held at Galois's offices, in Beaverton. Thanks go to Galois for hosting the meeting. Here are the details. If you are interested in finding out a bit about how GHC works inside, then you should find the hackathon fun. It will be informal and interactive. If you think you might come, please take a look at the above page, and register.
Bytecode API library . Robert Dockins announced a release of an alpha version of a library for reading and writing the YHC bytecode file format. It reads and writes the entire bytecode set, version 1.9 (the one used by recent YHC builds). Check it out.
Google Summer of Code. The Haskell.org team announced that nine Haskell projects have been selected to receive funding to the value of $45k under Google's 2006 Summer of Code program. A wide range of projects will be worked on, contributing to the community important tools and libraries. The students have until August 21 to complete their projects, and receive their grants. Details of the accepted projects can be found here
Haskell Communities & Activities Report. Andres Loeh published the 10th edition of the Haskell Communities and Activities Report (HCAR). If you haven't encountered the Haskell Communities and Activities Reports before, you may like to know that the first of these reports was published in November 2001. Their goal is to improve the communication between the increasingly diverse groups, projects and individuals working on, with, or inspired by Haskell.
Read the 10th edition here.
Would you like a job working on GHC?. Simon Peyton-Jones announced that GHC HQ is looking for support engineer. The Glasgow Haskell Compiler (GHC) is now being used by so many people, on so many platforms, that GHC HQ has been struggling to keep up. In particular, the candidate should be someone who is enthusiastic about Haskell, and fired up about the prospect of becoming a GHC expert.
Shellac and Lambda Shell 0.3. Robert Dockins announced the simultaneous release of Shellac 0.3 and Lambda Shell 0.3. Shellac is a library for creating read-eval-print style shells. It makes binding to feature-rich shell packages (ie, readline) easier. Lambda shell is full-featured shell environment for evaluating terms of the pure untyped lambda calculus and a showcase/tutorial for Shellac's features.
darcs-graph. Don Stewart released darcs-graph, a tool for generating graphs of commit activity for darcs repositories.
- extracts version information from Cabal files,
- maintains version tags in darcs,
- computes patch levels by querying darcs,
- extracts the current context from darcs, and
- adds all this information to a source file
Streams 0.1e. Bulat Ziganshin released Streams library version 0.1e. Now cabalised and BSD-ified.
Hitchhikers guide to Haskell - chapter 5. Dmitry Astapov announced that chapter 5 of his online tutorial, the Hitchhikers guide to Haskell, is available. Changes include: It's bigger. It's better. It now comes with source code included.
Haskell Shell (HSH) 0.1.0. John Goerzen released version 0.1.0 of HSH, the Haskell shell. Things are still very preliminary in many ways, but this version already lets you:
- Run commands
- Pipe things between commands
- Pipe command input/output into and out of pure Haskell functions
- Pure Haskell functions are as much a first-class citizen as is grep or cat
Edison 1.2. Robert Dockins released the final, stable release of Edison 1.2. Edison is a library of efficient, purely-functional data structures for Haskell.
Arrays & References Library 0.1. Bulat Ziganshin announced version 0.1of his arrays and references library. Featuring:
- Unboxed references in IO and ST
- Monad-independent interfaces to boxed and unboxed references
- Syntax sugar to make using of mutable objects easier (=:, +=, -=,..)
Kamiariduki Shelarcy released Kamiariduki - a system to judge your derivative work's purpose and license is valid with Ceative Commons License Works.
lambdabot 4.0. Don Stewart announced the release of version 4.0 of the venerable Haskell IRC bot, lambdabot. lambdabot is a stable, feature rich IRC bot based on a plugin framework. lambdabot 4.0 comes with a suite of more than 50 plugins, and many new features.
Linspire Chooses Haskell for Core OS Development. Clifford Beshers announced that the OS team at Linspire, Inc. is standardizing on Haskell as their preferred language for core OS development. Much of the infrastructure is being written in Haskell, including the Debian package builder (aka autobuilder). Other tools such as ISO builders, package dependency checkers are in progress. The goal is to make a tight, simple set of tools that will let developers contribute to Freespire, based on Debian tools whenever possible.
lambdaFeed. Manuel Chakravarty released lambdaFeed -- lambdas for all! lambdaFeed is an RSS 2.0 feed generator. It reads news items - in a non-XML, human-friendly format - distributed over multiple channels and renders them into the RSS 2.0 XML format understood by most news aggregators as well as into HTML for inclusion into web pages. Source is available in darcs. Check it out.
Milfoh, an image to texture loading library. Maurizio Monge announced he has put together a very small library, using SDL_image (and a bare minimun of SDL), to load image files as opengl textures. More information here.
Haskell Charting Library. Tim Docker released his Haskell 2D charting library. It's still at quite an early stage, but already it has:
- Line charts, points charts, fills, and combinations.
- Automatic layout sizing and adjustment.
- Auto scaling of axis ranges
- Extensible to support new plot types
- Uses the cairo graphics library for output
Edison 1.2RC4. Robert Dockins announced the 4th release candidate for Edison 1.2. Edison is a library of efficient data structures for Haskell.
Collections pre-release. Jean-Philippe Bernardy announced an alpha release of the new collections package he (and others) have been working on. It's still far from perfect, but I hope it's already a good choice for many use cases of collection data structures.
Haskell Graph Automorphism Library. In a busy week, Jean-Philippe also released HGAL 1.2 (Haskell Graph Automorphism Library), a Haskell implementation of Brendan McKay's algorithm for graph canonic labeling and automorphism group. (aka Nauty). Improvements over the previous release include a faster algorithm implementation and the library is now cabalised.
Darcs 1.0.7. Tommy Pettersson announced the release of darcs 1.0.7, containing a few bug fixes, and some new features.
hmake. Malcolm Wallace released version 3.11 of hmake, the compiler-independent project-building tool for Haskell programs. It automates recompilation analysis, based on import declarations in your files, to rebuild only those modules that are impacted by a change. It is rather like ghc's --make mode, but faster, less memory intensive, and it works with any compiler (e.g. hbc, nhc98).
cpphs. In a busy week, Malcolm also released version 1.2 of cpphs, the in-Haskell implementation of the C pre-processor. The major change in this release is that the source files have been re-arranged into a cabal-ised hierarchical library namespace, so you can use cpp functionality from within your own code, in addition to the stand-alone utility.
Cabal 1.1. Duncan Coutts (as the new Cabal release manager) announced that Cabal-1.1.4, the version shipped with GHC 6.4.2 is now available to download as a separate tarball. There is also a new mailing list for Cabal development discussion including patch review. This is also where patches sent via "darcs send" will end up. The Cabal team would also like to take the opportunity to invite people to get involved in Cabal development, either new features or squashing annoying bugs.
DownNova-0.1. Lemmih released downNova, a program designed for automating the process of downloading TV series from mininova.org. Written in Haskell, it will scan your downloaded files to find out what your interests are and download missing/new episodes to your collection. Advanced classification techniques are used to interpret the file names and 'downNova' will correctly extract series name, season number, episode number and episode title in nigh all cases.
Student SoC Application Deadline is rapidly approaching. Paolo Martini encouraged students to apply to google, using the student application form, and Haskell.org is looking forward to the several dozen applications we hope to receive.
GHC 6.4.2. Simon Marlow announced the release of the Glasgow Haskell Compiler, version 6.4.2. GHC is a state-of-the-art programming suite for Haskell. Included is an optimising compiler generating good code for a variety of platforms, together with an interactive system for convenient, quick development. The distribution includes space and time profiling facilities, a large collection of libraries, and support for various language extensions, including concurrency, exceptions, and foreign language interfaces (C, whatever). GHC is distributed under a BSD-style open source license. For more information, see:
Communities and Activities Report. Andres Loeh released the call for contributions to the 10th (!) Haskell Communities and Activities Report. If you are working on any project that is in some way related to Haskell, write a short entry and submit it to Andres.
The Haskell Communities and Activities Report is a bi-annual overview of the state of Haskell as well as Haskell-related projects over the last, and possibly the upcoming 6 months. If you have only recently been exposed to Haskell, it might be a good idea to browse the November 2005 edition -- you will find interesting topics described as well as several starting points and links that may provide answers to many questions.
Google Summer of Code. Paolo Martini announced that Haskell.org would have a presence as an official mentoring organisation for this year's Google Summer of Code. Several members of the Haskell community have volunteered as mentors, and a large number of proposals have been listed. If you're interested in mentoring, suggesting projects, or applying as a student to spend your summer writing Haskell code, check it out!
Debian from Scratch. John Goerzen announced Debian From Scratch (DFS), a single, full rescue linux CD capable of working with all major filesystems, LVM, software RAID, and even compiling a new kernel. The tool that generates the ISO images (dfsbuild) is written in Haskell. The generated ISO images also contain full, working GHC and Hugs environments.
Hazakura - search-based MUA. Jun Mukai announced the first release of hazakura, a search-based mail client, written in Haskell.
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.