The Stackage team is happy to announce the first official LTS Haskell release, LTS Haskell 1.0. The LTS Haskell Github repository has a good overview of the project, and our initial blog post provides quite a bit more detail. To quote:
LTS Haskell: Version your Ecosystem
LTS Haskell is a curated set of packages which includes non-breaking point releases. It is a companion to Stackage Nightly: whereas Stackage Nightly releases include potentially breaking changes with each new release, LTS Haskell maintains major version stability for a longer period of time.
The plan for LTS 1 is:
- Run weekly point releases. The first point release, LTS Haskell 1.1, will be run on Sunday, January 11.
- Continue running these releases until LTS 2 is released, scheduled for April 1.
- Like all Stackage snapshots, each release will be available for usage in perpetuity going forward. The only timeline is how far into the future we will continue generating patch releases.
As discussed previously, we are aware that three months is not really "long term support." The reason for the short terms here is so that we can shake out the process well for this first release. If things go exceptionally well and there is community desire to change the planned dates, we will certainly discuss it.
If you want the incredibly short guide to using this release, just run the following in your project:
In the future, when you want to upgrade to a new point release, just delete your old cabal.config and download the latest point release, e.g.:
Your code should continue compiling against the new snapshot without any code changes, barring typical caveats of the PVP (unqualified import lists, mistakes by authors, etc).
Together with this release, we're also announcing some improvements to Stackage Server around hosted documentation to make LTS Haskell more useful.
Full module listing
The main page for LTS Haskell 1.0 contains a listing of all packages, their version numbers, and- where available- a link to documentation. (Documentation may not be available if the package only contains executables, or if there is a bug in the Haddock markup in the package.)
We've now added one more feature: a full module listing. This allows you to view all available modules and easily determine which package provides a module.
If you are using LTS Haskell for your projects, I strongly encourage you to use the stackage.org hosted documentation when looking things up, for one simple reason: you're guaranteed that links to other packages will include versions that are also part of the LTS Haskell release set. (The same logic applies to Stackage Nightly releases.)
All of this adds up to a hopefully more pleasant way of thinking about the Haskell library ecosystem: instead of a huge number of individual packages whose individual modules and changesets you need to keep in your head, relying on an LTS Haskell release reduces it all to a single version number for "my Haskell ecosystem," with a massive number of modules at your disposal to write your applications.
Experimental Hoogle support
FP Complete has hosted a Hoogle service for a few years now. This Hoogle provides access to the full FP Haskell Center library set. I personally use this service on an almost daily basis, as I know many others do as well. However, the FP Haskell Center package sets are not completely in sync (yet) with LTS Haskell releases, and therefore the documentation can be slightly out of date.
So to address that, we've added Hoogle search support to stackage.org as well. You can go to any snapshot page- including LTS Haskell 1.0- and perform a Hoogle search. This search will encompass the entirety of the package set. As usual, a big thank you goes to Neil for providing such an awesome tool to the community.
And since I brought it up: FP Complete does intend to synchronize the FP Haskell Center library set with LTS Haskell releases. That will take a little bit longer, but we'll make an announcement when it's ready.
LTS Haskell is out. I'm already using it, and given the minor delta from how Stackage Nightlies work, I believe it should present no hurdles for greater adoption. The community process of dealing with patch releases will be an interesting adventure that I'm looking forward to. Please give this a spin, provide feedback, and let's make a solid, stable basis for doing Haskell development!