nom v0.4.0 Release Notes

Release Date: 2015-09-08 // over 8 years ago
  • ๐Ÿš€ Considering the number of changes since the last release, this version can contain breaking changes, so the version number becomes 0.4.0. A lot of new features and performance improvements!

    Thanks

    • ๐Ÿ“š @frewsxcv for documentation fixes
    • @ngrewe for his work on producers and consumers
    • ๐Ÿ“œ @meh for fixes on chain! and for the rest parser
    • ๐Ÿ”จ @daboross for refactoring many0! and many1!
    • @aleksander for the switch! combinator idea
    • ๐Ÿ“œ @TechnoMancer for his help with bit level parsing
    • @sxeraverx for pointing out a bug in is_a!

    ๐Ÿ›  Fixed

    • ๐Ÿ›  count_fixed! must take an explicit type as argument to generate the fixed-size array
    • ๐Ÿ“œ optional parsing behaviour in chain!
    • count! can take 0 elements
    • is_a! and is_not! can now consume the whole input

    โž• Added

    • ๐Ÿ‘€ it is now possible to seek to the end of a MemProducer
    • ๐Ÿ“œ opt! returns Done(input, None) if the child parser returnedIncomplete`
    • rest will return the remaining input
    • ๐Ÿ‘€ consumers can now seek to and from the end of input
    • ๐Ÿ“œ switch! applies a first parser then matches on its result to choose the next parser
    • ๐Ÿ“œ bit-level parsers
    • ๐Ÿ“œ character-level parsers
    • ๐Ÿ“œ regular expression parsers
    • implementation of take_till!, take_while! and take_while1!

    ๐Ÿ”„ Changed

    • alt! can return Incomplete
    • the error analysis functions will now take references to functions instead of moving them
    • ๐ŸŽ performance improvements on producers
    • ๐ŸŽ performance improvement for filter!
    • ๐ŸŽ performance improvement for count!: a Vec of the right size is directly allocated