All Versions
16
Latest Version
Avg Release Cycle
94 days
Latest Release
-

Changelog History
Page 1

  • v3.2.0 Changes

    โž• Added

    • Four new combinators: ManyThen, AtLeastOnceThen, SkipManyThen, and SkipAtLeastOnceThen
      • These are versions of Until, AtLeastOnceUntil, SkipUntil, and SkipAtLeastOnceUntil which return the terminator.
      • Thanks to @chyyran and @atrauzzi, who asked for this in #121

    ๐Ÿ”„ Changed

    • ๐Ÿ‘Œ Improved documentation for ExpressionParser, now including an example.
      • Thanks to @hswami, who asked for this in #113
    • โœ‚ Removed some Nuget dependencies which are no longer required (since they are part of .NET 5).
  • v3.1.0 Changes

    โž• Added

    • ๐Ÿ“œ A pair of parsers for enum values, Enum and CIEnum. Thanks @RomanSoloweow!
  • v3.0.0 Changes

    โœ‚ Removed

    • โœ‚ Removed support for .NET 4 and .NET Core 3.1. Pidgin is now a .NET 5 library.

    โž• Added

    • ๐Ÿ“œ Published the (previously internal) TokenStream API. You can now write parsers which consume custom input streams.
    • ๐Ÿ‘Œ Support for resumable parsing, through the ResumableTokenStream class.
    • An experimental API for writing your own parsers by subclassing Parser.

    ๐Ÿ”„ Changed

    • ๐Ÿ“œ Parser.Real is now a property and not a method.
    • โšก๏ธ A new design for computing source positions. posCalculator now returns a SourcePosDelta struct representing the amount of text covered by a token, rather than updating the current source position in place.
      • Performance improvements in the code which computes source positions.
    • ๐Ÿ‘€ The Parse methods in ParseExtensions now take an IConfiguration object as an optional parameter (instead of a posCalculator func).
      • If you were using posCalculator, you can instead subclass DefaultConfiguration and override the PosCalculator property.
    • ๐ŸŽ Performance improvements across the board thanks to a new Span-based implementation.
    • ๐ŸŽ Performance improvements in SkipWhitespaces.
    • ๐Ÿ‘ท A new CI build system based on GitHub Actions.
  • v2.5.0 Changes

    ๐Ÿ”„ Changed

    • Pidgin's assembly is now strong named.
    • ๐ŸŽ Performance improvements to CurrentPos.
    • Internal simplifications to the error handling machinery.
    • Pidgin's PDBs are now distributed through nuget.org as a snupkg (not from smbsrc.net).
  • v2.4.0 Changes

    June 02, 2020

    โž• Added

    • CurrentOffset, which returns the number of tokens consumed
    • ๐Ÿ“œ A new overload of Rec: Func<Parser<TToken, T> Rec(Func<Parser<TToken, T>, Parser<TToken, T>>)
    • Slice, a synonym of MapWithInput

    ๐Ÿ›  Fixed

    • ๐Ÿ“œ The Real parser now uses the invariant culture. Thank you @SigridAndersen for the contribution!
  • v2.3.0 Changes

    February 27, 2020

    โž• Added

    • Nullability checks

    ๐Ÿ›  Fixed

    • A bug in HexNum. Thank you @comaid for the contribution!
    • Some ArrayPool leaks.
    • A bug causing Sequence to fail when its type argument was IComparable but not IEquatable

    ๐Ÿ”„ Changed

    • ๐ŸŽ Significant performance improvements when parsing from a non-chunked in-memory source such as a string or an array.
    • SkipWhitespaces has been rewritten --- it should now run much faster

    โœ‚ Removed

    • ๐Ÿ‘Œ Support for netstandard1.3
  • v2.2.0 Changes

    September 26, 2019

    โž• Added

    • ๐Ÿ“œ MapWithInput, giving access to a Span containing the input tokens which were matched by the parser.
    • An infix version of Map (synonym of Select).
    • ๐Ÿ“œ Real, a parser for floating point values in the format +1.23e4

    ๐Ÿ”„ Changed

    • ๐ŸŽ Under-the-hood performance improvements to the way SourcePos is handled
    • A faster implementation of CIString
  • v2.1.0 Changes

    February 15, 2019

    โž• Added

    • ๐Ÿ— Overloads of ExpressionParser.Build to make recursive grammars more convenient
  • v2.0.1 Changes

    February 08, 2019

    ๐Ÿ›  Fixed

    • ๐Ÿ“œ An ArrayPool leak when certain parsers failed
  • v2.0.0 Changes

    January 22, 2019

    โž• Added

    • ๐Ÿ“œ A ParserExtensions.Parse overload which accepts a ReadOnlySpan.
    • A compile target for netstandard2.0. This should simplify installation into .NET Framework projects.
    • ๐ŸŽ Performance improvements across the board

    ๐Ÿ”„ Changed

    • Error handling was rewritten.
      • ParseError is now a class and not a struct.
      • Fewer items are reported in Expected.
    • ๐Ÿ“œ Parser<TToken>.End is now a property and not a method.
    • Result<TToken, T> is now a class and not a struct.
    • ๐Ÿ“œ When parsing from streaming inputs like Stream or TextReader, the stream will now usually advance beyond the last character consumed by the parser

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed an internal potential memory leak due to the use of pooled memory