Module documentation for 0.13.1.0
Welcome to attoparsec
attoparsec is a fast Haskell parser combinator library, aimed particularly at dealing efficiently with network protocols and complicated text/binary file formats.
I'm happy to receive bug reports, fixes, documentation enhancements, and other improvements.
Please report bugs via the github issue tracker.
Master git repository:
git clone git://github.com/bos/attoparsec.git
This library is written and maintained by Bryan O'Sullivan, .
Improved performance of
pureis now strict in
runScannernow correctly returns the final state (https://github.com/bos/attoparsec/issues/105).
- Restore the fast specialised character set implementation for Text
- Move testsuite from test-framework to tasty
- Performance optimization of takeWhile and takeWhile1
Fixed a bug in the implementations of inClass and notInClass for Text (https://github.com/bos/attoparsec/issues/103)
Made the parser type in the Zepto module a monad transformer (needed by aeson's string unescaping parser).
Fixed a case folding bug in the ByteString version of stringCI.
Fixed an indexing bug in the new Text implementation of string, reported by Michel Boucey.
Fixed a case where the string parser would consume an unnecessary amount of input before failing a match, when it could bail much earlier (https://github.com/bos/attoparsec/issues/97)
Added more context to error messages (https://github.com/bos/attoparsec/pull/79)
Fixed incorrect tracking of Text lengths (https://github.com/bos/attoparsec/issues/80)
Fixed the incorrect tracking of capacity if the initial buffer was empty (https://github.com/bos/attoparsec/issues/75)
Fixed a data corruption bug that occurred under some circumstances if a buffer grew after prompting for more input (https://github.com/bos/attoparsec/issues/74)
Now compatible with GHC 7.9
Reintroduced the Chunk class, used by the parsers package
A new internal representation makes almost all real-world parsers faster, sometimes by big margins. For example, parsing JSON data with aeson is now up to 70% faster. These performance improvements also come with reduced memory consumption and some new capabilities.
The new match combinator gives both the result of a parse and the input that it matched.
The test suite has doubled in size. This made it possible to switch to the new internal representation with a decent degree of confidence that everything was more or less working.
The benchmark suite now contains a small family of benchmarks taken from real-world uses of attoparsec.
A few types that ought to have been private now are.
A few obsolete modules and functions have been marked as deprecated. They will be removed from the next major release.
New function scientific is compatible with rational, but parses integers more efficiently (https://github.com/bos/aeson/issues/198)
The new Chunk typeclass allows for some code sharing with Ed Kmett's parsers package: http://hackage.haskell.org/package/parsers
New function runScanner generalises scan to return the final state of the scanner as well as the input consumed.
New dependency: the scientific package. This allows us to parse numbers much more efficiently.
peekWord8', peekChar': new primitive parsers that allow single-character lookahead.