[jhc] almost to 0.8.0 - feedback welcome

John Meacham john at repetae.net
Wed Feb 1 01:41:20 CET 2012

Hi all,

I am happy to announce that we are almost upon the 0.8.0 release of
jhc, which has quite a few changes from the past so I was hoping I
could get some people to help test the newest darcs tree and give

changes include.
 - A brand new library descriptor file format. Now it is a true YAML
file. no more of the confusing quasi-cabal files that were not well

 - the library description files now can affect pretty much any aspect
of compilation, so it is much easier to make a self-contained build or
for tools like configure/cabal to interface to jhc. They just need to
spit out an appropirate yaml file rather than care about passing the
right options to jhc in addition to creating a description file.

 - jhc transparently handles '.hsc' files (assuming you have hsc2hs
installed). It even does the right thing when cross compiliing! using
the target architectures types rather than the hosts.

- the primtive libraries have been re-done, now there is a truely
absolutely minimal jhc-prim library that is everything that must exist
for jhc to work. everything else and i mean everything is implemented
in normal haskell code. Want to create a varient of haskell that has
16 bit ints, ASCII 8 bit Chars and pervasively uses null terminated C
style strings? just create a base-tiny library and link it against

- the standalone deriving extension has been implemented, this greatly
improves the ability to re-arrange the libraries logically.

- support the LANGUAGE pragma and the equivalant field in the library
description files with ghc-compatibility. (ghc extensions are mapped
to the closest matching jhc flags.)

Things I am still working on but want for the release:

- C code and header files will be wrapped up into the .hl file as part
of a library build. so there is no need to coordinate native code and
jhc libraries, installing a library will always be as simple as
dropping an hl file in your library directory. (notably, this will
allow transparent distribution of 'bytestring' which has C components)

- full haskell 2010 compliance, getting closer, rewrote a lot of
libraries, still some work to go.

- newtype deriving, sort of hacky and unchecked right now but oh so very useful.

What I can use help with:

- documentation, anything obvious missing, out of date?

- external libraries. in the lib/ext directory I have a few. I'd like
to expand it and keep track of what people want. I'd like some better
automated way to handle these libraries so they need not be integrated
with the main darcs tree. probably post 0.8.0.

- many error messages produced by jhc are inscrutable. I'd like to
start keeping track of the most eggregious ones and working on fixes.


More information about the jhc mailing list