<div dir="ltr"><div><div><div>Fellow Haskelleers,<br><br>I&#39;m pleased to <span>announce</span> the release of <span class="">haskell</span>-<span class="">src</span>-<span class="">exts</span>-1.14.0!<br><br>* On hackage: <a href="http://hackage.haskell.org/package/haskell-src-exts" target="_blank">http://hackage.<span class="">haskell</span>.org/package/<span class="">haskell</span>-<span class="">src</span>-<span class="">exts</span></a><br>


* Via cabal: cabal install <span class="">haskell</span>-<span class="">src</span>-<span class="">exts</span><br>* git repo: <a href="https://github.com/haskell-suite/haskell-src-exts">https://github.com/haskell-suite/haskell-src-exts</a><a href="http://code.haskell.org/haskell-src-exts" target="_blank"></a><br>
<br></div>There are two primary reasons for this release, and a number of smaller ones. <br><br>The first primary reason is technical: haskell-src-exts 1.14 revamps the Extension datatype, among other things to allow turning extensions on and off (similar to what Cabal allows). We also introduce the concept of a Language, separate from a set of extensions. This is the only backwards-incompatible change in this release.<br>
<br></div>The second reason is structural: haskell-src-exts is now part of a larger context -- the Haskell Suite. The package has a new home on github (see above), alongside its new cool friends: haskell-names and haskell-packages. There is also a really nice issue tracker there - please help me fill it, or better yet, empty it!<br>
</div><div><div><div><br><div>What this release does *not* cover is support for the extensions 
added to GHC in recent time (with the exceptions of CApiFFI and 
InterruptibleFFI). Work is in progress on many of these, and there will 
be another major release not far off in the future.<br></div><br><br>This release owes many thanks to Roman Cheplyaka in particular, as well as Erik Hesselink, Simon Meier and David Fox. Thanks a lot!<br><br></div><br><div>
Complete changelog:<br></div><div><div id=":vw"><br>1.13.6 --&gt; 1.14.0<br>===============<br><br>* Modernize the Extension datatype in L.H.E.Extension, following the lead<br>  of Cabal, to allow negative and positive extension modifiers (turning<br>
  features on and off). You need to worry about backwards-incompatible <br>  changes if any of the following pertains to you:<br>  1) If you use the Extension datatype programmatically - it has changed<br>     significantly (see documentation).<br>
  2) The ParseMode record now has one more field<br>     (baseLanguage :: Language), which might give you a type error.<br>  3) The behavior of the (extensions :: [Extension]) field has changed,<br>     which could bite you if you pass custom extensions in the ParseMode. <br>
     Previously, the ParseMode defaulted to the list of extensions accepted <br>     by Haskell2010, and if you set the list explicitly you would override <br>     this. Now, the defaults are { baseLanguage = Haskell2010, extensions = [] },<br>
     and explicitly setting a list of extensions will be interpreted on top of<br>     Haskell2010. See further the documentation for L.H.E.Extension.<br><br>* Add support for the &#39;capi&#39; calling convention. It is enabled with the CApiFFI<br>
  extension. It&#39;s been included since GHC 7.4, and advertised since 7.6.<br><br>* Add support for the &#39;interruptible&#39; FFI safety annotation, enabled with<br>  the InterruptibleFFI extension.<br><br>* Give better error message when lexing newline fails. In particular, fix the bug<br>
  when the parser would crash if the file didn&#39;t end with a newline.<br><br>* Support unboxed tuple expressions and patterns.<br><br>* Fix bug in lexing of primitive integer literals in hex or octal notation.<br><br>* Disallow negative primitive word literals<br>
  (such as W# (-0x8000000000000000##)).<br><br>* Allow phase control for SPECIALIZE pragma.<br><br>* Derive Foldable and Traversable instances for all annotated AST types.<br><br>* Fix bug with pretty-printing WARNING and DEPRECATED pragmas.<br>
<br><br>Cheers, Niklas</div></div></div></div></div>