Skip to content

Update Rust crate chumsky to 0.12.0#5

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/chumsky-0.x
Open

Update Rust crate chumsky to 0.12.0#5
renovate[bot] wants to merge 1 commit intomainfrom
renovate/chumsky-0.x

Conversation

@renovate
Copy link

@renovate renovate bot commented Jul 12, 2024

This PR contains the following updates:

Package Type Update Change
chumsky dependencies minor 0.8.00.12.0

Release Notes

zesterer/chumsky (chumsky)

v0.12.0

Added
  • MapExtra::emit, which allows emitting secondary errors during mapping operations
  • InputRef::emit, which allows emitting secondary errors within custom parsers
  • labelled_with, which avoids the need to implement Clone for labels
  • Input::split_token_span, a convenience function for splitting (Token, Span) inputs so that chumsky can understand them
  • Input::split_spanned, which does the same as above, but for implementors of WrappingSpan
  • spanned, a combinator which automatically annotates a parser output with a span
  • Experimental:
    • IterParser::parse_iter, a way to turn an IterParser (like x.repeated()) into an iterator
    • Parser::debug, which provides access to various parser debugging utilities.
Changed
  • Made nested_in more flexible by allowing it to map between different input types instead of requiring the same input as the outer parser
Fixed
  • A prioritisation bug with nested_in

v0.11.2

Added
  • Implement Default, PartialOrd, and Ord for SimpleSpan
  • Implement PartialOrd and Ord for Rich

v0.11.1

Fixed
  • Patched compilation error that only appeared in release builds

v0.11.0

Added
  • The set(...) combinator, which may be used to conveniently parse a set of patterns, in any order
  • Support for non-associative infix operators are now supported by the .pratt(...) combinator
  • Parser::try_foldl, allowing folding operations to short-circuit in a manner similar to Parser::try_map
  • Parser::contextual, which allows a parser to be disabled or enabled in a context-sensitive manner
  • Implemented ValueInput for IterInput, which was previously missing
  • More types that implement the State trait:
    • RollbackState, which reverts parser state when a parser rewinds and may be used to, for example, count the number of times a pattern appears in the input
    • TruncateState, which truncates a vector when a parser rewinds, and may be used to implement an arena allocator for AST nodes
  • Implemented IterParser for a.then(b) when both a and b are both IterParsers that produce the same output type
Changed
  • Made lifetime bounds on recursive and ParserExtra more permissive
  • Improved support for grapheme parsing
  • Text parsers now report labels
  • Parser::filter now generates a DefaultExpected::SomethingElse label instead of nothing (this can be overridden with the .labelled(...) function)
  • Improved areas of documentation
  • Make whitespace parsers reject codepoints that are vulnerable to CVE-2021-42574
  • Maybe the select! parser more permissive, accepting any implementor of Input instead of requiring ValueInput too
Fixed
  • Many minor incorrect debug-only sanity checks have been fixed
  • Many minor span and error prioritisation behavioural problems have been fixed (most notably, Parser::try_map)
  • The .rewind() parser no longer rewinds any secondary error that were encountered
  • Accidental text::ascii::keyword lifetime regression

v0.10.1

Added
  • Implemented Container for VecDeque
  • New section covering recursion in the guide
Changed
  • Boxed types now have a default type parameter of extra::Default, like Parser and IterParser
  • The tutorial has been updated for 0.10 and has been moved to the guide
Fixed
  • Nonsense spans occasionally generated for non-existent tokens
  • Improved docs have been added for several items
  • Many minor documentation issues have been fixed

v0.10.0

Note: version 0.10 is a from-scratch rewrite of chumsky with innumerable small changes. To avoid this changelog being
longer than the compiled works of Douglas Adams, the following is a high-level overview of the major feature additions
and does not include small details.

Added
  • Support for zero-copy parsing (i.e: parser outputs that hold references to the parser input)
  • Support for parsing nested inputs like token trees
  • Support for parsing context-sensitive grammars such as Python-style indentation, Rust-style raw strings, and much
    more
  • Support for parsing by graphemes as well as unicode codepoints
  • Support for caching parsers independent of the lifetime of the parser
  • A new trait, IterParser, that allows expressing parsers that generate many outputs
  • Added the ability to collect iterable parsers into fixed-size arrays, along with a plethora of other container types
  • Support for manipulating shared state during parsing, elegantly allowing support for arena allocators, cstrees,
    interners, and much more
  • Support for a vast array of new input types: slices, strings, arrays, impl Readers, iterators, etc.
  • Experimental support for memoization, allowing chumsky to parse left-recursive grammars and reducing the
    computational complexity of parsing certain grammars
  • An extension API, allowing third-party crates to extend chumsky's capabilities and introduce new combinators
  • A pratt parser combinator, allowing for conveniently and simply creating expression parsers with precise operator
    precedence
  • A regex combinator, allowing the parsing of terms based on a specific regex pattern
  • Properly differentiated ASCII and Unicode text parsers

Removed

  • Parser::then_with has been removed in favour of the new context-sensitive combinators
Changed
  • Performance has radically improved
  • Error generation and handling is now significantly more flexible

v0.9.2

Fixed
  • Properly fixed skip_then_retry_until regression

v0.9.1

Fixed
  • Regression in skip_then_retry_until recovery strategy

v0.9.0

Added
  • A spill-stack feature that uses stacker to avoid stack overflow errors for deeply recursive parsers
  • The ability to access the token span when using select! like select! { |span| Token::Num(x) => (x, span) }
  • Added a skip_parser recovery strategy that allows you to implement your own recovery strategies in terms of other
    parsers. For example, .recover_with(skip_parser(take_until(just(';')))) skips tokens until after the next semicolon
  • A not combinator that consumes a single token if it is not the start of a given pattern. For example,
    just("\\n").or(just('"')).not() matches any char that is not either the final quote of a string, and is not the
    start of a newline escape sequence
  • A semantic_indentation parser for parsing indentation-sensitive languages. Note that this is likely to be
    deprecated/removed in the future in favour of a more powerful solution
  • #[must_use] attribute for parsers to ensure that they're not accidentally created without being used
  • Option<Vec<T>> and Vec<Option<T>> now implement Chain<T> and Option<String> implements Chain<char>
  • choice now supports both arrays and vectors of parsers in addition to tuples
  • The Simple error type now implements Eq
Changed
  • text::whitespace returns a Repeated instead of an impl Parser, allowing you to call methods like at_least and
    exactly on it.
  • Improved no_std support
  • Improved examples and documentation
  • Use zero-width spans for EoI by default
  • Don't allow defining a recursive parser more than once
  • Various minor bug fixes
  • Improved Display implementations for various built-in error types and SimpleReason
  • Use an OrderedContainer trait to avoid unexpected behaviour for unordered containers in combination with just
Fixed
  • Made several parsers (todo, unwrapped, etc.) more useful by reporting the parser's location on panic
  • Boxing a parser that is already boxed just gives you the original parser to avoid double indirection
  • Improved compilation speeds

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from 5a6dec8 to b01fc25 Compare March 23, 2025 07:05
@renovate renovate bot changed the title Update Rust crate chumsky to 0.9.0 Update Rust crate chumsky to 0.10.0 Mar 23, 2025
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from b01fc25 to e33ba47 Compare August 11, 2025 20:14
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from e33ba47 to e4578d5 Compare September 14, 2025 15:48
@renovate renovate bot changed the title Update Rust crate chumsky to 0.10.0 Update Rust crate chumsky to 0.11.0 Sep 14, 2025
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from e4578d5 to bfcbe55 Compare September 26, 2025 04:14
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from bfcbe55 to 88a0880 Compare November 8, 2025 15:49
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch 2 times, most recently from c0ede3c to 87ed75f Compare December 16, 2025 12:12
@renovate renovate bot changed the title Update Rust crate chumsky to 0.11.0 Update Rust crate chumsky to 0.12.0 Dec 16, 2025
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from 87ed75f to 71de2be Compare December 31, 2025 23:55
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from 71de2be to 73058da Compare February 3, 2026 23:05
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from 73058da to ce4e510 Compare February 13, 2026 16:06
@renovate renovate bot force-pushed the renovate/chumsky-0.x branch from ce4e510 to 745e5ce Compare March 1, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants