[Haskell] ANN: Updates in the monadic regions family

Bas van Dijk v.dijk.bas at gmail.com
Thu Mar 10 00:54:25 CET 2011

Dear all,

I released new versions of some of my packages. Here are the changelogs:


* Switch from monad-peel to monad-control.

* Removed Control.Monad.Trans.Region.Concurrent.
  The fork functions contained bugs which could not be fixed.
  I'm working on a way to copy handles from one thread to another
  but the design has not settled yet.

* Removed Data.RegionRef.
  I always considered this module a bit of a wart.

* Added support for local regions.
  Primarily needed for the alloca functions from the
  regional-pointers package. More on that below.


* Switch from monad-peel to monad-control.

* Major API change:
  Use the new local regions. This means that instead of:

  alloca ∷ (Storable α, MonadPeelIO pr)
         ⇒ (∀ s. RegionalPtr α (RegionT s pr) → RegionT s pr β)
         → pr β

  I now have:

  alloca ∷ (Storable α, MonadControlIO pr)
         ⇒ (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β)
         → RegionT s pr β

  This allows my alloca to use the native alloca
  which is more efficient than doing a manual malloc and free
  as I did before.

  The type also allows to open resources in the continuation
  and use them outside the continuation and visa versa.

* Have separate types for the three different pointers:
  - RegionalPtr: for pointers created using malloc.
  - LocalPtr: for pointers created using alloca.
  - NullPtr: for the nullPtr.

* Add the type classes Pointer and AllocatedPointer to classify them.


* Switch from monad-peel to monad-control.

* Support regional-pointers-0.6 and use its overloaded pointers.

* Add separate types for standard handles: StdFileHandle
  and normal handles: RegionalFileHandle.

* Add the type class FileHandle to group them.

* Overload the filehandle in operations.


* getStrDesc and getStrDescFirstLang now return a Text
  instead of a String. This is a more efficient and cleaner interface.


* Switch from monad-peel to monad-control.

* Support iteratee-0.8.*.

* Support usb-0.9.


* Switched from monad-peel to monad-control.

* Exported the ReadEndpoint, WriteEndpoint
  and EnumReadEndpoint type classes
  so you can refer to them in type signatures.

* Support usb-0.8:
  getStrDesc and getStrDescFirstLang now return a Text
  instead of a String.

* Support regions-0.9.

* Support usb-enumerator-0.3.

* Support iteratee-0.8.*.



More information about the Haskell mailing list