v4.6.1 (2021-08-25)

Performance

  • Avoid a saturating add in slice_uncons_while (7f330b0c)
  • Avoid a saturating add in slice_uncons_while (ad4180dd)

v4.6.0 (2021-06-16)

Features

v4.5.2 (2021-01-07)

v4.5.1 (2020-12-27)

Bug Fixes

v4.5.0 (2020-12-25)

Features

  • Remove pin-project-lite from the ‘std’ feature (32ef87b0)
  • Add async decoding for tokio version 1 (8e91f57d)

v4.4.0 (2020-11-18)

Features

  • Add support for decoding using tokio_03 (ce1612ff)
  • Add a length_prefix combinator (9e343b2a, closes #297)
  • Add a spanned combinator (1a70f3f4)
  • Add a spanned combinator (9a8fead8)
  • Allow conversion between errors with different token,range,position types (65fe0af2, breaks #)

Breaking Changes

  • Allow conversion between errors with different token,range,position types (65fe0af2, breaks #)

v4.3.2 (2020-09-08)

v4.3.1 (2020-08-26)

Bug Fixes

  • Make the decode macros work for redis (82b908d8)

v4.3.0 (2020-07-10)

Features

  • Specialize decoding on BufReader (9559e114)
  • Add a BufReader abstraction for Decoder (d65a23e8)
  • Allow tuple structs and functions in struct_parser! (48a16f6b)

v4.2.1 (2020-05-20)

Performance

  • Use size_hint in iterate (b2649e3b)
  • Pre-allocate collections for count* parsers (5f37857c)

v4.2.0 (2020-05-17)

Features

  • Add any_send_sync_partial_state (7e90807a)

v4.1.0 (2020-04-22)

4.0.1 (2020-01-23)

Breaking Changes

  • Make the decode macros take read by parameter (aa813fb1, breaks #)

Features

  • Make the decode macros take read by parameter (aa813fb1, breaks #)

Bug Fixes

  • Don't block decoding if there are more data in the buffer (6659f993)
  • Don't try to read into the entire buffer for std decoding (d613dc93)

4.0.0 (2020-01-16)

Features

  • Relax the decode*! macros to no longer need BufRead (bc5b7794)
  • Add decode_futures_03_buf_read (f403ecda)
  • Add the produce parser (ac15b87c)

4.0.0-beta.2 (2019-12-19)

Features

  • Increase tuple parsers to 20 elements (45781fea)
  • Remove deprecated re-exports (b4e23207, breaks #)
  • Add decode_tokio_buf_read! to parse tokio::io::BufRead (4d38f7c2)
  • Add decode_buf_read! to parse BufRead without (dbe23ce9)
  • Add a macro to incrementally decode std::io::BufRead (6e2f1121)
  • Rename Consumed to Commit and Empty to Peek (129046e3, breaks #)
  • Rename Consumed{Ok,Err} to Commit{Ok,Err} and Empty{Ok,Err} to Peek{Ok,Err} (0ac1fd4f)
  • Add a dedicated error for ReadStream (37bbd843)

Bug Fixes

  • Handle partial parsing in sep_end_by (281e0d30)

Breaking Changes

  • Remove deprecated re-exports (b4e23207, breaks #)
  • Rename Consumed to Commit and Empty to Peek (129046e3, breaks #)

4.0.0-beta.1 (2019-10-08)

Bug Fixes

  • Handle partial parsing in the num parsers (47764c7f)
  • Don't bind the input lifetime to the parser with expected/message (618c69e0)

Breaking Changes

  • Merge FullRangeStream into RangeStreamOnce (c160a971, breaks #)
  • Rename StreamOnce::Item to Token (74a0bbd3, breaks #, #)
  • Minimum rust version is now 1.32 (7b77508c, breaks #)
  • Only require &mut I in decode (e154dbc2, breaks #)
  • Generalize factory to take the Input (19b1a73e, breaks #)

Features

  • Merge FullRangeStream into RangeStreamOnce (c160a971, breaks #)
  • Rename StreamOnce::Item to Token (74a0bbd3, breaks #, #)
  • Allow fmt::Display be used to specify errors in combinators (82796d4a, closes #255)
  • Minimum rust version is now 1.32 (7b77508c, breaks #)
  • Only require &mut I in decode (e154dbc2, breaks #)
  • Add RepeatUntil (7f4a310f)
  • Generalize factory to take the Input (19b1a73e, breaks #)
  • Add the iterate parser (342a45b4)
  • Add dispatch! (0740ce0f)
  • impl Stream* for &mut T (51e7e2b7)
  • Add From<S> for easy::Stream<S> (8f695cc6)
  • Allow ReadStream parsers to use &[u8] in errors (6b62a857, closes #249)

4.0.0-alpha.2 (2019-06-17)

Features

  • impl Stream* for &mut T (51e7e2b7)
  • Add From<S> for easy::Stream<S> (8f695cc6)
  • Allow ReadStream parsers to use &[u8] in errors (6b62a857, closes #249)

4.0.0-alpha.1 (2019-05-07)

Breaking Changes

  • Drop support for regex 0.2 (bf6aeb06, closes #247, breaks #)
  • Rename tokens2 to tokens and tokens to tokens_cmp (3dadbb4f, closes #166, breaks #)
  • Remove the std::result::Result returning parse functions (6ec094ef, closes #244, breaks #)
  • Make PointerOffset easier to understand and use (5f6d65b3, closes #238, breaks #)
  • Allow reset to return errors (3055c810, closes #231, breaks #)
  • Remove the PartialEq bound from Item and Range (24e1087c, closes #219, breaks #)

Features

  • Drop support for regex 0.2 (bf6aeb06, closes #247, breaks #)
  • Rename tokens2 to tokens and tokens to tokens_cmp (3dadbb4f, closes #166, breaks #)
  • Remove the std::result::Result returning parse functions (6ec094ef, closes #244, breaks #)
  • Allow reset to return errors (3055c810, closes #231, breaks #)
  • Remove the PartialEq bound from Item and Range (24e1087c, closes #219, breaks #)

Bug Fixes

  • Don't require macro_use when using parser! in rust 2018 (72e4c70f, closes #241)
  • Make PointerOffset easier to understand and use (5f6d65b3, closes #238, breaks #)

3.8.1 (2019-03-13)

Bug Fixes

  • Handle partial parsing in take_fn/take_until* (bae1e3bb)

3.8.0 (2019-03-12)

Features

  • Add take_fn and take_until_bytes (5f560780)

3.6.7 (2019-02-13)

Bug Fixes

  • Forward is_partial in all Stream adaptors (121b3987)

3.6.6 (2019-01-12)

  • Fix two inconsisties regarding EOI #227

3.6.5 (2019-01-09)

Bug Fixes

  • not_followed_by should fail on empty successful parses (aa17e7d2)
  • Propagate the PartialState through parser! uses (ae888244, closes #223)

3.6.3 (2018-11-16)

3.6.2 (2018-11-06)

3.6.1 (2018-10-13)

Bug Fixes

  • Allow clippy to run on stable rust (6cb00803)

3.6.0 (2018-10-07)

Features

  • Deprecates try in favor of attempt (a9c79321)
  • Adds attempt, a 2018-compatible alias for try (18edaec4)

3.5.3 (2018-10-06)

Features

  • Allow regex parsers to use regex-1.0 (77fe362c)
  • pub use unexpected_any (8b2ca559)

Bug Fixes

  • use unexpected_any inside then examples (f2018db5)

3.5.2 (2018-09-12)

Bug Fixes

  • Don't report previous errors from expected (0048c5ef)

3.5.1 (2018-08-13)

Bug Fixes

  • Add all errors of nested choice parsers (f2b8fbbf)

3.5.0 (2018-08-13)

Features

  • Add opaque! as convenience over the opaque parser (9855aa1f)
  • Add the factory parser (fdd38d46)

3.4.0 (2018-08-04)

Features

Bug Fixes

  • Make (many1(p), end) report more expected messages (9e26d38e)
  • Report more errors in the middle of sequence parsers (f9e404f6)
  • Report more expected information from nested sequence parsers (9aa1db92)
  • Use the message variant in from_str to work on no_std (edf5ff60)
  • Remove redundant Any bound on easy::Errors (16601046, closes #177)

3.3.6

  • Don't forget the state in any_send_partial_state (4e2eb928)

3.3.5 (2018-06-30)

Bug Fixes

  • Propagate the ParseMode in range::recognize (c330a737)

3.3.4 (2018-06-30)

  • fix: Forward the partial mode through the parser! macro correctly

3.3.3 (2018-06-29)

Bug fixes

  • Parse from the start in sequence parsers in first mode

3.3.1 (2018-06-01)

Bug Fixes

  • support resuming streams in TakeUntilRange (b54ff061)
  • reset stream on error in take_until_range (27449f21)
  • support multi-byte Items in take_until_range (4a690d65)

v3.3.0 (2018-05-19)

Features

Breaking Changes

  • Remove redundant state comparison in Iter (9d434c3f, breaks #)

Performance

  • Specialize uncons_while1 on all streams (c995ad61)
  • Unroll the loop for <[T]>::uncons_while (f593e85d)
  • Inline from/into for results (fff248e4)
  • Unroll take_while1 (279a4526)
  • Remove redundant state comparison in Iter (9d434c3f, breaks #)
  • Add uncons_while1 as a default method on RangeStream (5d154f15)

v3.2.0 (2018-04-24)

Features

v3.1.0 (2018-03-26)

Features

  • Allow the the num parsers to be used without RangeStream (b1cb0668)
  • Add the take_until parser (7b03b596)
  • Allow try parsers to be used with partial parsing (cb2da7ad)

v3.0.0 (2018-03-18)

3.0.0 is the final stabilization of all the changes made in the 3.x-alpha/beta releases. You can read more about these changes at https://marwes.github.io/2018/02/08/combine-3.html and https://www.reddit.com/r/rust/comments/6s792a/combine_250_and_300alpha1/

Features

  • Let single element tuples work as sequence and choice parsers (81e34d2d)

v3.0.0-beta.1 (2018-02-02)

Features

  • Encode parsers as resumable state machines 342fc47
  • Add the unexpected_any parser (979e0d7e, closes #126)
  • Don't have the error type be generic for uncons* (df3e84f0)
  • Add a alias which helps to refer to the StreamError type (95eb70cb)
  • Add memchr optimized take_until_byte parsers (30cc7d1d)
  • Add the then_partial parser (5d402f6b)
  • Don't require Clone for Stream (3fc0b540, breaks #)

Breaking Changes

  • Don't require Clone for Stream (3fc0b540, breaks #)

Bug Fixes

  • Allow parser! to be used within functions (916bb824)
  • Allow multiple unnamed public parsers to be in the same scope (c04e2247)
  • Return the correct distance for slices with larger than 1 byte items (6b3c661a)
  • Don't add extra expected errors when erroring in the middle of a sequence (44eac24d)

Performance

  • Avoid cloning input in satisfy (9aeaefa9)

v3.0.0-alpha.4 (2017-10-11)

Breaking Changes

  • Rename EasyStream -> Stream, ParsingError => ParseError ... (d2f4ab14, breaks #)
  • Make the RangeStreamOnce function generic over the returned error (818d8629, breaks #)
  • Re-export the type generated by parser! if it is public (61469f0a, breaks #)

Performance

  • Add inline annotations on error traits (c8b495b4)

Features

  • Rename EasyStream -> Stream, ParsingError => ParseError ... (d2f4ab14, breaks #)
  • Make the RangeStreamOnce function generic over the returned error (818d8629, breaks #)
  • Allow combine to be used in no_std environments (9fd310ac)
  • Re-export the type generated by parser! if it is public (61469f0a, breaks #)

v3.0.0-alpha.3 (2017-08-20)

  • Implement Copy for more types (e60395d6)

v3.0.0-alpha.1 (2017-08-07)

Features

  • Remove the old State type and Positioner trait (ae43f8ae, breaks #)
  • Teach the choice parser to take tuples (96da7ee0, breaks #)
  • Add the range_of parser (7e692086, closes #83, breaks #)
  • Add map_token and map_range methods to ParseError (2f92b296, closes #86)
  • Allow ParseError to be used without the StreamOnce constraint (520da8e8, breaks #)

Bug Fixes

  • Remove depreceated items (9107342a, breaks #)
  • Don't forward tuple parsers to frunk to prevent a performance loss (7e27c523)
  • Add the correct errors after sequencing has returned EmptyOk (54fecc62, closes #95)
  • Renamed SharedBufferedStream and BufferedStream to be less confusing (3add407e, breaks #)
  • Add From for Info (4cf8cff6)
  • Make the positions of slice streams harder to misuse (f50ab9e2, closes #104, breaks #)

Breaking Changes

  • Remove depreceated items (9107342a, breaks #)
  • Renamed SharedBufferedStream and BufferedStream to be less confusing (3add407e, breaks #)
  • Remove the old State type and Positioner trait (ae43f8ae, breaks #)
  • Teach the choice parser to take tuples (96da7ee0, breaks #)
  • Add the range_of parser (7e692086, closes #83, breaks #)
  • Make the positions of slice streams harder to misuse (f50ab9e2, closes #104, breaks #)
  • Allow ParseError to be used without the StreamOnce constraint (520da8e8, breaks #)

v2.5.0 (2017-08-07)

Features

  • Rename captures to captures_many and add a captures parser (9d301e42)
  • Add regex parsers (match_, find_many) (5ac12b98)
  • Add a macro to parse values directly into structs (1656a620)
  • add count_min_max and skip_count_min_max (8f3413a7)
  • Add the skip_count parser (15171d10)
  • Add the recognize parser (61c9b269)
  • Add a macro for declaring parsers (7fe1d9f7, closes #70)
  • Provide parsers for decoding big-endian and little-endian numbers (05ec0bc8)

Bug Fixes

  • Report and_then errors as if at the start of the parse (b71a78f1)
  • Return EmptyErr when the any parser fails (93208e9c, closes #99)
  • doc: regex find consumes input until the end of the first match (d1bbf1d4)

v2.3.0 (2017-02-22)

Performance

  • Don't call parse_stream in optional (a4bf28d2)

Features

  • Add the choice! macro (6f2cec69)
  • Add map functions for Error<> and Info<> ranges. (#86)
  • Add Parser::boxed (3af9c9b3)

2.1.0 (2016-10-30)

Features

  • Add a read adapter for the stream trait (a2a9f214)

2.0.0 (2016-10-19)

Features

  • Version 2.0.0 (80b24186)
  • Add the count parser (a7949f3a)
  • Add the Parser::by_ref method (15554d0c)
  • Add the one_of and none_of parsers (941b277c)
  • Add the position parser (d6c65f6d)
  • Add bytes_cmp and string_cmp (ee6b430d)
  • Add the tokens parser (886c4523)
  • Version 2.0.0-beta3 (55c59322)
  • Break out the error formatting into a separate function (b6ccb0c1)
  • Rename parse_state to parse_stream (b375df48)
  • Simplify the flat_map parser (08a91ce2)
  • Merge the ParserExt trait into Parser (26a84154)
  • Add the bytes parser (9c73c053)
  • Add parsers specialized on byte streams (01ba3759)
  • Make ctry usable outside the crate (f45740dd)
  • Add versions of parse_* which return an unpacked version of ParseResult (2bbd14ab)
  • Add the satisy_map parser (4d97d296)
  • Replace the And parser with the pair parser (b1f56113)
  • Remove reexport of the char module from the root module (e39dacb5)
  • Version 2.0.0-beta (5bdbf584)
  • Remove the buffered_stream feature (3fdbf217)
  • Version 1.3.0 (acea26cd)
  • Add the eof parser (6a89cbf2)
  • Stabilize RangeStream and all functions using it (d932375d)
  • Reexport Stream and StreamOnce from the crate root (2c2b3f5c)
  • Merge the HasPosition trait into StreamOnce (3bda4a16)
  • Add the StreamOnce trait (9ea0ed5d, breaks #)
  • Make Stream::uncons take &mut self (4ddc4257)
  • Separate the Position type and position method from Stream (9cfb9a89)
  • Version 1.2.1 (f737af27)
  • Move the position handling inside the Stream trait (f41f65e9)
  • range_stream: Implement RangeStream on State (f5679dc9)

Performance

  • Specialize and_then, then and flat_map (9dc7dc6b)
  • Specialize the tuple parser to avoid unnecessary branches (2b294f80)
  • Add inline annotations and more forwarding parse functions (0e5ee38e)
  • Avoid indirection in Skip and With (52d335ca)
  • Optimize Iter by simplifying the state machine (9631700a)
  • Speedup tuple parsers by simplifying the expanded code (5d86dcf2)
  • Avoid creating an error when take_while1 parses no input (9bad15c0)
  • Possibly improve performance of the RangeStream impl for &str (abb1de7f)

Bug Fixes

  • Rename the String parser to Str (d846bf0e)
  • Use five copies in the large http test anyway to match nom_benchmarks (eb089f5b)
  • Avoid storing the position in primitives::uncons_while (9912507a)
  • Calling uncons_range with the same size as is remaining should succeed (cce6214e)
  • Add Sync to to the Error::Other variant (22add3ec)
  • Fix positions of BufferedStream being for the next token (66eab92a)
  • Fix the position handling of BufferedStream (f21148b3)
  • Remove the Positioner bound from Stream::Token an Stream::Range (fba3f1e7)
  • buffered_stream: BufferedStream no longer emits the last token after EOF (6532884c)
  • travis:
    • Dont pass the test feature to travis (382a608d)
    • Add travis_wait so travis does not time out the beta builds (a3f0792a)

Breaking Changes

  • Add the StreamOnce trait (9ea0ed5d, breaks #)