CHANGELOG.md (4045B)
1 # Changelog for NimbleParsec 2 3 ## v1.2.3 (2022-02-28) 4 5 ### Enhancements 6 7 * Allow `:export_combinator` in `defparsec` 8 9 ## v1.2.2 (2022-02-12) 10 11 ### Enhancements 12 13 * Allow `rest` to be returned from post_traverse/pre_traverse 14 15 ## v1.2.1 (2022-01-26) 16 17 ### Bug fixes 18 19 * Improve typespecs 20 21 ## v1.2.0 (2021-11-07) 22 23 ### Enhancements 24 25 * Add generator support to `NimbleParsec`: it now generates code that matches a combinator 26 27 ### Bug fixes 28 29 * Fix using `eventually` with constructs that can accumulate 30 * Fix lookahead combinators running in reverse order 31 * Raise on invalid `min` for integer 32 33 ## v1.1.0 (2020-10-02) 34 35 ### Enhancements 36 37 * Add `defcombinator` and support for remote `parsec`. This allows larger parsers to be broken over multiple modules to speed up compilation by leveraging parallelism. 38 39 ## v1.0.0 (2020-09-25) 40 41 ### Enhancements 42 43 * Allow `byte_offset` to be given to `:line` 44 45 ## v0.6.0 (2020-05-25) 46 47 NimbleParsec v0.6.0 requires Elixir v1.6+. 48 49 ### Bug fixes 50 51 * Avoid unused variable warnings 52 53 ## v0.5.3 (2019-12-11) 54 55 ### Enhancements 56 57 * Add `eventually/2` combinator 58 59 ## v0.5.2 (2019-11-10) 60 61 ### Enhancements 62 63 * Optimize `repeat` with initial `lookahead` 64 * Add `@spec` to `parsec/2` 65 66 ## v0.5.1 (2019-08-04) 67 68 ### Enhancements 69 70 * Remove dialyzer warnings from emitted code 71 * Optimize lookahead with choice 72 * Support min: 0 on utf8_string/ascii_string 73 * Remove compiler warnings in code generated by `mix nimble_parsec.compile` 74 * Add `@spec` to combinators 75 76 ## v0.5.0 (2018-12-12) 77 78 ### Enhancements 79 80 * Introduce `pre_traverse/3` 81 * Introduce `lookahead/2` and `lookahead_not/2` which accepts combinators 82 * Introduce `eos/1` (end of string combinator) 83 84 ### Backwards incompatible changes 85 86 * Deprecate `traverse/3` in favor of `post_traverse/3` 87 * `repeat_until/3` has been removed in favor of `repeat/2` with `lookahead_not/2` (see `repeat_while/3` docs for an example) 88 * `lookahead/2` with a call has been removed as it can be easily achieved with a `post_traverse/3` 89 90 ## v0.4.0 (2018-08-10) 91 92 ### Enhancements 93 94 * Add `defcombinatorp` and clarify the role of `defparsecp` 95 96 ## v0.3.2 (2018-06-02) 97 98 ### Bug fixes 99 100 * Fix compilation error for certain combinations of ascii_string/utf8_string + traverse 101 * Respect the `label` construct when wrapping a `choice` 102 103 ## v0.3.1 (2018-04-10) 104 105 ### Bug fixes 106 107 * Avoid exponential compilation time when line break is unknown 108 109 ## v0.3.0 (2018-04-08) 110 111 ### Enhancements 112 113 * Add `unwrap`, `tag` and `unwrap_and_tag` 114 * Add `nimble_parsec.compile` to compile parsers without a NimbleParsec dependency 115 116 ## v0.2.2 (2018-03-08) 117 118 ### Bug fix 119 120 * Ensure multiple runtime traversals compose 121 122 ## v0.2.1 (2018-03-04) 123 124 ### Bug fix 125 126 * Do not duplicate entries in integer/ascii_string/utf8_string 127 128 ## v0.2.0 (2018-03-04) 129 130 ### Enhancements 131 132 * Support parser combinator contexts and return them in ok/error tuples 133 * Add `ascii_string/3` and `utf_string/3` combinators 134 * Add `lookahead/2` combinator 135 * Rename `literal/2` to `string/2` 136 * Add `line/2` and `byte_offset/2` combinators 137 * The MFA given to `repeat_while/3` now receives the accumulator, context, line, and byte_offset values and must return `{:cont, context} | {:halt, context}` 138 * The MFA given to `quoted_repeat_while/3` now receives the accumulator, context, line, and byte_offset values and must return `{:cont, context} | {:halt, context}` 139 * The MFA given to `traverse/3` now receives the rest, accumulator, context, line, and byte_offset values and must return `{acc, context} | {:error, reason}` 140 * The MFA given to `quoted_traverse/3` now receives the ASTs for the rest, accumulator, context, line, and byte_offset and must return `{acc, context} | {:error, reason}` 141 * Instead of `line` as a positive integer, we now track `{line, line_offset}` where `line` is the same as before and `line_offset` is the byte offset after the new line 142 * Instead of `column` as a positive integer, we now track `byte_offset` as a non-negative integer 143 144 ## v0.1.0 (2018-03-02) 145 146 * First release.