4.7 KiB
4.7 KiB
Changelog for NimbleParsec
v1.4.2 (2025-01-21)
Enhancements
- Remove more warnings on Elixir v1.18+
v1.4.1 (2025-01-15)
Enhancements
- Remove warnings on Elixir v1.18+
v1.4.0 (2023-11-08)
Enhancements
- Remove warnings and require Elixir v1.12
v1.3.1 (2023-04-30)
Bug fixes
- Make error messages consistent across Elixir versions
- Ensure
integer(max: ...)also sets a minimum of 1 - Do not lose context on
repeat_while
v1.3.0 (2023-03-27)
Deprecations
- Deprecate returning a
{acc, context}fromquoted_post_traverseandquoted_pre_traverse. Return{rest, acc, context}instead.
Bug fixes
- Avoid compile warnings with negative lookahead
- Fix clause warning for integer combinator
v1.2.3 (2022-02-28)
Enhancements
- Allow
:export_combinatorindefparsec
v1.2.2 (2022-02-12)
Enhancements
- Allow
restto be returned from post_traverse/pre_traverse
v1.2.1 (2022-01-26)
Bug fixes
- Improve typespecs
v1.2.0 (2021-11-07)
Enhancements
- Add generator support to
NimbleParsec: it now generates code that matches a combinator
Bug fixes
- Fix using
eventuallywith constructs that can accumulate - Fix lookahead combinators running in reverse order
- Raise on invalid
minfor integer
v1.1.0 (2020-10-02)
Enhancements
- Add
defcombinatorand support for remoteparsec. This allows larger parsers to be broken over multiple modules to speed up compilation by leveraging parallelism.
v1.0.0 (2020-09-25)
Enhancements
- Allow
byte_offsetto be given to:line
v0.6.0 (2020-05-25)
NimbleParsec v0.6.0 requires Elixir v1.6+.
Bug fixes
- Avoid unused variable warnings
v0.5.3 (2019-12-11)
Enhancements
- Add
eventually/2combinator
v0.5.2 (2019-11-10)
Enhancements
- Optimize
repeatwith initiallookahead - Add
@spectoparsec/2
v0.5.1 (2019-08-04)
Enhancements
- Remove dialyzer warnings from emitted code
- Optimize lookahead with choice
- Support min: 0 on utf8_string/ascii_string
- Remove compiler warnings in code generated by
mix nimble_parsec.compile - Add
@specto combinators
v0.5.0 (2018-12-12)
Enhancements
- Introduce
pre_traverse/3 - Introduce
lookahead/2andlookahead_not/2which accepts combinators - Introduce
eos/1(end of string combinator)
Backwards incompatible changes
- Deprecate
traverse/3in favor ofpost_traverse/3 repeat_until/3has been removed in favor ofrepeat/2withlookahead_not/2(seerepeat_while/3docs for an example)lookahead/2with a call has been removed as it can be easily achieved with apost_traverse/3
v0.4.0 (2018-08-10)
Enhancements
- Add
defcombinatorpand clarify the role ofdefparsecp
v0.3.2 (2018-06-02)
Bug fixes
- Fix compilation error for certain combinations of ascii_string/utf8_string + traverse
- Respect the
labelconstruct when wrapping achoice
v0.3.1 (2018-04-10)
Bug fixes
- Avoid exponential compilation time when line break is unknown
v0.3.0 (2018-04-08)
Enhancements
- Add
unwrap,tagandunwrap_and_tag - Add
nimble_parsec.compileto compile parsers without a NimbleParsec dependency
v0.2.2 (2018-03-08)
Bug fix
- Ensure multiple runtime traversals compose
v0.2.1 (2018-03-04)
Bug fix
- Do not duplicate entries in integer/ascii_string/utf8_string
v0.2.0 (2018-03-04)
Enhancements
- Support parser combinator contexts and return them in ok/error tuples
- Add
ascii_string/3andutf_string/3combinators - Add
lookahead/2combinator - Rename
literal/2tostring/2 - Add
line/2andbyte_offset/2combinators - The MFA given to
repeat_while/3now receives the accumulator, context, line, and byte_offset values and must return{:cont, context} | {:halt, context} - The MFA given to
quoted_repeat_while/3now receives the accumulator, context, line, and byte_offset values and must return{:cont, context} | {:halt, context} - The MFA given to
traverse/3now receives the rest, accumulator, context, line, and byte_offset values and must return{acc, context} | {:error, reason} - The MFA given to
quoted_traverse/3now receives the ASTs for the rest, accumulator, context, line, and byte_offset and must return{acc, context} | {:error, reason} - Instead of
lineas a positive integer, we now track{line, line_offset}wherelineis the same as before andline_offsetis the byte offset after the new line - Instead of
columnas a positive integer, we now trackbyte_offsetas a non-negative integer
v0.1.0 (2018-03-02)
- First release.