Stop! Tickets are now managed at GitHub.

Please enter new tickets, and find and edit existing tickets there:

Ticket #86 (closed defect: wontfix)

Opened 8 years ago

Last modified 7 years ago

Proposal: Add Package: binary

Reported by: dons Owned by: dons
Priority: major Milestone: 2010.2.0.0
Component: Package Addition Keywords:

Description (last modified by dons) (diff)

What functionality does the package provide?Efficient, pure binary serialisation using lazy ByteStrings?. Haskell values may be encoded to and from binary formats, written to disk as binary, or sent over the network.
What language features/extensions does the package require?CPP,FlexibleContexts?
How popular is the package in Hackage downloads? Rank 6 / 1200
How many packages depend on this package (what does it enable to build)? 68 packages
Do any applications of note depend on this package? yi
Does it provide some foundational, general purpose functionality?parsing binary data from streams of bytes
Are there equivalent libraries in the Python (or other) base libraries? Yes, "struct - Interpret strings as packed binary data", though this is more general
Is this package portable to all platforms? Yes, and to Hugs
Does this package require additional C libraries? No
Does the package follow the package versioning policy? Yes.
Is the code of high quality? Yes.
What is the bug history of this code? There have been a handful of bugs, none in the last 3 or so releases
Is the code cabalized and hosted on Hackage? Yes
Does it build with cabal-install? Yes
Does it provide haddock documentation? Yes
Does it have a test suite? Does it have test coverage data? Yes, Yes.
Who is the maintainer of the code? Lennart Kolmodin, Don Stewart
Does the package add new dependencies? No.
Does the package build with build-style: Simple? Yes.
Does this package duplicate existing functionality in the Haskell Platform? No.
Does the package reuse types and data from the Haskell Platform? What types does it define? It reuses lazy bytestrings, and base word types
Does the package use the hierarchical naming conventions? Yes.
Does the package build with -Wall? Yes.
Does the package have performance figures/complexity annotations? It has performance figures.
What license does the library have?BSD3
Is the library "Haskell-ish"? It provides a purely functional, lazy interface to binary encoding/decoding.
Is the library thread safe?Yes.
Is the package a stop-gap for a more general solution? A strict version would also be useful.
What other packages provide similar functionality? binary-strict, attoparsec to some degree, various bit parsing libs
Will the maintainer adhear to the release schedule for the platform? Yes.
Other relevant criteria?

Action Items

  • Establish benchmarks for the default instances shipped with Binary.
    • Krasimir confirms stack overflows and performance issues of concern have gone.
  • Documentation for how to catch parse failures with Binary (via evaluate/catch).
  • An easier to catch failure mode.
  • Variable width encoding for Int instance?
  • a piece of documentation on the side could do until haddock supports documenting instances

Change History

Changed 8 years ago by dons

  • description modified (diff)

Changed 8 years ago by dons

  • description modified (diff)
  • milestone set to 2009.4.0

Changed 8 years ago by dons

  • description modified (diff)

Changed 8 years ago by dons

  • description modified (diff)

Changed 8 years ago by maeder

For us Data.Binary wasn't useful at all, because it does not consider sharing. The created files have been 25 times bigger and consumed too much memory when read back. The initial sentence of are absolutely true, but I did not test this package.

I've put parts of our code in cabal packages:

Ideal would be a binary format that considers sharing (and does not need to be further compressed)

Changed 7 years ago by petersen

Also used by hashed-storage (darcs 2.4).

Changed 7 years ago by refold

  • milestone changed from 2009.4.0 to 2010.2.0.0

Milestone 2009.4.0 deleted

Changed 7 years ago by dons

  • status changed from new to closed
  • resolution set to wontfix

Closing, in favor of the new proposals process.

Note: See TracTickets for help on using tickets.