• feat: NCS-31 FastParse FEN (#22)

    NowChess released this 2026-04-08 09:32:57 +02:00 | 133 commits to main since this release

    Summary

    • Added fastparse_3:3.0.2 dependency to modules/io
    • Implemented FenParserFastParse as a second alternative FEN parser using FastParse, with the same public API as
      FenParser and FenParserCombinators
    • Parsers are built bottom-up using (using P[Any]) Scala 3 syntax with NoWhitespace.* to prevent implicit whitespace
      skipping; rank sum validation uses Pass/Fail inside .flatMap
    • Added FenParserFastParseTest mirroring FenParserCombinatorsTest to prove behavioural equivalence across all three
      implementations

    Test plan

    • All existing tests pass — FenParser, FenParserCombinators, and all other modules untouched
    • FenParserFastParseTest covers all cases: valid FEN, invalid color, invalid castling, invalid board shapes, en
      passant, rank overflow, round-trip via FenExporter
    • All parser logic branches genuinely covered — known scoverage gap documented in docs/unresolved.md (FastParse inline
      macro generates synthetic proxy methods that scoverage instruments but that never execute at runtime)

    Co-authored-by: LQ63 lkhermann@web.de
    Reviewed-on: #22
    Reviewed-by: Janis janis-e@gmx.de
    Co-authored-by: Leon Hermann lq@blackhole.local
    Co-committed-by: Leon Hermann lq@blackhole.local

    Downloads