Friday, August 24, 2012

You can soon play in the cabal sandbox

I just merged the last large set of patches, written by Mikhail Glushenkov, that are needed to implement the new cabal sandbox feature (a generalization of cabal-dev, cab, etc) into the cabal master branch.

This work will alleviate the dependency problems that crop up too often when working with cabal. It doesn't solve all problems, but it should prevent package breakages due to reinstalls (just like cabal-dev does) by avoiding the use of a shared package database.

There's still some work left to be done, mainly coming up with a UI that supports all the use cases we have and is easy to use at the same time. I hope we can get that done by the end of ICFP.

The mechanism used to implement this feature, package environments, will also allow us to do other useful things, like allowing you to specify a list of exact package versions you want to build your package against. This is useful e.g. if your building and shipping an executable, as you don't want each version to be released against a different set of library versions, depending on what the dependency solver picked on a given day.


  1. Just wanted to thank you for mentoring me during this GSoC. Working with you has been a pleasure!

    I'll write a blog post with a more detailed introduction to this feature once we agree on the final user interface.

    1. Mikhail what is the URL of your blog to wait new posts on?

  2. This is great. I just tested it and it works wonderfully. Thanks to you both!