CC: Lennart K, maintainer of 'binary'.

Dan Fornika <dforn...@gmail.com> writes:

> Is there a reason that bio depends specifically on binary==0.4.* and not
> something like binary>=0.4?

Yes, there was a strictness change in 0.5.  To read SFF files
(i.e. gigabyte-sized lists of records) lazily, bio depends on being able
to read one record at a time - the main reason is of course to reduce
memory consumption, but it also improves performance.  The reason it was
changed in binary was that it improved performance of GHC (which
probably reads smaller files).

Some possible solutions:

1) rip out the bits you need from bio (which is unlikely to include the
   SFF bits), and wrap them up as a separate library, compliant with
   biocore. 

This would be the preferred way forward, but could be a bit of work,
depending on which parts you need.

2) Remove the dependency on binary by rewriting the SFF part to use
   iteratees.

If starting from scratch, this would probably be a good choice, but as
it is now, it is likely to break a lot of old code, so I'm reluctant to
do that.

3) Rename binary-0.4.x to binary-lazy and depend on that instead.

I started with this some time ago, but never got around to releasing
it.  It would be kind of a hack, now that "everybody" agrees that
iteratees are a better solution.  An alternative would be to just
include a private copy of binary-0.4 in bio.

4) Change hxt to accept binary-0.4.x

I don't see why hxt should depend on >=0.5, unless it somehow has the
opposite strictness issue. This might be the easiest way to get
something working, but would perpetuate the dependency on an old version
of the library.

-k
-- 
If I haven't seen further, it is by standing in the footprints of giants
_______________________________________________
Biohaskell mailing list
Biohaskell@biohaskell.org
http://malde.org/cgi-bin/mailman/listinfo/biohaskell

Reply via email to