Changelog History
Page 3
-
v3.2.1 Changes
October 27, 2017Thanks
- ๐ @ordian for
alt_complete
fixes - ๐ @friedm for documentation fixes
- @kali for improving error management
๐ Fixed
- there were cases where
alt_complete
could returnIncomplete
โ Added
- an
into_error_kind
method can be used to transform any error to a common value. This helps when the library is included multiple times as dependency with different feature sets
- ๐ @ordian for
-
v3.2.0 Changes
July 24, 2017Thanks
- ๐ @jedireza for documentation fixes
- @gmorenz for the
bytes
combinator - ๐ @meh for character combinator fixes for UTF-8
- ๐ @jethrogb for avoiding move issues in
separated_list
๐ Changed
- ๐ new layout for the main page of documentation
anychar
can now work on any input typelength_bytes
is now an alias forlength_data
๐ Fixed
one_of
,none_of
andchar
will now index correctly UTF-8 characters- the
compiler_error
macro is now correctly exported
โ Added
- ๐ the
bytes
combinator transforms a bit stream back to a byte slice for child parsers
-
v3.1.0 Changes
June 16, 2017Thanks
- @sdroege: implementing be_i24 and le_i24
- @Hywan: integrating faster substring search using memchr
- ๐ @nizox: fixing type issues in bit stream parsing
- ๐ @grissiom: documentation fixes
- @doomrobo: implementing separated_list_complete and separated_nonempty_list_complete
- @CWood1: fixing memchr integration in no_std
- @lu_zero: integrating the compiler_error crate
- @dtolnay: helping debug a type inference issue in map
๐ Changed
- memchr is used for substring search if possible
- ๐ if building on nightly, some common syntax errors will display a specific error message. If building no stable, display the documentation to activate those messages
count
no longer preallocates its vector
๐ Fixed
- ๐ better type inference in alt_complete
- ๐
alt
should now work with whitespace parsing map
should not make type inference errors anymore
โ Added
- be_i24 and le_i24, parsing big endian and little endian signed 24 bit integers
separated_list_complete
andseparated_nonempty_list_complete
will treat incomplete from sub parsers as error
-
v3.0.0 Changes
May 12, 2017Thanks
- ๐จ Chris Pick for some
Incomplete
related refactors - ๐ @dbrgn for documentation fixes
- @valarauca for adding
be_u24
- ๐ @ithinuel for usability fixes
- ๐ @evuez for README readability fixes and improvements to
IResult
- @s3bk for allowing non-
Copy
types as input - ๐ @keruspe for documentation fixes
- ๐ @0xd34d10cc for trait fixes on
InputIter
- @sdleffler for lifetime shenanigans on
named_args
- ๐ @chengsun for type inference fixes in
alt
- @iBelieve for adding str to no_std
- @Hywan for simplifying code in input traits
- ๐ @azerupi for extensive documentation of
alt
andalt_complete
๐ฅ Breaking Changes
escaped
,separated_list
andseparated_nonempty_list
can now returnIncomplete
when necessaryInputIter
does not requireAsChar
on itsItem
type anymore- ๐ the
core
feature that was putting nom inno_std
mode has been removed. There is now astd
feature, activated by default. If it is not activated, nom is inno_std
- in
verbose-errors
mode, the error list is now stored in aVec
instead of a box based linked list - ๐
chain!
has finally been removed
๐ Changed
- ๐ฏ
Endianness
now implementsDebug
,PartialEq
,Eq
,Clone
andCopy
- ๐ฏ custom input types can now be cloned if they're not
Copy
- the infamous 'Cannot infer type for E' error should happen less often now
str
is now available inno_std
mode
๐ Fixed
FileProducer
will be marked asEof
on full buffernamed_args!
now has lifetimes that cannot conflict with the lifetimes from other arguments
โ Added
- ๐
be_u24
: big endian 24 bit unsigned integer parsing IResult
now has aunwrap_or
method
- ๐จ Chris Pick for some
-
v2.2.1 Changes
April 03, 2017Thanks
- ๐ @Victor-Savu for formatting fixes in the README
- @chifflier for detecting and fixing integer overflows
- ๐ @utkarshkukreti for some performance improvements in benchmarks
๐ Changed
- ๐ when calculating how much data is needed in
IResult::Incomplete
, the addition could overflow (it is stored as a usize). This would apparently not result in any security vulnerability on release code
-
v2.2.0 Changes
March 20, 2017Thanks
- @seppo0010 for fixing
named_args
- 0๏ธโฃ @keruspe for implementing or() on
IResult
, adding the option of default cases inswitch!
, adding support forcargo-travis
- ๐ @timlyo for documentation fixes
- @JayKickliter for extending
hex_u32
- @1011X for fixing regex integration
- ๐ @Kerollmops for actually marking
chain!
as deprecated - ๐ @joliss for documentation fixes
- ๐ @utkarshkukreti for tests refactoring and performance improvement
- ๐ @tmccombs for documentation fixes
โ Added
IResult
gets anor()
methodtake_until1
,take_until_and_consume1
,take_till1!
andtake_till1_s!
require at least 1 character
๐ Changed
hex_u32
accepts uppercase digits as well- the character based combinators leverage the input traits
- ๐ the whitespace parsers now work on &str and other types
take_while1
returnsIncomplete
on empty input- 0๏ธโฃ
switch!
can now take a default case
๐ Fixed
named_args!
now importsIResult
directly- โฌ๏ธ the upgrade to regex 0.2 broke the regex combinators, they work now
- @seppo0010 for fixing
-
v2.1.0 Changes
January 27, 2017Thanks
- ๐ @nickbabcock for documentation fixes
- ๐ @derekdreery for documentation fixes
- ๐ @DirkyJerky for documentation fixes
- ๐ @saschagrunert for documentation fixes
- ๐ @lucab for documentation fixes
- ๐ @hyone for documentation fixes
- @tstorch for factoring
Slice
- @shepmaster for adding crate categories
- @antoyo for adding
named_args!
โ Added
- ๐
verify!
uses a first parser, then applies a function to check that its result satisfies some conditions - ๐
named_args!
creates a parser function that can accept other arguments along with the input - ๐
parse_to!
will use theparse
method fromFromStr
to parse a value. It will automatically translate the input to a string if necessary float
,float_s
,double
,double_s
can recognize floating point numbers in text
๐ Changed
escaped!
will now returnIncomplete
if needed- ๐
permutation!
supports up to 20 child parsers
-
v2.0.1 Changes
December 10, 2016๐ Bugfix release
โ Warning: there is a small breaking change,
add_error!
is renamed toadd_return_error!
. This was planned for the 2.0 release but was forgotten. This is a small change in a feature that not many people use, for a release that is not yet widely in use, so there will be no 3.0 release for that change.Thanks
- @nickbabcock for catching and fixing the
add_error!
mixup - ๐ @lucab for documentation fixes
- @jtdowney for noticing that
tag_no_case!
was not working at all for byte slices
๐ Fixed
add_error!
has been renamed toadd_return_error!
- the
not!
combinator now accepts functions tag_no_case!
is now working as accepted (before, it accepted everything)
- @nickbabcock for catching and fixing the
-
v2.0 Changes
November 25, 2016๐ The 2.0 release is one of the biggest yet. It was a good opportunity to clean up some badly named combinators and fix invalid behaviours.
Since this version introduces a few breaking changes, an upgrade documentation is available, detailing the steps to fix the most common migration issues. After testing on a set of 30 crates, most of them will build directly, a large part will just need to activate the "verbose-errors" compilation feature. The remaining fixes are documented.
๐ This version also adds a lot of interesting features, like the permutation combinator or whitespace separated formats support.
Thanks
- @lu-zero for license help
- ๐ @adamgreig for type inference fixes
- ๐ @keruspe for documentation and example fixes, for the
IResult => Result
conversion work, makingAsChar
's method more consistent, and addingmany_till!
- @jdeeny for implementing
Offset
on&str
- @vickenty for documentation fixes and his refactoring of
length_value!
andlength_bytes!
- ๐จ @overdrivenpotato for refactoring some combinators
- ๐ @taralx for documentation fixes
- ๐ @keeperofdakeys for fixing eol behaviour, writing documentation and adding
named_attr!
- ๐ @jturner314 for writing documentation
- @bozaro for fixing compilation errors
- @uniphil for adding a
crates.io
badge - ๐ @badboy for documentation fixes
- @jugglerchris for fixing
take_s!
- @AndyShiue for implementing
Error
andDisplay
onErrorKind
and detecting incorrect UTF-8 string indexing
โ Added
- 0๏ธโฃ the "simple" error management system does not accumulates errors when backtracking. This is a big perf gain, and is activated by default in nom 2.0
- nom can now work on any type that implement the traits defined in
src/traits.rs
:InputLength
,InputIter
,InputTake
,Compare
,FindToken
,FindSubstring
,Slice
- ๐ the documentation from Github's wiki has been moved to the
doc/
directory. They are markdown files that you can build with cargo-external-doc - ๐ whitespace separated format support: with the
ws!
combinator, you can automatically introduce whitespace parsers between all parsers and combinators - ๐ the
permutation!
combinator applies its child parsers in any order, as long as they all succeed once, and return a tuple of the results - ๐
do_parse!
is a simpler alternative tochain!
, which is now deprecated - you can now transform an
IResult
in astd::result::Result
- ๐
length_data!
parses a length, and returns a subslice of that length tag_no_case!
provides case independent comparison. It works nicely, without any allocation, for ASCII strings, but for UTF-8 strings, it defaults to an unsatisfying (and incorrect) comparison by lowercasing both strings- ๐
named_attr!
creates functions likenamed!
but can add attributes like documentation - ๐
many_till!
applies repeatedly its first child parser until the second succeeds
๐ Changed
- the "verbose" error management that was available in previous versions is now activated by the "verbose-errors" compilation feature
- ๐ code reorganization: most of the parsers were moved in separate files to make the source easier to navigate
- most of the combinators are now independent from the input type
- the
eof
function was replaced with theeof!
macro error!
andadd_error!
were replaced withreturn_error!
andadd_return_error!
to fix the name conflict with the log crate- the
offset()
method is now in theOffset
trait length_value!
has been renamed tolength_count!
. The newlength_value!
selects a slice and applies the second parser once on that sliceAsChar::is_0_to_9
is nowAsChar::is_dec_digit
- ๐ง the combinators with configurable endianness now take an enum instead of a boolean as parameter
๐ Fixed
- ๐ the
count!
,count_fixed!
andlength_*!
combinator calculate incomplete data needs correctly eol
,line_ending
andnot_line_ending
now have a consistent behaviour that works correctly with incomplete datatake_s!
didn't correctly handle the case when the slice is exactly the right length
-
v1.2.4 Changes
July 20, 2016Thanks
- ๐ @Phlosioneer for documentation fixes
- @sourrust for fixing offsets in
take_bits!
- @ChrisMacNaughton for the XFS crate
- @pwoolcoc for
rest_s
- @fitzgen for more
IResult
methods - @gtors for the negative lookahead feature
- ๐ @frk1 and @jeandudey for little endian float parsing
- @jethrogb for fixing input usage in
many1
- @acatton for beating me at nom golf :D
โ Added
- the
rest_s
method onIResult
returns the remaining&str
input unwrap_err
andunwrap_inc
methods onIResult
- ๐
not!
will peek at the input and returnDone
if the underlying parser returnedError
orIncomplete
, without consuming the input
-
le_f32
andle_f64
parse little endian floating point numbers (IEEE 754)๐ Fixed
- ๐ documentation fixes
take_bits!
is now more precisemany1
inccorectly used thelen
function instead ofinput_len
- ๐ the INI parser is simpler
- ๐
recognize!
had an earlyreturn
that is removed now