[Haskell-cafe] ANNOUNCE: jhc 0.8.2

John Meacham john at repetae.net
Mon Jun 2 18:47:23 UTC 2014

Lots of internal improvements in this one, so may be of more interest
to developers


- completely replaced the front end parser/lexer with a new more
flexible one. My rewritten one is about 3,250 lines shorter.

- The new one uses a general precedence parser for application as well
as infix operators, allowing consistent handling of bang, irrefutable,
and @ patterns and allows prefix and infix operators with a higher
precedence than application to be defined. Incidentally, this allows
for ~ and @ in expressions. (~) = negate (prefixr 11) gives us a nice
strongly binding negative and @ (infixr 12) is perfect for type
directed name resolution without further overloading the humble dot.
they parse exactly the same as they do in patterns so no new magic is
being added to the symbols other than allowing them in expressions.

- Layout algorithm is fully in the lexer now, no lexer/parser
interaction needed and useful transformations happen between the two
simplifying the parser.

- updated a lot of the external libraries to new versions

- improvements to the build based on feedback, now gives much better
error messages about what went wrong.

- include an experimental utility to automatically download 3rd party
packages from hackage and install them, it has some kinks, but even if
it can't do it automatically, it provides a template for easily
modifying the package to work.

- removed the last of the cabal-cruft from the library build system.

- fixed a lot of bugs relating to errors not being caught early by jhc
so they produce a cryptic message from the compiler later, attach
source location to more errors for better reporting.

- ghc 7.8 compatibilty contributed by others. (thanks!)

- infix type constructor extension supported

- field punning extension now supported

- new option -fno-sugar to turn off all desugaring that would
introduce any hidden dependencies, all literals are unboxed under it.

- unboxed kinds now more general, work in more places

- record field names may overlap

- more efficient binary representation using LEB128

- Data.String added with mild magic.

John Meacham - http://notanumber.net/

More information about the Haskell-Cafe mailing list