Changelog History
Page 1
-
v0.3.1 Changes
September 06, 2016โ Added
- ๐
combinators::either
: Likeor
but allows different result types from the parsers.
๐ Changes
- Chomp is now licensed under both MIT and Apache-2.0 licenses.
๐ Bugfixes
- ๐ Feature
tendril
now compiles again.
- ๐
-
v0.3.0 Changes
September 01, 2016โ Added
๐
prelude
module containing basic types, parsers and combinators.๐ฆ This is supposed to be the equivalent of Attoparsec's main package.
๐
run_parser
which executes a parser on any givenInput
type.buffer::InputBuf
which contains a slice and an incomplete flag, much as the oldInput
struct.Input<Token=T, Buffer=&[T]>
implementation for&[T]
whereT: Copy + PartialEq
.Input<Token=char, Buffer=&str>
implementation for&str
.types::Buffer
trait which is implemented for all buffers providing common logic to perform the
๐ final parsing on a buffer without knowing the exact buffer implementation.types::U8Input
trait alias forInput<Token=u8>
.primitives::Primitives
trait providing access to the primitive methods of theInput
trait.๐ This is used for building fundamental parsers/combinators.
๐
ParseResult::inspect
allowing code to observe the success value.types::numbering
module for creating position-awareInput
types.๐
parsers::skip_while
using an efficient way of skipping data if provided, otherwise falls back
on usingtake_while
and throws the result away.๐
chomp::Error
now includes a backtrace intest
anddebug
build profiles thanks to the
debugtrace crate. Backtraces can also be activated
permanently using thebacktrace
feature but this will incur the significant cost of allocating
๐ backtraces even in therelease
profile.๐ Feature
noop_error
provides a zero-sized error type for the cases when the expected token is
๐ unimportant. Provides a small performance boost.๐ Changes
Backwards-incompatible:
Input
is now a trait with associated typesToken
andBuffer
.๐ This removes all incomplete logic from the parsers themselves and moves it into the
InputBuf
๐ type. ThisInputBuf
is used if a partial buffer is in memory. It also allows the parsers to
operate directly on slices or use more effective means of storing buffers depending on the
Input
implementation.โฌ๏ธ To upgrade you replace the previous concrete
Input
type with a generic, use its associated
๐ type if required, and refer to theBuffer
associated type to allow for zero-copy parsing::-fn http_version(i: Input<u8>) -> U8Result<&[u8]>; +fn http_version<I: Input<Token=u8>>(i: I) -> SimpleResult<I, I::Buffer>;
The associated types can be restricted if requried:
fn request<I: U8Input>(i: I) -> SimpleResult<I, (Request<I::Buffer>, Vec<Header<I::Buffer>>)> where I::Buffer: ::std::ops::Deref<Target=[u8]>;
Backwards-incompatible: Moved types into a more logical module structure, prelude now
exists as aprelude
module.Backwards-incompatible:
chomp::Error
is no longer an enum, this is to facillitate the
๐ support of backtraces while keeping code compatible between the different build profiles.๐ Use
chomp::Error::expected_token
to determine if a specific token was expected.๐ Feature
verbose_error
is now defaultโ Removed
Input::incomplete
Input::new
- ๐
ParseResult::expect
- ๐
ParseResult::unwrap_err
- ๐
ParseResult::unwrap
buffer::IntoStream
- ๐ฏ
primitives::InputClone
primitives::State
๐ Bugfixes
- ๐
combinators::bounded
now have a defined behavior when aRange<usize>
hasstart == end
: They will parse exactlystart
times. This also fixed a few overflows and unreachable code being reachable. - ๐
combinators::bounded::many_till
got fixed for an overflow happening when0: usize
was used to limit the number of iterations.
-
v0.2.6 Changes
July 07, 2016๐ Bugfixes
- Macro expansion is now again compatible with nightly.
- ๐ Now uses
std
feature of conv dependency, fixing build breakage on rustc 1.2.0.
-
v0.2.5 Changes
March 08, 2016โ Added
combinators::bounded::sep_by
: Bounded version ofcombinators::sep_by
andcombinators::sep_by1
.
๐ Changes
- ๐ Improved performance of combinators using iterators.
- โก๏ธ Updated bitflags dependency
-
v0.2.4 Changes
January 25, 2016๐ Changes
- Backwards-incompatible:
combinators::option
will now return the default value if the parser reports incomplete and the input is finite.
- Backwards-incompatible:
-
v0.2.3 Changes
January 21, 2016โ Added
- ๐
buffer::StreamError
now implementsFrom<ParseError>
๐ Changes
- Backwards-incompatible:
combinators::or
will now retry with the second parser if the first parser reports incomplete and the input is finite. ๐ Improvements to
parse!
macro to make it more general and to make it easier to write simple parsers as one line. Completely updated grammar and reimplemented the macro to include:- Alternation operator (
<|>
) - Skip operator (
<*
) - Then operator (
>>
) ret
anderr
can now be used inline- Backwards-incompatible:
;
is no longer allowed to terminate aparse!
block.
- Alternation operator (
- ๐
-
v0.2.2 Changes
January 18, 2016๐ Changes
- ๐
Input::ret
,ParseResult::bind
andParseResult::then
no longer have type parameter defaults. This change only affects people on nightly who havetype-parameter-defaults
enabled. See Rust pull request #30724.
- ๐
-
v0.2.1 Changes
December 20, 2015๐ Changes
buffer::GrowingBuffer
andbuffer::data_source::ReadDataSource
now deriveDebug
.- ๐ Rustdoc for public items previously lacking any documentation.
-
v0.2.0 Changes
December 16, 2015โ Added
- ๐
parse_only
: Runs a given parser on a finite input. - ๐
combinators::bounded::many
: combinator applying a parser within a range bound, storing the data in aT: FromIterator
. - ๐
combinators::bounded::skip_many
: combinator applying a parser within a range bound, throwing away all produced data. - ๐
combinators::bounded::many_till
: combinator applying a parser within a range bound until a second parser succeeds. If the second parser does not succeed within the given range the parsing will fail. The matches from the first parser will be stored in aT: FromIterator
.
๐ Changes
count
,many1
,sep_by1
now properly usesIterator::size_hint
- Backwards-incompatible:
many
,many1
,sep_by
,sep_by1
,skip_many
,skip_many1
are no longer considered incomplete if they end with a partial match as long as they have managed to satisfy the minimum count of matches. - Backwards-incompatible:
buffer::ParseError
has been renamed tobuffer::StreamError
to not conflict with the simpleParseError
. - Slightly improved performance for
count
,many
,many1
,sep_by
,sep_by1
.
๐ Deprecated
Input::new
Use
parse_only
orbuffer::SliceStream
to parse a slice instead. For any advanced usage create anInput
usingprimitives::input::new
.- ๐
ParseResult::unwrap
,ParseResult::unwrap_err
,ParseResult::expect
Use
parse_only
or thebuffer::Stream
implementations to obtain aResult
instead of acting on theParseResult
directly. - ๐
-
v0.1.2 Changes
December 02, 2015โ Added
ascii::digit
ascii::is_end_of_line
ascii::is_horizontal_space
ascii::signed
ascii::skip_whitespace
combinators::look_ahead
combinators::many_till
combinators::matched_by
combinators::sep_by1
combinators::sep_by
combinators::skip_many1
- ๐
parsers::peek_next
- ๐
parsers::run_scanner
- ๐
parsers::satisfy_with